A monolithic application combines the user interface and data access layers for multiple features into one application. Usually, a monolithic application will exist as a single codebase that is modified by multiple teams within an organization, and be deployed as a single unit containing all the functionality that those teams maintain.
Monolithic applications can often be easier to develop and deploy thanks to the tight integration of their components. However, as the application’s scope and performance demands increase, a monolith can consequently become difficult to maintain and scale.
Monolithic systems can be a good fit for smaller, less complex applications that don’t need to quickly scale or be routinely maintained. Below are a few examples of applications that commonly have monolithic foundations (though their newer functionalities may be based on a more containerized infrastructure).
While some aspects of monolithic architectures have become outdated, there are still many purposes and positive attributes.
Some advantages of monoliths include:
While the singular nature of monoliths has its positives, it can also lead to issues.
Some disadvantages of monoliths include:
In contrast to monolithic architecture, there is microservices architecture. Microservices is an approach to software architecture that builds a large, complex application from small components. These components can each perform a single function (e.g., authentication, notification, or payment processing) or work as bundles within a monolith. “Microservices” (or just “services”) is also the term for the small components themselves.
While monolithic apps are tightly coupled (meaning their components are interconnected), a microservices app is distributed (meaning their components can act independently). As applications grow larger and more complex, many organizations are exploring either migrating away from monoliths or incorporating new apps in a microservices format.
NGINX is proud to offer the following free educational resources for those exploring monolithic and microservices