Abstract

Cloud application practitioners are building large-scale enterprise applications as microservices, to leverage scalability, performance, and availability. Microservices architecture allows a large monolithic application to be split into small, loosely coupled services. A service communicates with other services using lightweight protocols such as RESTful APIs. Extracting microservices from the monolith is a challenging task and is mostly performed manually by system architects based on their skills. This extraction involves both: 1) Partitioning of business logic, 2) Partitioning of database. For partitioning of business logic, the existing research studies focus on decomposition by considering the dependencies in the application at the class-level. However, with the passage of time, monolith application classes outgrow their size defying the Single Responsibility Principle (SRP). So, there is a need to consider the code within the classes when identifying microservices. Current studies also lack the partitioning of database and ignore the mapping of Database Entities (DE) to the microservices. In this paper, we present a Comprehensive Microservice Extraction Approach (CMEA) that considers: 1) Both classes and their methods to define and refine microservices, 2) Associate the DE to microservices using newly devised eight guiding rules handling ownership conflicts. This approach has been applied to three benchmark web applications implemented in Java and one in-house application implemented in both Java and Python. Our results demonstrate better or similar software quality attributes in comparison to the existing related studies. CMEA improves software quality attributes by 22%. System architects can easily identify microservices along with their DE using our approach. The CMEA is generic and language-independent so it can be used for any application

Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.