Bom pessoal, e agora para a gente ir fechando com chave de ouro, eu quero me aprofundar um pouco mais aqui com você sobre o padrão saga. Esse padrão saga, no final do dia, ele acaba juntando muitos desses conhecimentos que a gente tem entre microserviços, entre orquestração de micro serviços através de um mediador tá a parte de comunicação assíncrona tá e tudo mais então eu quero mostrar pra vocês tá um exemplo que eu desenhei aqui sobre o padrão saga e depois eu vou mostrar ali no código meio que uma interface de como que isso poderia ser. Legal? Então vamos lá. Pessoal, seguinte, quando a gente está trabalhando com micro serviços ou qualquer tipo de sistema distribuído, normalmente nós vamos ter em algum momento um desafio e esse desafio é coordenar uma série de etapas pré-definidas que você sabe o começo o meio eo fim tá e isso aí de forma geral é muito complexo tá eu digo de forma geral complexo mesmo porque é complexo tá em relação ao lado do negócio porque você depende essencialmente de regras de negócio e também você depende essencialmente das etapas do negócio e também pelo fato de que como as organizações mudam a todo momento, essas etapas também podem mudar a todo momento. essas etapas também podem mudar a todo momento. Então você precisa de algo que seja extremamente coeso, mas ao mesmo tempo flexível. E não tem muito para onde fugir. Você precisa coordenar que etapas sejam realizadas exatamente em uma determinada ordem e caso algo de errado essas compensações ou seja o roubeck que você tem que fazer também seja executado em uma determinada ordem então para você ter uma ideia tá a esse tipo de acontecer de acontecimento a é muito comum em negócios que realmente tem essa cadeia de operações. Eu vou dar um exemplo bem claro aqui para vocês. Vamos imaginar que nós temos um sistema que faz reserva de quartos de hotel. Então vamos lá, eu faço a reserva de um quarto de hotel, e em seguida o sistema me fala, você já alugou carro? Eu falo, não, eu quero alugar o carro também. E eu vou lá e reservo o carro. Daí ele fala, você já reservou a passagem aérea? Eu falo que não, e eu vou lá e reservo a passagem aérea. Eu falo que não e eu vou lá e reservo a passagem aérea. Agora, vamos imaginar que em alguma dessas etapas algo dá errado. O cara está pensando que ele conseguiu alugar o hotel e dá um problema no quarto do hotel. Agora, o cara só alugou comigo o carro porque ele tinha o quarto de hotel. E ele só comprou a passagem porque ele também alugou o quarto do hotel. Entende o que eu estou dizendo? O problema que essas coisas começam a acontecer. Então, quando a gente identifica algum tipo de problema, principalmente mais lá na frente, vamos imaginar que o cara lá na frente também escolheu um seguro viagem e depois ele colocou um seguro de operação encadeada que uma depende da outra e que pela decisão da empresa eu quero falar se o voo foi cancelado cancela o seguro viagem e também cancela a bagagem né ou qualquer coisa desse tipo cancela o carro que o cara alugou então esses tipos de coordenação tá você pode fazer utilizando saga. Agora, obviamente que o caso que eu passei aqui para vocês é um caso mais forçado, porque normalmente a saga acontece com uma série de encadeamentos, e se lá no final tudo deu certo, a saga é finalizada naquele momento. E se aconteceu algum outro tipo de problema a gente vai ter que fazendo esse tipo de compensação legal então é somente para você ter uma idéia de coisas que acontecem tá o exemplo claro que muita gente dá também é o bendito exemplo do e commerce né eu compro um produto vai o pagamento aprovado depois é eu removo o produto do estoque depois emita nota fiscal e depois eu mando para a área de entrega tá agora vamos imaginar que deu um problema lá na entrega o que eu tenho que fazer eu tenho que a cancelar a nota fiscal eu tenho que botar o produto de novo no estoque e eu tenho que estornar o valor então se você começa a pensar nesses tipos de modelo você começa a perceber que você vai depender sim de um orquestrador e esse orquestrador ele vai garantir para você que todas essas etapas elas foram cumpridas legal agora um ponto importante é que hoje em dia quando a gente trabalha com sistemas distribuídos você vai perceber que cada uma dessas etapas normalmente elas são etapas que rodam em micro serviços separados. E muitas dessas etapas também, elas acontecem de forma assíncrona. O que isso significa? Que para garantir mais resiliência, em vez de ficar fazendo chamada REST ou qualquer coisa desse tipo, a gente bota isso numa fila, bota isso num tópico, e daí os sistemas vão recebendo e vão retornando os resultados legal então no próximo vídeo eu quero detalhar um pouco mais aqui com vocês de um fluxo que eu acabei criando e depois a gente pode também dar uma olhadinha em código legal então vamos nessa