In this section, we will take a look at one of the traditional architectures, which is referred to as monolithic architecture.
Consider a hospital management solution. It might have multiple modules like Patient Registration, Doctor Appointment System, Room booking System, Billing System etc.
In a traditional architecture, these modules might be deployed as a single artifact (for example Jar/WAR in Java) and they connect to a single database, as shown in above diagram.
As the hospital expands its business, the number of patients’ increases multifold and the application will need to scale accordingly. However, scaling might not be that easy with this architecture. We cannot scale individual modules and we need to assign memory/CPU to the entire application leading to inefficient resource usage. For example, on a day where number of patients getting discharged is high, we might need to scale the billing module alone. This is one of the drawbacks of monolithic architecture, which will not fit into a distributed ecosystem.
An alternative to Monolithic architecture is a Microservices Architecture, which is explained in later sections.