Independent services working together
Microservices Architecture splits your app into independent services that communicate over APIs. User Service, Payment Service, Notification Service—each runs separately, has its own database, and can be deployed independently. Opposite of Monolith (everything in one codebase). Benefits: team autonomy, independent scaling, language flexibility. Costs: complexity, network calls, distributed debugging. Most startups should start with monolith.
Use microservices when you have multiple teams stepping on each other in a monolith, when different parts need different scaling (payments need 100x more capacity than admin panel), or when you want to use different tech stacks per service. Don't use microservices until monolith is truly painful—usually 20+ engineers. Start with monolith, extract microservices later when clear boundaries emerge.
System Design Patterns