bom pessoal e agora a gente vai falar sobre um tema que ele é complexo tá e eu quero dar ideia geral aqui pra você tá mas de forma geral em todo o curso a gente vai falar de forma mais específica sobre esse cara aqui tá que é o famoso event driven arquitetura tá ou eda tá e de ei o Driven Architecture, ou EDA. Para que serve esse camarada? O que acontece, pessoal? A gente está muito acostumado a fazer requisições síncronas. O serviço A chama diretamente o serviço B. Mas, hoje em dia, principalmente quando você está trabalhando com micro serviços e você quer conseguir escalar a sua capacidade de processamento, você vai perceber que fazer isso de forma síncrona é muito impossível, porque você vai gastar muito, mas muito processamento. E é por conta disso que você tem a opção de trabalhar guiado a eventos. Então vamos entender essa ideia principal. Primeira coisa que você tem que entender é que os eventos acontecem sempre no passado. O usuário foi criado, a compra foi realizada, o caminhão saiu para entrega, o e-mail foi alterado, a senha foi alterada, a requisição foi feita. Então o que acontece? Toda vez que acontecer um evento no seu sistema, esse evento vai ser publicado num sistema, num message broker, ser publicado num sistema mensagem broker tá e esse mensagem broker ele vai disponibilizar essa mensagem para outros sistemas e esses sistemas vão pegar esse evento e vão processar tá então vamos imaginar que o usuário fez a compra então quando ele fez a compra o sistema que vai dar baixa no estoque lê daí ele fala baixado no estoque gera um outro evento aí o sistema de nota fiscal fala opa foi baixado no estoque então nota fiscal gerada aí o nota fiscal gerada falou para o sistema que faz a entrega fala, notificar gerada, então eu vou fazer entrega. A entrega foi feita, opa, baixa o status para o usuário ver e fala, pedido concluído. Então perceba, todos os eventos que acontecem, tá? São no passado e os seus sistemas pegam esses eventos e acabam processando. Legal? seus sistemas pegam esses eventos e acabam processando. O grande ponto é que nós temos diversos tipos de eventos. E é isso que eu quero que você preste atenção nesse momento. Um tipo de evento que acontece é o famoso Event Notification. O que é o Event Notification no final do dia? É apenas uma notificação de que alguma coisa aconteceu no sistema normalmente esse evento ele é muito pequeno tá normalmente aparece alguma coisa desse tipo id igual a um status aprovado aí o sistema recebe e de igual igual a 1, status aprovado, então ele faz algum processamento ali com essa informação. Agora, um ponto importante sobre Event Notification é que ele serve apenas para notificar que alguma coisa aconteceu. Depois disso, esse evento não serve para mais nada. Então esse evento é pequeno e normalmente, depois que ele aconteceu, ele é jogado fora. Normalmente, eu faço essa brincadeira. Imagina que eu estou gravando esse vídeo agora aqui pra você, a minha esposa chega ali na porta, pega um post-it e joga aqui na minha mesa. E eu estou falando com você, eu pego o post-it e está escrito assim, jantar hoje no japonês, tá? 18 horas. Peguei esse post-it, jogo no lixo e continuo falando. Por quê? Porque eu sei que agora eu vou sair e vou jantar no japonês hoje. Eu não preciso armazenar essa parada. Para que eu vou guardar um monte de post-it da minha esposa? Não faz sentido. Ent de post-it da minha esposa. Não faz sentido. Entende? Porque é uma simples notificação. Ok? Isso é uma coisa. Event notification. É o que mais acontece de forma geral nas empresas. Porque você fica mostrando a mudança de estado de um sistema. Ok? Mudança de estado. Agora, a gente tem um outro tipo de evento aqui que a gente chama de Event Carried State Transfer. O que isso significa? Aí a coisa é diferente. Por quê? Porque o Event Carried State Transfer, ele traz os dados completos daquele evento. Então agora aqui não é mais só compra realizada ele vai trazer que a compra foi realizada que o produto é aquele que as condições de pagamento são aquele que as parcelas vão ser aquelas e você vai guardar todas essas informações porque essas informações são importantes para processamentos futuros ou qualquer coisa desse tipo. Então percebe que nesse caso não é mais um simples post-it que você joga fora. Vamos imaginar que eu acabei de comprar uma casa e eu vou receber a escritura dessa casa. Para eu receber a escritura, a escritura é um evento e é um documento importante que tem todos os dados da minha casa. Para receber a escritura, a escritura é um evento e é um documento importante que tem todos os dados da minha casa. Então, o Event Carriage State Transfer é exatamente a escritura de alguma coisa. É o evento de algo que aconteceu? É. Mas você tem os dados completos ali para você utilizar. Entende? Então, tem uma diferença muito grande de falar casa foi comprada e o id da casa é tal ou só a escritura da casa que foi comprado são informações diferentes que você utiliza em casos diferentes entendeu então esse tipo de evento ele é bem é importante e você tem que, quando você trabalhando em uma empresa, conseguir discernir se você apenas vai mandar uma mensagem de um sistema para o outro, com alguma notificação, ou se você realmente está mandando dados de eventos completos para que um outro sistema possa fazer o processamento, armazenar essa informação, não interessa como que isso vai acontecer legal então isso é importante isso inclusive isso está no blog do martin fowler depois eu deixo o link pra vocês legal a e depois a gente também tem algo que a gente chama de event source está basicamente né a bem grosso modo que eu vou passar aqui, o Event Sourcing grava tudo que acontece, todas as mudanças de estado dos eventos que acontecem no seu sistema num banco de dados. Então, o que acontece? Uma vez que você tem todas essas mudanças de estado, você consegue, se você pensar bem, refazer todo o processamento do sistema desde o dia 1 até o momento atual. Por quê? Porque se você tem todas as mudanças de estado, você consegue refazer todo o processamento até chegar no dia 1. Eu vou dar um exemplo muito claro para você aqui, que eu acho que fica simples de entender. Quantas transações você acha que já não aconteceu na sua conta bancária, que você tem desde 2000 guardado? Sei lá quando você tinha sua conta bancária. Agora, você acha que o extrato da sua conta bancária dos últimos 30 dias, ou o seu saldo, ele pegou os dados desde quando você abriu sua conta até agora para calcular seu saldo? Não. Provavelmente ele guardou isso num cache, ou ele gerou um snapshot nas informações dos seus últimos 30 dias para não ficar fazendo esse cálculo. dos seus últimos 30 dias para não ficar fazendo esse cálculo porém o lance é o seguinte vamos imaginar que dá um rolo muito grande no seu banco eo banco pede o seu saldo ele não sabe mais qual é o saldo da sua conta como ele consegue gerar esse saldo novamente ele sabe se ele pegar todos os créditos e subtrair por todos os débitos desde quando você abriu a sua conta ele vai chegar hoje com o seu saldo completo tá então fazer isso tá todos esses dados de débito e crédito que você vai processando você poderia dizer mas obviamente nesse caso são transações mesmo de bancos de dados, mas a ideia do Event Sourcing é a mesma coisa. Você vai pegando o estado de algo que aconteceu no seu sistema desde o início, como você tem todos os eventos do que aconteceu, você consegue reprocessar e chegar aos dados mais atuais. Isso é muito poderoso. Por quê? Eu vou dar um exemplo para você. A gente tem um sistema que controla tudo o que o aluno faz na nossa plataforma. Mas quando a gente fez esse sistema, não ficou legal a modelagem. A gente utilizou um banco de dados inadequado, vamos imaginar assim. A gente fez algumas coisas que não foram tão importantes. Ou a gente não deu tanta importância naquele momento e chegou na hora H, deu ruim. Como que eu consigo resolver esse problema? Se eu tenho todos os eventos que aconteceram dos meus alunos no passado, eu posso criar um novo sistema, pegar todos esses eventos, reprocessar, chegar no estado atual. Então, o Event Sourcing te ajuda nesse tipo de tarefa. Então, você tem o Delta, é a alteração de um estado para o outro. E para que você não tenha que ficar gravando os dados inteiros então você vai tendo sempre essas alterações de estado que você precisa tá a então um ponto importante um evento emitido ele pode ser o gatilho de entrada para um outro sistema né então criei um novo produto. Opa, outro sistema precisa pegar esse evento para alguma coisa. Legal? E tem alguns pontos importantes que você tem que entender. Vou passar aqui de uma forma bem superficial, mas obviamente que durante todo o curso a gente vai ver isso de forma mais acurada. Você tem algo que a gente chama de coreografia e você tem algo que a gente chama ver isso de forma mais é a curada tá você tem algo que a gente chama de coreografia e você tem algo que a gente chama de orquestração o que isso significa tá quando a gente está falando de coreografia a gente está falando exatamente disso que eu falei um sistema mudou o estado chama outro sistema que chama outro sistema e os sistemas eles vão se organizando de acordo com os eventos que são gerados por outro lado a gente tem um lado de orquestração o lado de orquestração vamos imaginar que você tem um sistema que orquestra essas mudanças e o porquê sistema orquestraria porque existem determinados eventos existem determinadas operações que elas têm que acontecer em determinadas ordens. E caso algum problema aconteça, você tem que conseguir desfazer essas alterações também numa determinada ordem. Imagina que você comprou um produto, chegou lá na frente na hora de emitir a nota de um problema. chegou lá na frente na hora de emitir a nota de um problema e daí você fala o ps eu tenho que falar com o cara que deu erro na hora do processamento como eu faço aí eu tenho que desfazer isso de fazer aquilo de fazer aquilo de fazer aqui então você tem que gerar um efeito de compensação tá e obviamente isso é bem complexo tá mas é muito comum isso acontecer também, legal? Então entenda que os eventos também geram sempre efeitos colaterais e eventualmente esses eventos colaterais precisam ser orquestrados para que você consiga desfazer ou ter um plano B quando alguma coisa acontecer, legal? Então é isso aí, galera, que eu queria falar de forma bem simples, tá? Sobre arquitetura baseada em eventos. Agora vamos falar sobre Publish, Subscribe. Vamos nessa.