Como falado no post anterior, o uso da arquitetura baseada em micro serviços vem crescendo ao longo dos últimos anos. É inquestionável os benefícios do uso desta arquitetura, entretanto o uso dela traz consigo algumas problemáticas e uma delas é o gerenciamento de dados.
O padrão SAGA é uma das possíveis soluções para este problema, há duas maneiras de implementação de um SAGA, são elas: Coreografia e Orquestração. No decorrer do post irei explicar um pouco mais sobre cada uma delas.
Com o partner SAGA, todo serviço que realiza a transação publicará um evento. O serviço seguinte que executa a próxima transação em cadeias será acionado pela saída da transação anterior e continuará até a última transação encadeadas (Coreografia) ou também podemos ter uma micro serviço responsável por gerenciar todas as chamadas para as transações existentes (Orquestração), um ponto importante sobre o SAGA é que toda transação deverá ser desfeita caso encontre algum problema, dentro do panorama SAGA essa ação de desfazer é chamada de: Compensação.
Coreografia
Nesta forma de implementação cada um dos micro serviços envia e ouve eventos de outros micro serviços, ou seja a decisão de ação que será feita dependerá do evento anterior. A seguir mostrarei em diagrama como funcionaria a implementação do SAGA seguindo a estratégia de coreografia.
O fluxo em azul são as operações responsáveis por envio de eventos (linhas tracejadas) e persistência no banco de dados, já o fluxo em vermelho são as ações compensatórias aquelas que tem como função de desfazer uma ação já realizada.
Orquestração
Uma outra implementação do padrão SAGA é a orquestração, nela teremos um serviço responsável por publicar e ouvir eventos para os outros micro serviços. Esse micro serviço orquestrador deverá ter a inteligência para que dependendo do retorno que receba, realizar a compensação de uma ação. A seguir um diagrama representando a implementação da SAGA em Orquestração.
O orquestrador envia e escuta eventos de todos os outros micro serviços e dependendo da resposta, ele realiza uma solicitação de compensação. Por exemplo: Caso o pagamento não for aprovado o orquestrador vai solicitar compensações para o o micro serviço de estoque devolver o item, o micro serviço de entrega cancelar a entrega e o micro serviços de pedidos ter seu status alterado.
Por fim, SAGA é uma das muitas soluções para quando se trabalha com micro serviços. Entretanto, há muitas outras tão boas quanto, por isso é necessário analisar qual partner aplicar, todos eles terão seus prós e contras.
links úteis: https://bit.ly/3HJwdW1
https://bit.ly/34JrXHH
https://bit.ly/3LrgVHE
Escrito por: Hennan Gadelha
Top comments (0)