The pendulum has swung back toward the monolith, but not the spaghetti monolith of years past. The new shape is the modular monolith: one deployable, many clear boundaries inside.
Boundaries Without Network Calls
Most of the benefit of microservices comes from clear ownership of code, not from running it in separate processes. Module boundaries enforced by code reviews and linters can deliver the same discipline at a fraction of the cost.
Start With the Seams
Identify the natural fracture lines in your codebase: domains that change together, data that changes together. Codify those boundaries first.
Split When You Must, Not Before
Pull a module into its own service only when its scaling, deployment, or team needs diverge from the rest. Otherwise, keep it close.
Conclusion
Modular monoliths give you most of the benefits of distributed systems with most of the simplicity of a single deploy. For most teams, that is the right place to live.
