We should stop talking about monolith vs. microservice and instead have a more nuanced debate about right-sized services.
I think there’s alot of good wisdom and perspective in this article, but man he has some weird takes, lol… e.g.:
A microservices application is just a monolith, but with the number of services dialed up and the sizes of the services dialed down.
Like… There’s a charitable interpretation, I guess, but that’s such an odd way to put it.
I’ve heard it much better described as a “distributed monolith”, which makes complete sense to me. It’s what you get when you “break up” a monolith into “services”, but the spaghetti is still there, it’s just distributed across services now. You have to actually eliminate tight coupling, define the correct boundaries, and vigilantly respect them. All of which should happen from within the monolith first, ideally, where you still have the massive luxury of one codebase to deal with as you make the huge refactors necessary before completely decoupling into services. Even better, do this required prerequisite work and discover that your monolith is actually… fine.
Yeah…I don’t think he was talking about “distributed monolith” in that instance, but he does talk about it in the article. It’s weird, cause he obviously knows why it’s an antipattern, and why microservices are a categorically different thing, but then says stuff like that, with what I can only assume is a straight face.
I think maybe he’s trying to bolster his point that “it’s not a binary distinction, and you’re trying to achieve the same things with either architecture,” but you gotta be careful to not accidentally say “mix and match, anything goes!” And IMO he’s not that careful, lol.
My test is always “What is my hypothetical simple-but-pushy CTO going to latch onto and how annoying would that be for me?”