To clarify this tweet, consider “monolithic architecture” and “microservices architecture” to be a spectrum of deployment patterns, not code organization patterns. That is, Elasticsearch, as a codebase, is very modular. But its deployment is monolithic.
This spectrum is similar to the Linux vs GNU Hurd debate of the 90s. That is, do your modules map to independent processes, communicating via IPC (Hurd)? Or do they simply map to independent functions & data structures, communicating via shared memory (Linux)?
In the case of Elasticsearch, it is a large, modular codebase with a monolithic build/test/deploy architecture. And, in this author’s view, and mine, that is a good thing, and helps minimize the debug/release cycle of an otherwise massive and complex codebase.
I guess he’s right, but I’m not sure why this is so terrible. Except for points 5 and 6, his list applies to my simple ballistic calculator as well. I mean isn’t one of the great things about ElasticSearch is that is so easy download, setup, and cluster?
I felt like everything about this discussion was confusing, but the author clarified he thought it was a positive characterization: https://news.ycombinator.com/item?id=20913261.
I don’t get the read that it’s terrible/bad/negative at all, reading these tweets. Maybe people just anticipate that calling something monolithic is automatically bad?
Yeah, if your feeds/reading/community has a lot of the consulting world in it, “Monolithic” means “really bad, just terrible, and you should spend thousands of consultant hours replacing it with something that requires four times as many staff to support”.
Everything is monolithic until you split up code based on functionality.