The tutorial covers the topic on what is Monolithic Architecture, Monolithic Architecture Diagram, Benefits of Monolithic Architecture , Limitations of Monolithic Architecture , examples using Monolithic Architecture.
What is Monolithic Architecture ?
Monolithic dictionary meaning is ” formed of a single large block of stone , organization or people”. The IT meaning of monolithic could be the combination of different components as single code piece of application deployment. An application consist of front-end , user authentication process, handling request and response data , business data processing , database operations, interacting with third party API Integrations. The monolithic applications were deployed as the single code piece even though having multiple modules developed for application integration. The traditional java applications used to be deployed as WAR file for the web-based application even though they contain separate components for handling application execution.
Example of Monolithic Architecture
Lets consider the online application store example for Amazon with the Monolithic Architecture. The high level module could be User Authentication, Customer Process, Item Listing with Prices, Order and Shipment Process, Payment Process, User Notification, Return Orders and many more. Each module could have a corresponding service to retrieve or update the process or third-party services which further requires database operations to process the details. Even though internally these are divided into components or modules but still all the application code is to be deployed as part of the single deployment ( WAR file) process which makes it supported with the monolithic architecture.
Monolithic Architecture Diagram
The below given diagram depicts the Monolithic Architecture where application view, user authentication, Item Module, Ordering Module, Payment Module are combined together within single application code repository which is deployed as single application WAR file.
Benefits of Monolithic Architecture
- Ease of development: Monolithic applications are simple to develop at least in the initial phase as it maintains single code repository
- Ease of deployment Monolithic applications provides easy deployment process as it combines all application code in the single artifact
- Ease of Application Testing : Monolithic applications provides running applications with all components available and thus makes it easy to perform end-to-end testing scenarios.
- Ease of Scalability: Multiple Monolithic applications can run behind the load balancer which makes it easily scalable.
Limitations of Monolithic Architecture
- Difficult to maintain: Large and complex applications supported with monolithic architecture becomes difficult to understand and debug the application issue to provide issue resolution.
- Complete application Deployment: We need to deploy the complete application every time whenever any update happens in the application code.
- Does not support continuous deployment: It is difficult to provide continuous deployment for every single update as same code base is updated by multiple developers and could impact the ongoing testing.
- slow down application up-time: The larger application takes more time for application start up as it sometimes overloads the web container.
- Impacting application scalability: Each module in the monolithic application could have different behavior. Some modules might requires more memory for processing , some might require more memory and high I/O traffic and thus it comes difficult to deploy and make such applications scalable on cloud.
- Technology dependent: Monolithic applications are less flexible for adapting to the new technology changes and need to be dependent on the used application frameworks and technology stack.
- Cannot scale development: multiple developers could be assigned with different tasks to update the same application file which becomes difficult to work independently and adds dependency among team members
Does MVC supports Monolithic Architecture?
MVC stands for Model-View-Controller Framework which segregates the Model ( Persistence) , View ( User Interface) and Controller for handling the application execution ( Request and Response).
Although Monolithic Architecture can be supported with different approaches but we can say that the MVC Framework is the most modern representation of the Monolithic Architecture.