1 research outputs found
Safe API Evolution in a Microservice Architecture with a Pluggable and Transactionless Solution
In contrast to monolithic system designs, microservice architectures provide greater scala-
bility, availability, and delivery by separating the elements of a large project into indepen-
dent entities linked through a network of services. Because services are tied to one another
via their interfaces, they can only evolve separately if their contracts remain consistent.
There is a scarcity of mechanisms for safely evolving and discontinuing functionalities of
services.
In monolithic system design’s, changing the definition of an element can be accom-
plished quickly with the aid of developer tools (such as IDE refactoring toolkits).
In distributed systems there is a lack of comparable tools, developers are left with
the burden of manually tracking down and resolving problems caused by uncontrolled
updates. To ensure that microservices are working properly the general approach is to
validate their behaviour through empirical tests.
This thesis aims to supplement the conventional approach by providing mechanisms
that support the automatic validation of deployment operations, and the evolution of mi-
croservice interfaces. It ́s presented a microservice management system that verifies the
safety of modifications to service interfaces and that enables the evolution of service con-
tracts without impacting consumer services. The system use runtime-generated proxies,
that dynamically convert the data sent between services to the format expected by static
code, thereby relieving the developer of the need to manually adapt existing services.Em contraste com sistemas tradicionais monoliticos, as arquiteturas de microsserviços
permitem grande escalabilidade, disponibilidade e capacidade de entrega, separando os
elementos de um grande projeto em entidades independentes ligadas através de uma
rede serviços. Como os serviços estão ligados uns aos outros através das suas interfaces,
só podem evoluir separadamente se os seus contratos se mantiverem consistentes. Existe
uma escassez de mecanismos para evoluir e descontinuar as funcionalidades dos serviços
em segurança.
Nos sistemas tradicionais monoliticos, a alteração da definição de um elemento pode
ser realizada rapidamente com a ajuda de ferramentas automatizadas (tais como kits de
ferramentas de refactoring IDE). Em sistemas distribuídos, existe falta de ferramentas
comparáveis, os programadores ficam normalmente sobrecarregados com a resolução ma-
nual de problemas causados por atualizações e pela validação do correcto funcionamento
do sistema através de testes empíricos.
O trabalho desenvolvido nesta tese procura complementar a abordagem convencional,
fornecendo mecanismos que suportam a validação das operações de deployment. É apre-
sentado um sistema de gestão de microsserviços que verifica a segurança das modificações
das interfaces de serviço e a evolução dos contratos. A abordagem utiliza proxies, que
convertem dinamicamente os dados enviados entre serviços ao formato esperado pelo
código de serviço estático, minimizando a intervenção manual do programador