Anthology Saga: Assíncrono, Consistência Eventual e Coreografado
B((Serviço Pagamento)) -- inscrito em "LicencaOk" / "LicencaFalhou"
B -- Evento "PagamentoOK" / "PagamentoErro" --> Broker
C((Serviço IntegracaoExterna)) -- inscrito em "LicencaOk" e "PagamentoOK"
C -- Evento "IntegracaoSucesso" / "IntegracaoFalha" --> Broker
Broker((Broker de Eventos)) -- Distribui --> A
Broker((Broker de Eventos)) -- Distribui --> B
Broker((Broker de Eventos)) -- Distribui --> C
Cada serviço publica e consome eventos, tomando suas decisões de avançar ou retroceder com base no que “ouve” do broker. Não há um componente central que saiba de todo o fluxo.5. Pontos de Atenção5.1 Determinar Quais Eventos São NecessáriosEm coreografia assíncrona, cada serviço precisa conhecer as condições em que se espera receber notificações e quais eventos deve publicar. É importante evitar “tempestades de eventos” irrelevantes.5.2 Idempotência e Anti-DuplicaçãoEventos podem chegar duplicados ou fora de ordem. Cada serviço deve ser capaz de processar mensagens repetidas sem gerar efeitos colaterais indevidos (ex.: aplicar uma mesma alteração duas vezes).5.3 Estrutura de Compensação DistribuídaSe o Serviço de Pagamento falhar, o Serviço de Licenciamento pode precisar revogar a chave gerada. O Serviço de Integração Externa pode precisar anular envios. Tudo acontece sem que haja alguém ordenando diretamente cada rollback, e sim por meio de eventos de falha que disparam ações de reversão.5.4 Monitoramento e TracingSem orquestrador, o rastreamento de quem fez o quê demanda logs enriquecidos e tracing distribuído. Isso inclui correlação de IDs em cada evento para seguir a cadeia de ações nos serviços.6. Vantagens e DesafiosVantagens:Alta Escalabilidade: Cada serviço recebe apenas os eventos de seu interesse, podendo escalar horizontalmente para lidar com alto volume.Baixo Acoplamento: A adição ou remoção de serviços pode ser feita com pouca interferência nos demais, contanto que publiquem/assinem eventos adequados.Desafios:Complexidade de Rastreio: Entender o estado global é mais difícil sem um orquestrador.Protocolo de Eventos: É preciso definir cuidadosamente quais eventos serão produzidos, como eles se relacionam e quando disparam as compensações.Inconsistência Temporária: Durante compensações, o sistema pode permanecer em estado divergente por períodos prolongados.7. ConclusãoO Anthology Saga (Assíncrono, Consistência Eventual, Coreografado) dá liberdade para cada serviço orquestrar sua própria lógica de transações locais e compensações em resposta a eventos dos outros. Esse modelo:Dispensa um orquestrador central,Depende de uma troca de eventos bem definida,Aceita ficar em estados intermediários até que as compensações se apliquem por completo.Esse nível de autonomia e desacoplamento pode ser vantajoso em ecossistemas grandes e heterogêneos, onde a coordenação centralizada se tornaria um gargalo. Por outro lado, exige grande disciplina de engenharia para manter a observabilidade, a idempotência e a clareza no design dos eventos de sucesso/falha. Com um design bem estruturado, o Anthology Saga atende processos distribuídos que evoluem de forma colaborativa e se recuperam de falhas graças a um ecossistema de mensagens.