According to a report published by KBV Research on the Global Application Modernization Services Market, the global application modernization services market size is expected to be $17.7 billion by 2023, increasing at 18% CAGR during the forecast period. The reasons for modernizing applications range from upgrading depreciated technologies to saving money to increasing business agility and innovation. Source technologies range from legacy mainframe technologies, such as COBOL, IMS, and Adabas, to more modern, but still legacy, technologies such as VB/ASP and 20th century Java applications.
The source technologies drive decisions about code conversion tools and processes, but it should be the business goals that drive decisions about future state architectures. Many of us are big fans of cloud native microservice architectures. This architecture has huge benefits in both performance and speed to market. However, this architecture also introduces complexities in support and deployment. Lift and shift into the cloud (public, private or virtual) is another option worth exploring. And sometimes (embedded systems jump to mind), tight integration is an important trait that needs to be preserved.
Cloud native architectures have a few primary benefits in this context:
- Improved performance through horizontal scalability
- Speed to market through the decomposition of monolithic systems
- Cultural benefits of moving towards a more agile-based product team organization and process
The third benefit should not be underestimated. A microservices architecture allows cross-functional teams to improve and innovate independently from other development and support teams. Less development and deployment coordination allow for increased speed and agility. The improved performance can be applied to specific parts of the applications instead of having to scale an entire monolith. However, these advantages come with a price. Although overall system complexity is reduced, modern DevOps principles, practices and tools are necessary to coordinate all the moving parts of continuous integration.
When making the target architecture decision, we must ensure that the additional benefits are worth the additional cost:
- What is the lifespan of the source application?
- What is the rate of change in business requirements of the source application?
- What is the projected growth for the source application?
As with many things in life, the answer is not always black and white. Often the best approach is a hybrid approach. To paraphrase Martin Fowler, sometimes the monolith does not have to be completely strangled. Those parts of the monolithic application that can benefit from performance and agility improvements should move towards a cloud native microservices architecture. Those that will remain stagnant, or are heading towards end of life, can remain or be moved to the cloud as is, and an integration layer can be introduced. As application modernization grows, the architectures of the target solutions and the methodologies to migrate applications will continue to evolve. Intelligent planning will be the key to success.