Today I learned that the strongest opinion in software architecture is simple: most scalable web apps should start as a well-modularized monolith, not a distributed system. If you expect rapid growth, your first goal is a clean module boundary and a deployment model the team understands. Premature microservices add network latency, distributed transactions, and operational pain before you’ve even proven the bottleneck.
When scaling becomes necessary, scale the simplest layer first. Add a load balancer, cache hot reads, use database read replicas, and move slow work into queues. Only split services when you have real team autonomy or scaling needs that a modular monolith cannot handle. Architecture should reduce risk, not create it.
The real lesson: scalability is a quality, not a diagram. Measure the bottleneck, then apply the smallest architectural change that fixes it. Start boring, scale deliberately.
Top comments (0)