Applying a Multi-platform Architectural Conformance Solution in a Real-world Microservice-based System - Araujo, Elena A.; Espíndola, Álvaro M.; Garcia, Vinicius Cardodo; Terra, Ricardo (Anais do Simpósio Brasileiro de Componentes, Arquiteturas e Reutilização de Software (SBCARS), 2020)
Microservice architectures are composed of a set of independent microservices that execute well-defined functionalities, allowing each one to be developed in different programming languages and data management technologies. The problem, however, is that such heterogeneity implies in a harder verification process of communication among microservices and the architectural designs of each microservice. Although the state-of-the-art provides several architectural conformance solutions, none formally restricts communications (e.g., over HTTP) between different systems. Even stable and industrial solutions---such as Kubernetes, Terraform, and Docker Compose---provide basic mechanisms to restrict communications between microservices. Thereupon, this paper proposes and evaluates a multi-platform architectural conformance solution for the microservice architecture. For this purpose, (i) we specify an architectural constraint language, called DCL+---adapted from the DCL (Dependency Constraint Language) language; (ii) we propose a multi-platform process that restricts the communication between the microservices and also verifies the architectural projects of each one of them; (iii) we develop DCL+check, a tool that implements the proposed solution; (iv) we apply our process in a medium-size real-world application composed of eleven microservices, developed in two different languages (JavaScript and Java). As result, we found 16 communication and 171 structural design violations. 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.