Enabling Architectural Performability Analyses for Microservices via Design Pattern Completions
|Termin||Fr 15. September 2017|
|Kurzfassung||Microservices architectures have gained popularity over the recent years, especially since global players in the internet economy changed to this architectural style. Many IT projects applied microservices architectures, i. e. many developers and architects gained experiences on microservices applications. Many architectural patterns for recurring problems were identified, such as the Service Discovery for service registration or Client-side Load Balancing for load distribution. Although architectural patterns facilitate the design of microservices architectures, software architects face design problems like the distribution of the microservices or the cascading of failures through the system. Additionally, the software has to meet certain performance, reliability and performability requirements.
Architectural analyses with the Palladio framework allow for the investigation of the attainment of these requirements during design time. They support software architects in trading off design decisions by means of prognosticated performance and reliability metrics. The Architectural Templates method combines architecture models with architectural patterns and styles and allows for design-time analyses. Software architects can integrate formalized information of styles and patterns via predefined templates in their models. Templates for commonly used patterns and styles are provided in a catalog. However, this catalog lacks for the support of microservices specific patterns. Predefined templates of microservices architectural patterns can effect conducting performability analyses of microservices architectures with the Palladio framework more efficiently. In this thesis, we create a Microservices Architectural Templates catalog, containing microservices Architectural Templates. A selection of widely used patterns is analyzed and conceptually mapped to the Architectural Templates method. The pattern characteristics are formalized and implemented using the Architectural Templates metamodel. Completions integrate the patterns in analyzable Palladio models while a validation procedure checks if pattern constraints are violated. This work considers the API Gateway pattern, which insulates the clients from how the application is partitioned into microservices. The Client-side Load Balancing pattern provides load distribution with different strategies. The Service Discovery monitors the states of services and the Circuit Breaker pattern protects services excessive load. Since microservices architectures profit from their dynamical character and the embrace of failures the developed templates support the investigation of run-time adaptive systems and failure behavior. We extended the Palladio's simulator for adaptive systems to enable performance analyses in failure situations. A case study, conducted with a sample application representing a customer relationship management application, shows that software architects can profit from the provided templates by automatic model completions and accurate analyses results. Hence, the provided Microservices Architectural Templates can help software architects to make design decisions in an early phase of the development process.