Mohammad-Hadi Dehghani received his B.Sc. in Computer Engineering (Software) from the University of Isfahan, Isfahan, Iran, in 2018.
The microservice architecture has gained remarkable attention in recent years. This architectural style allows developers to implement and deploy independent services, so it is a naturally effective architecture for continuously deployed systems and cloud computing environments. Because of this, several organizations are undertaking the costly and time-consuming process of manually migrating their traditional software architectures to the microservice architecture. One of the biggest challenges of this migration is the remodularization of the source code of the system, based on the business functionalities of each part of the system.
This research aims at facilitating the migration to the microservice architecture, through automatic remodularization of the source code, in a manner that by following the microservice design principles, the parts of the system that are moved to each microservice, are related to the business functionalities of that microservice. An approach is proposed in this research that enables software developers and architects to migrate their software systems regarding the accepted design principles – known as Domain-Driven Design – to the microservice architecture, through helping them remodularize the source code of their systems. Migration towards the microservice architecture based on Domain-Driven Design principles makes software systems more maintainable. Despite numerous studies in the field of migration towards the microservice architecture, there is a lack of an approach that can map the functions of a software system to microservices according to the principles of Domain-Driven Design, by requiring only the source code of the system. The proposed approach leverages model-driven reverse engineering to obtain high-level models of the system, and reinforcement learning to propose a mapping of the methods of the system towards a set of microservices while following the Domain-Driven Design principles. In this approach, the source code is converted to high-level models to follow the design principles. Also, mapping the functions of the system to microservices requires the knowledge and technical experience of experts, which is replaced by training an artificial intelligence through reinforcement learning.
After developing the proposed approach, the applicability, accuracy, speed, and scalability of the approach were evaluated by applying it to five well-known software systems as case studies. The results indicate that the proposed approach has suitable applicability and scalability while being 11 percent more accurate than the alternative approach and having a unique speed at solving problems.