monolith

noun

A monolith is an application whose components form a single unit and are usually built and deployed together.

The online shop started as a monolith, with the product catalogue, payments and administration in one application.

In software development, a monolith is an application built and usually deployed as one unit. Its Glossary · In briefuser interfaceA user interface (UI) is the part of a digital system through which a user receives information and operates it. Examples include screens, buttons, forms and voice controls.Read more⁠, business logic and Glossary · In briefdatabaseA database is a structured collection of data that software can store, retrieve and modify. A database management system controls access to that data.Read more⁠ access may share the same Glossary · In briefcodebaseA codebase is the collection of source code used to build and maintain a software product or component.Read more⁠ and process. This says nothing about the quality of its internal structure: a monolith can still contain clearly separated modules.

How does a monolithic application work?

For a change, developers create a new application version and carry out a Glossary · In briefdeploymentA deployment is the process of installing and starting a chosen software version in a target environment so it can be tested or used there.Read more⁠ of the whole unit. Components call each other directly within the application. They usually do not need a network or external Glossary · In briefAPIAn API is a defined way for software to exchange data or call functions in other software without needing to know how that software works internally.Read more⁠ for those calls.

This can be practical for a new or relatively small product. The code is in one place, and the application is often easy to run and test locally. As a monolith grows, its parts can become more dependent on one another. A small change may then affect other parts, while every adjustment still requires deploying the whole application.

Monoliths and microservices

Glossary · In briefmicroservicesMicroservices are small, independently deployable software services that each perform a defined function and together form an application.Read more⁠ divide a system into smaller services that can run and be deployed separately. A monolith usually has one shared process and release cycle. This does not make microservices inherently better: they add network traffic, separate management and coordination between services.

A modular monolith keeps its parts in one application but makes their boundaries explicit. The team can combine simple deployment with a clear internal structure. The right choice depends on system size, dependencies and how teams organize Glossary · In briefreleaseA release is an identifiable software version prepared to be made available to users. It brings together one or more checked changes.Read more⁠, among other factors.