Why should we containerize monolithic applications?
Amarjeet Singh
Practice Lead Data & GenAI | Sogeti Global Chief Architect at Capgemini
In my previous two blogs, I spoke about breaking a monolithic application into microservices. We also considered if it is essential to convert every monolithic application and answer was, well, it may not be. These applications were developed decades ago to digitize manual process of organizations. Monolithic applications were easier to develop and were less prone to integration related issues since the modules only had minimum or less dependencies. Over a period of time, object-oriented design patterns started evolving and concepts like service-oriented architecture & aspect-oriented designs were introduced in the application development process. It led to benefits such as reusability of modules / APIs, independent releases of features into these modules and cost savings around testing cycles.?By now, customers had started to realize limitations of monolithic architectures as well, which were mainly around lengthy release cycles of new features releases, huge cost of testing every time a change was being released, portability and technical debt.
These benefits of loosely coupled design along with limitations in monolithic design, led to a shift away from monolithic design in development process. Customers started re-architecting these applications to loosely coupled architectures as well. But there was still a good chunk of monolithic application which remained as-is in customers landscape due to their business criticality and risk of revenue leakage in case of issues.
Over a period of time, cost of maintaining the operations and storage for the exponentially growing data on premises, forced customers to look for optimized solutions like cloud hosting solutions. Customers started seeing the cost benefits of cloud hosting for storing their data on cloud at a much cheaper cost. Cloud hosting introduced pay-as-you-go model without worrying about the support of underlying infra operations. This is where customers started triggering the hosting of application servers also on the cloud in a lift & shift manner since cloud gets the latest platform out of the box and takes the responsibility of upgrading it on need basis. This introduced a solution for huge monolithic systems, to migrate them on cloud and reduce cost of operations.
Cloud has come up with its own innovations, business models and technology trends aligned to latest devices in the market. New way of working and new business models brought in more competition to business and a demand to add new features to adapt these business models. Systems built on latest architectures are able to adapt to these changes but frequent changes to monolithic systems is not that quick and sometime lacks technical feasibility. Additionally, the launch of multiple cloud providers and their lucrative cost for pay-as-you-go model forced customers to have their applications easily portable from one cloud to another.
While most of the applications were upgraded to new architecture, there were applications which could not be upgraded and remained monolithic. With cloud migration happening almost in all the customer’s landscape, containerization of monolithic applications is being seen as a first step to modernize these applications. Containerized deployment is based upon the principle of packaging all its OS and external libraries dependencies together with application code, making it more independently running program as shown below:
领英推荐
Containerized deployment approach is able to provide most of the benefits for monolithic applications as well i.e. portability, faster releases and elasticity. Once a container image is built, tested and released, it can be defined as a base image for delta changes in the application codes. Adding incremental code changes on top of base images always runs through the same process of release automation i.e. code & image build, move to container registry, security scan & code analysis, functional automation testing, automated configuration of application dependencies & integrations.
In this way, redeploying monolithic applications as containers definitely brings some benefits to our customers in terms of:
?In summary, not all the monolithic applications could be a good candidate for containerization, but customer should be taking a cautious call for the business-critical application considering them for this approach. It would be a first step for these application toward their modernization path without spending huge money at the same time, also it will bring the benefits around the release, testing & operational processes for these applications.