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.
📖

Subscribe to Sahil's Playbook

Clear thinking on product, engineering, and building at scale. No noise. One email when there's something worth sharing.
[email protected]
Subscribe
Mastodon