Implementation compliance of microservices architectural patterns : An approach based on Event-B formal specifications and model-based testing

Vergara, Sebastián

Supervisor(es): Ruggia, Raúl - González, Laura

Resumen:

Microservices have recently emerged as an architectural style in which applications are composed of small, focused services with a cohesive set of responsibilities, each executing on its own process and communicating with others over the network via lightweight mechanisms. Similar to what had happened with monolithic applications, multiple architectural patterns have been proposed to guide the construction of microservices applications, document knowledge and address recurring situations. As a style that was born in the industry, knowledge exchange, formalization, and validation evolved in tandem with, if not after, having the systems deployed and operational. Microservices architectural patterns are frequently stated in an informal manner which may lead to ambiguity, erroneous application, systems differing from expected behavior and lack of tooling support. In fact, multiple implementations for each pattern were created in this context, ostensibly addressing the same issue but presenting variations in behavior. A broadly utilized strategy to eliminate ambiguity in prose descriptions is the application of formalization techniques. In particular, the Event-B method has been used in the context of large-scale systems to formalize service-oriented architecture patterns and business process models, among others. The outcome of applying the Event-B method is a formal model and a set of proof obligations to be discharged. In turn, model-based testing is an extensively used technique to validate a system under test. A model representing the system is built, from which test cases are automatically derived. UML, BPMN, SysML, finite machine notations and mathematical formalisms such as Z or B, are some common mechanisms to build a model of a system for test generation. This thesis proposes an approach for assessing compliance of microservices architectural patterns implementations based on Event-B specifications and model-based testing. The general idea of the approach is to: (i) formalize natural-language-specified microservices architectural patterns using the Event-B method, (ii) automatically derive abstract test cases from the Event-B specifications by leveraging model-based testing techniques, and (iii) instantiate the abstract test cases in order to assess the compliance of concrete patterns implementations. The proposed approach feasibility was empirically assessed using two of the most cited architectural patterns in microservices: Circuit breaker and Service registry. In particular, these patterns were formalized using Event-B and the resulting models were used to assess the compliance levels of three implementations: Netflix Hystrix, Resilience4j and Eureka. To achieve reproducibility of the evaluations, a mechanism based on Jupyter Notebooks was constructed. The development of this thesis enabled us to confirm the issues raised from natural-language specified microservices architectural patterns, such as implementations of the same pattern having different behaviors. In this line, it also confirms the suitability and technical feasibility of the proposed approach based on Event-B and model-based testing, to assess the compliance levels of a particular pattern implementation with regards to the modeled system-to-be.


Los microservicios surgen como un estilo arquitectónico en el que las aplicaciones se componen de pequeños servicios a los cuales se les asigna un conjunto cohesivo de responsabilidades y ejecutan en su propio proceso comunicándose entre ellos a través de la red mediante mecanismos ligeros. De forma similar a lo que ocurrió con las aplicaciones monolíticas, se han propuesto múltiples patrones arquitectónicos para guiar la construcción de aplicaciones basadas en microservicios, documentar el conocimiento y abordar situaciones recurrentes. Como un estilo arquitectónico nacido en la industria, el intercambio de conocimientos, la formalización y la validación evolucionaron a la par, si no después, de tener los sistemas desplegados y operativos. Los patrones arquitectónicos de microservicios se enuncian con frecuencia de manera informal, lo que puede conducir a la ambigüedad, a una aplicación errónea, a sistemas que difieren del comportamiento esperado y a la falta de soporte de herramientas. De hecho, en este contexto se han creado múltiples implementaciones para cada patrón, que aparentemente abordan el mismo problema pero presentan variaciones en el comportamiento. Una estrategia ampliamente utilizada para eliminar la ambigüedad en las escritura en prosa es la aplicación de técnicas de formalización. En particular, el método Event-B se ha utilizado en el contexto de los sistemas a gran escala para formalizar patrones de arquitectura orientada a servicios y modelos de procesos empresariales, entre otros. El resultado de la aplicación del método Event-B es un modelo formal y un conjunto de obligaciones de prueba que deben ser satisfechas. Por otra parte, las pruebas basadas en modelos son una técnica muy utilizada para validar un sistema. Se construye un modelo que representa el sistema a validar, del que se derivan automáticamente los casos de prueba. UML, BPMN, SysML, notaciones de máquina finita y formalismos matemáticos como Z o B, son algunos mecanismos habituales para construir un modelo de un sistema para la generación de pruebas. Esta tesis propone un enfoque para evaluar la conformidad de las implementaciones de patrones arquitectónicos de microservicios basado en especificaciones Event-B y en pruebas basadas en modelos. La idea general del enfoque es: (i) formalizar patrones arquitectónicos de microservicios especificados en lenguaje natural utilizando el método Event-B, (ii) derivar automáticamente casos de prueba abstractos a partir de las especificaciones Event-B aprovechando las técnicas de prueba basadas en modelos, y (iii) instanciar los casos de prueba abstractos para evaluar la conformidad de las implementaciones de patrones concretos. La viabilidad del enfoque propuesto se evaluó empíricamente utilizando dos de los patrones arquitectónicos más citados en el área de microservicios: Circuit breaker y Service registry. En particular, estos patrones se formalizaron utilizando Event-B y los modelos resultantes se utilizaron para evaluar los niveles de cumplimiento de tres implementaciones: Netflix Hystrix, Resilience4j y Eureka. Adicionalmente, para lograr la reproducibilidad de las evaluaciones, se construyó un mecanismo basado en Jupyter Notebooks. El desarrollo de esta tesis nos ha permitido confirmar los problemas que plantean los patrones arquitectónicos de microservicios especificados en lenguaje natural, problemas tales como que las implementaciones de un mismo patrón tengan comportamientos diferentes. En esta línea, también se confirma la viabilidad técnica del enfoque propuesto basado en Event-B y en las pruebas basadas en modelos, para evaluar el nivel de cumplimiento de una determinada implementación de un patrón con respecto al sistema modelado.


Detalles Bibliográficos
2022
Microservices
Architectural Patterns
Formalization
Event-B
Implementation Compliance
Model-Based Testing
Microservicios
Patrones Arquitectónicos
Formalización
Conformidad
Pruebas Basadas en Modelos
Inglés
Universidad de la República
COLIBRI
https://hdl.handle.net/20.500.12008/35986
Acceso abierto
Licencia Creative Commons Atribución - No Comercial - Sin Derivadas (CC - By-NC-ND 4.0)

Resultados similares