A monolith is one deployable application containing all features; it runs as a single process (or a few). Microservices split the system into many small services, each deployable and scalable independently, communicating over the network.
| Aspect | Monolith | Microservices |
|---|---|---|
| Deploy | One big deploy | Deploy per service |
| Scaling | Scale whole app | Scale only hot services |
| Complexity | Simpler ops, one codebase | Distributed ops, network, discovery |
| Consistency | Single DB, ACID easy | Distributed data, eventual consistency |
| Team | One repo, coordinated releases | Teams own services, independent release |
Start with a monolith when the team and product are small; split into microservices when you hit scaling or organizational boundaries (team ownership, different scaling per domain). Don’t split by default — distributed systems are harder.