Uma Abordagem de Conformidade Arquitetural para Arquitetura de Microsserviços
Arquitetura de Microsservic¸os; Conformidade Arquitetural.
Arquitetura de software e definida como um conjunto de decis ´ oes de projeto que possuem ˜ impacto na construc¸ao e evoluc¸ ˜ ao de sistemas de software. Essas decis ˜ oes incluem como ˜ tais sistemas sao estruturados em componentes e sobre quais restric¸ ˜ oes esses componentes ˜ devem interagir. Para auxiliar na concepc¸ao de sistemas que atenda aos princ ˜ ´ıpios da arquitetura de software, paradigmas arquiteturais, tal como a Arquitetura de Microsservic¸os, tem sido propostos. Esse estilo arquitetural enfatiza a composic¸ ˆ ao de um conjunto de ˜ microsservic¸os independentes que executam funcionalidades bem definidas, permitindo que cada microsservic¸o seja desenvolvido em diferentes linguagens de programac¸ao e ˜ gerenciados por diferentes tecnologias de banco de dados. No entanto, tal heterogeneidade implica na dificuldade de verificac¸ao da comunicac¸ ˜ ao entre os microsservic¸os e de ˜ cada um dos seus projetos arquiteturais, uma vez que na pratica, desvios em relac¸ ´ ao˜ a` arquitetura planejada sao comuns. Em geral, tais desvios n ˜ ao s ˜ ao capturados e resolvi- ˜ dos, levando aos fenomenos conhecidos como eros ˆ ao e desvio arquitetural. Diante desse ˜ cenario, este projeto de dissertac¸ ´ ao˜ e centrado na proposta de uma abordagem de con- ´ formidade arquitetural espec´ıfica para a arquitetura de microsservic¸os. Para isso, foram definidos (i) uma linguagem de restric¸ao arquitetural, denominada ˜ DCL+ – adaptada da linguagem DCL (Dependency Constraint Language) – a fim de restringir o espectro das comunicac¸oes e depend ˜ encias aceit ˆ aveis entre os microsservic¸os e de cada um de seus ´ projetos arquiteturais; (ii) um prototipo para uma soluc¸ ´ ao multi-plataforma que permita ˜ restringir a comunicac¸ao entre os microsservic¸os e verificar os projetos arquiteturais de ˜ cada um deles, denominado DCL+check; e (iii) uma avaliac¸ao preliminar da abordagem, ˜ a partir de uma aplicac¸ao composta por cinco microsservic¸os, desenvolvidos em duas ˜ linguagens distintas (Java e C#).