Recommendation of microservices patterns throught information retrieval - Moura, Álex dos Santos (2023)
Software development inherently involves solving recurring design problems, which can negatively affect the quality attributes of a system. These problems are commonly solved through the application of design patterns – proven solutions forged by experienced developers. Microservices architecture, a variant of Service-Oriented Architecture, is on the rise, given that giants like Amazon, eBay and Netflix are adopting this architecture. In this architectural style, systems are composed of microservices that communicate through messages. Each microservice has a specific responsibility and is deployed, scaled, and tested independently. Design patterns used to solve design problems present in microservices-based systems are called microservices patterns. Solving design problems is theoretically simple, the developer only needs to select design patterns and apply them. However, in practice, both beginners and experienced developers have difficulty selecting design patterns, the reasons for this difficulty are the substantial number of design patterns and limited knowledge. Thus, the overall goal of this work is to provide a way to help developers select the right microservices pattern to solve a given design problem. This work was developed by using the research methodology named Design Science Research, which proposes the development of Information Technology artifacts to solve real-world problems. Initially, a recommendation approach based on Information Retrieval was proposed to make recommendations for microservices patterns, where the developer can report a design problem, in natural language (text), and receive recommendations for microservices patterns that can solve the design problem reported. Overall, testing using a set of toy design problems showed that the recommendation approach was able to solve 60% of design problems and that there is room for improvement as 40% of design problems were not solved. This approach was then used in a tool called Floc. This tool has a friendly user interface where the developer can manage design problems and get microservices pattern recommendations for them. The tool was evaluated using industrial design problems and demonstrated promising results. Furthermore, interviews with industry developers corroborated the effectiveness and practicality of the recommendation tool.