Monolith

A monolith is a self-contained and independent application. It is built as a single unit and is responsible for not just a particular task, but can perform every step needed to satisfy a business need.

monolith

Advantages

Following are some advantages of monoliths:

  • Simple to develop or debug.
  • Fast and reliable communication.
  • Easy monitoring and testing.
  • Supports ACID transactions.

Disadvantages

Some common disadvantages of monoliths are:

  • Maintenance becomes hard as the codebase grows.
  • Tightly coupled application, hard to extend.
  • Requires commitment to a particular technology stack.
  • On each update, the entire application is redeployed.
  • Reduced reliability as a single bug can bring down the entire system.
  • Difficult to scale or adopt technologies new technologies.

Modular monoliths

A Modular Monolith is an approach where we build and deploy a single application (that’s the Monolith part), but we build it in a way that breaks up the code into independent modules for each of the features needed in our application.

This approach reduces the dependencies of a module in such as way that we can enhance or change a module without affecting other modules. When done right, this can be really beneficial in the long term as it reduces the complexity that comes with maintaining a monolith as the system grows.