Why Segment Went Back to a Monolith
I see quite a few people defending microservices; the org is the problem, they must not have written the software correctly, etc. Most org structures are not great. Most software is not great. If you expect the exception to be the rule you&#x27;re setting yourself up for a career full of disappointment.<p>Microservices are a modern re-branding of service-oriented architecture, but &#x27;microservices&#x27; sounds cuter and less like it belongs in Java-land, and there&#x27;s some theoretical idea that splitting your app into even smaller pieces will somehow make the whole thing better.<p>SOA&#x2F;microservices solves a few problems and introduces a great many. The original SOA proponents were pretty explicit about this. Beware! There be dragons here! But one of the main pieces of prescriptive advice from domain driven design is helpful for splitting into distributed services: split along domain lines with minimum inter-service dependencies. Payments is an obvious one. Microservices seems to buck much of this advice in favor for a blissfully ignorant principle of &quot;small&quot; or &quot;isolated&quot;. Good luck isolating something that is not meant to be isolated.<p>Scaling software is hard. Scaling teams is harder. Trying to scale teams by scaling&#x2F;distributing software is an understandable goal but extremely hard to pull off because of additional complexities and costs you incur in doing so. Dev gets harder, deployment&#x2F;ops becomes harder, testing becomes harder. Cross-team communication, documentation, API publishing and adherence goes from being very low impact within an org to suddenly being critically important.<p>To do SOA&#x2F;microservices effectively you need complete organizational buy-in, and you have to commit completely to developing tooling and solving all the associated problems in moving to a services approach. Often, it&#x27;s easier to just put it all back together, organize the code in such a way to minimize merge conflicts and wait for the ungodly slow test suite to run in CI. There are good reasons you rarely hear SOA&#x2F;microservices success stories outside of enormous companies (Netflix, Facebook, Google, Amazing, etc). Doing this stuff takes an enormous investment and commitment from the entire organization, and there are just lower friction ways to skin this cat if you don&#x27;t operate at mega web scale.<p>Growing a monolith is hard. Growing a microservices&#x2F;SOA architecture is also very hard. Growing is hard.