Monolithic Applications are single code base containing multiple modules. The modules can be divided based on technology or functionality. It mostly contains single build system and might be deployed as a huge WAR file.
Enterprise Applications have been architect-ed based on this model. Generally an enterprise applications would be based on layered architecture consisting of following modules/layers
- Presentation Layer- Mostly UI handling request and response
- Business Layer- Contains Application logic
- Database Layer – Data access layer
- Application Integration Layer – Mostly messaging layer
Dis-advantages of Monolithic Architectural approach
- Application Container/WebContainer stressed – As application grows it adds stress on the container causing poor performance.
- Complete deployment only – Does not support partial deployment . Even for small changes the entire application has to be deployed
- Complexity of the code base of huge enterprise applications demand a huge learning curve
- Scaling and High Availability is challenging as multiple instances of same application to be executed across the cluster
- Frequent deployment/integration is not trivial. Need dedicated resource for build and deployment
- Development is challenging as developers and IDE to deal with huge code base leading to low productivity
- Difficult to migrate to different technology. Mostly would lead to rewriting
What is trending now ….
At present the focus has moved from desktop-browser to mobile/smart-phone/tab browser. Enterprise application need to provide data to these devices rather to desktop-browser. We need a light weight solution . Need for REST/SOAP API for data exposure than the legacy enterprise mechanism. This can be achieved by Microservice architecture. Lets see in detail about Microservice applications in my next post.