Skip to main content
New: 9 PM Courses with hands-on exercises and certificates
Back to Glossary
EngineeringM

Monolith

Definition

A monolith (or monolithic architecture) is a software design pattern where all application logic, from the user interface layer to the data access layer, is built and deployed as a single unit. In a monolithic application, the user authentication module, the payment processing module, the search engine, and the notification system all live in the same codebase, share the same database, and run in the same process. Deploying any change means deploying the entire application.

This pattern is the default starting point for most software projects. Ruby on Rails, Django, Laravel, and Spring Boot applications are all monolithic by default. Basecamp, Shopify, and GitHub all operate large-scale monoliths. The term gained a somewhat negative connotation during the microservices hype of 2014-2018, but the industry has since recognized that monoliths are the right choice for most teams at most stages. DHH (creator of Rails) has been a vocal advocate for the "majestic monolith" approach, arguing that the operational simplicity outweighs the scaling constraints for the vast majority of companies.

The key tradeoff is simplicity versus scalability. A monolith gives you one codebase to navigate, one deployment pipeline to manage, one test suite to run, and one process to debug. But as the codebase grows and the team scales, that simplicity can become a bottleneck. Understanding technical debt accumulation patterns within a monolith helps PMs anticipate when refactoring or extraction becomes necessary.

Why It Matters for Product Managers

The architecture your engineering team operates on directly shapes your roadmap and delivery timelines. In a monolith, any engineer can work on any part of the codebase. This means cross-cutting features are simpler to implement. A feature that touches the user profile, the notification system, and the billing flow is just one pull request in a monolith. In a microservices architecture, that same feature requires coordinating across three teams and three deployments.

The flip side: in a large monolith, your team's changes might be blocked by another team's failing tests. Deployment conflicts become frequent when many teams commit to the same codebase. PMs need to understand these dynamics when planning sprints. If your product runs on a monolith and the engineering team reports frequent deployment bottlenecks, that is a signal worth escalating. It may be time to discuss modularization strategies with your technical product manager or engineering leads.

How to Apply It

When evaluating whether to stay monolithic or begin extracting services, ask three questions. First, are deployment conflicts actually slowing your team down, or is the pain hypothetical? Second, do specific parts of the application need to scale independently (e.g., the search service handling 100x the load of the admin panel)? Third, does your engineering team have the DevOps maturity to operate multiple services with independent monitoring, alerting, and deployment pipelines?

If the answer to all three is "not yet," keep the monolith. Use the build vs. buy framework when evaluating whether to extract components as services or adopt third-party solutions. Focus engineering effort on keeping the monolith modular internally: clear module boundaries, well-defined interfaces between components, and fast test suites. A well-structured monolith is easier to split later than a tangled one.

Frequently Asked Questions

When should a team stick with a monolith instead of microservices?+
Most teams should start with a monolith and stay there until they hit specific scaling pain points. If your engineering team is under 50 people, your deployment frequency is not bottlenecked by code conflicts, and your application does not need to scale individual components independently, a monolith is simpler to build, test, and debug. Shopify runs one of the largest Rails monoliths in the world and ships multiple times per day. The decision to split should be driven by organizational pain, not architectural fashion.
What is the difference between a monolith and a distributed monolith?+
A monolith is a single deployable unit where all components share one process and one database. A distributed monolith is what happens when teams split a monolith into separate services but fail to decouple them properly. The services still depend on each other for every deployment, require synchronized releases, and share databases. You get all the operational complexity of microservices with none of the independence benefits. This is widely considered the worst of both worlds.
How does a monolith affect product delivery speed?+
In a small team (under 20 engineers), a monolith is usually faster for delivery because there is no inter-service coordination overhead, debugging is simpler with a single stack trace, and testing is straightforward. As the team grows past 50-100 engineers, the monolith can slow delivery because merge conflicts increase, the test suite becomes slow, and one team's broken code blocks another team's deployment. The inflection point varies by company.

Explore More PM Terms

Browse our complete glossary of 100+ product management terms.