Uma abordagem de conformidade arquitetural para arquitetura de microsserviços - Araujo, Elena Augusta (2019)
Software architecture is defined as a set of design decisions that has impact on the construction and evolution of software systems. Such decisions include how those systems are structured in components and the constraints on how these components should interact on. The microservice architecture comprises an architectural style that emphasizes the composition of a set of microservices that execute well defined functionalities, thus microservices can be developed in different programming languages, running in different frameworks, and can be managed by different database technologies. However, such heterogeneity implies in the difficulty of verifying the communication between the microservices and each of their architectural projects, since, in practice, deviations from the planned architecture may occur, making the code base incompatible with the planned architecture. During the development and evolution of software systems, anomalies are constantly introduced in the source code. These anomalies consist of decisions that are not compatible with the specified architectural model, making the concrete architecture inconsistent with the planned architecture, causing phenomena known as violation and architectural erosion. Given this scenario, this dissertation is centered on the proposal of a specific architectural compliance approach for the microservice architecture. For this purpose, (i) an architectural constraint language, called DCL+ ─ adapted from the DCL (Dependency Constraint Language) language ─ has been defined in order to restrict the spectrum of acceptable communications and dependencies among the microservices and each one of their architectural designs; (ii) a multiplatform solution was proposed that would allow to limit the communication between the microservices and verify the architectural projects of each one of them; (iii) we designed DCL+check, a tool that implements the proposed solution; (iv) the proposed solution was evaluated in a real large application composed of eleven microservices, developed in two different languages (JavaScript and Java), in which 16 communication violations and 171 violations of the structural design were detected. The communication violations occurred in general due to the lack of knowledge of the developers about the restrictions of communication among the modules of the orchestrator system and other microservices, as well as the evolution of two microservices. Regarding the violations of the structural project, they were caused due to the lack of knowledge of the developers about the concepts of software architecture, specifically in the correct application of the Spring MVC framework and dependencies of the Util module.