Abstract
The shift towards cloud computing has promoted the development of new architectural styles to take advantage of its capabilities.Microservice-oriented architecture (MSA) is the latest style to have emerged. This architecture is organized around small services focused on specific business features, running in independent processes, and communicating through lightweight interfaces. These features, when paired with cloud computing and modern DevOps techniques, allow for easily-deployable, autonomous, and scalable applications.In contrast, legacy monolithic applications are characterized by their large codebase which is generally harder to maintain, deploy and scale.For these reasons, enterprises are eager to migrate their existing monoliths towards an MSA.Nonetheless, the process of rewriting an application from scratch using the new architecture is majorly undesirable, due to its costs and risks.These applications are implemented in varying languages and frameworks.Therefore, not only do companies seek to automate the migration process but also repeat the process across multiple applications.Thus, the need for a semi-automated, generic, and increasingly reusable migration process.The migration process is recognized to be complex and consequently risky and costly.Indeed, it requires understanding the monolith to extract the target microservice architecture.Furthermore, once the target architecture is identified, the source code of the existing application must be transformed to conform to the MSA.To tackle this need, we decompose the process into two research problems: (1) the identification of the target microservice-oriented architecture, and (2) the transformation of the source code towards valid microservice candidates.In this thesis, we propose an approach for each research problem, as well as a model-driven approach to guide the migration process from beginning to end.To validate our approach, we implemented MDE-Mono2Micro, a model driven tool, and applied it on an industrial case study.