Mono2Micro: From Monolithic Software to Versatile Microservices
Over the past decade, there has been a significant paradigm shift towards cloud computing and web services. As organizations try to keep up with the latest trends, there has been a demand for shifting legacy systems to the Cloud. The microservice-oriented architecture (MSA) is a recent architectural style that has emerged to take advantage of the Cloud with the capabilities for quick deployment, better scalability, and better maintainability. MSA is an architectural approach for developing a single application as a suite of small services, each running in its own process and communicating with lightweight interfaces. Individually, each microservice should be independent, functionally autonomous, and be data autonomous. This architectural style results in more manageable codebase as each microservice can be managed by a smaller team.
Monolithic applications are single-tiered applications where the user interface, the business logic, and data are combined into a single program. Most of these legacy systems are object-oriented (OO) and contain complex internal dependencies. As they age, they become large and complex, and the cost to maintain and evolve them increases. Often, they are difficult to scale in a modular way. Hence, they are scaled by duplicating instances of the whole application. This solution is a very inefficient way to respond to quickly changing workloads, while maintaining optimal utilization.
The result of this paradigm shift is that both industry and scientific communities are interested in evolving / migrating their legacy systems towards microservices. The migration process is costly when done manually. It can be divided into two steps (1) the extraction of microservices from an OO architecture and (2) the transformation of the OO architecture towards an MSA. The extraction process involves identifying a microservice architecture from the source code of a monolithic application (and its matching OO architecture). Then, with the MSA, the source code is transformed to conform to its new architecture. Approaches for extracting a microservice architecture have been proposed to formalize and automate the process. However, no approach has been proposed to automatically transform monoliths towards microservices, therefore this part remains costly as it must be done manually.
The goal of this thesis is to
- provide a process for transforming a monolithic application towards a microservice-oriented one
- and combine it with existing extraction approaches to a semi-automatic and iterative migration tool.
This tool will be used to progressively and iteratively migrate existing backend projects at Berger-Levrault to the modern microservice architecture. This thesis is being worked on alongside with another thesis on the migration of GUIs, to provide a complex tool for the migration of the front and backend of various software at Berger-Levrault.