The industry default has swung back toward "stay monolithic longer than you think you should." Microservices solve a real problem - independent scaling and deployment for teams that have outgrown a shared codebase - but they add real operational cost: distributed tracing, network reliability, and cross-service data consistency all become your problem on day one.

Our rule of thumb: split a service out when a specific piece of your system has a genuinely different scaling profile, deployment cadence, or ownership boundary than the rest - not on a schedule, and not because it’s the current trend. A well-organized modular monolith will outperform a poorly-decomposed microservices architecture on almost every metric that matters, including how fast you can ship.