Monolithic Architecture

Everything we've designed up until now can be considered as a monolithic architecture. At the core, it is a single, indivisible unit, depicted below.

Figure 7.1 A sample taxi-hailing application.

Figure 7.1 A sample taxi-hailing application.

For example, in our taxi-hailing application, all of the components — such as passenger management, billing, notification, and etc. — are all packaged and deployed as a single software system at the end.

However, as we will discuss next, monolithic architectures has huge limitations.

Monolithic Approach Limitations

Monolithic architecture works well in the early stages of a project, but as applications grow over time and eventually become huge, it becomes difficult to scale and maintain.

Figure 7.2 A monstrous, incomprehensible big ball of mud.

Figure 7.2 A monstrous, incomprehensible big ball of mud.

Once your application has become a large, complex monolith, the codebase becomes overwhelmingly complex to understand — in turn, fixing bugs and implementing new features correctly becomes difficult and time consuming. In additional, it faces several problems:

  1. With a large, complex monolithic application is that it is an obstacle to continuous deployment.
  2. Monolithic applications can also be difficult to scale when different modules have conflicting resource requirements.
  3. Another problem with monolithic applications is reliability.
  4. Monolithic applications make it extremely difficult to adopt new frameworks and languages.

A solution to these problem is adopting what is now known as the microservices architecture pattern.

Microservices Introduction