DEV Community

Hennan Gadelha
Hennan Gadelha

Posted on

Partner SAGA

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.

Image description

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.

Image description

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)