Monolith
A monolith is an application packaged and deployed as a single unit: one codebase, one build, one process, one database. Everything ships together. Most applications start as monoliths and many remain so for their entire useful life; the term has acquired a pejorative tone in recent years that obscures how often it is the right choice.
Strengths
- Simple operations. One thing to deploy, one set of logs, one stack trace per error.
- Easy local development. Run the whole system on a developer laptop.
- Cross-module refactoring is free. Rename a function and the compiler surfaces every call site to update.
- Strong transactional guarantees. One database, ACID transactions across the whole domain.
Where it strains
- Team coordination. Many teams editing one codebase produces release coordination overhead.
- Heterogeneous tech needs. One module wants Python for ML, another wants Rust for performance; a monolith picks one stack.
- Independent scaling. One hot path forces scaling the whole binary even if other modules are idle.
🔗
📖
Further Reading
Why "Monolith" Became a Bad Word
Why "Monolith" Became a Bad Word