Olá pessoal, eu me chamo Ronaldo Ranelas e nessa aula a gente vai falar sobre o motivo pelo qual a gente deve utilizar uma ferramenta como Apache Kafka e depois a gente vai finalizar com um breve histórico sobre o Apache Kafka. Primeiro, é importante a gente entender o que é uma arquitetura síncrona. Quando a gente fala de arquitetura síncrona, a gente está falando de sistemas se comunicando de forma síncrona, seja via API REST, gRPC, WebSocket ou qualquer outro meio de comunicação que seja síncrona, ou seja, você manda uma requisição e espera a resposta daquela requisição no mesmo momento. Você não espera que ela chegue daqui a um minuto ou dois minutos ou depois que você já encerrar aquela request. Então, a resposta acontece no mesmo canal de comunicação. Aqui eu coloquei quatro sistemas para ilustrar essa arquitetura síncrona. Então a gente tem o sistema A falando com B, o B falando com D. E o A fala com C também paralelamente. Então, da mesma forma que o A chama o B, o A também chama o C ao mesmo tempo. Qual que é o problema que a gente tem numa arquitetura síncrona? Primeiro, autocoplamento. Então, como você deve ter percebido no desenho, se o sistema D sofrer qualquer tipo de intermitência ou parar, o B e o A vão sofrer. Porque o A, para fazer a... completar a requisição dele, responder a requisição, ele precisa passar pelo B e o B precisa passar pelo D. Então, quando o D sofre algum tipo de intermitência, o B e o A também sofrem essa mesma intermitência. o B e o A também sofrem essa mesma intermitência. E a mesma coisa acontece quando o sistema C sofre algum tipo de intermitência. O A também vai sofrer essa intermitência, dado que eles são síncronos, um depende do outro. Na verdade, nesse caso, o A depende do C. A latência corre em cascata, então significa que se o A leva 10 milissegundos para processar a requisição, o B leva 10 e o D leva 10, ao total eu tenho 30. Porque sempre no sistema síncrono você está somando o tempo total da requisição. Porque o A joga para o B e o B joga para o D. Então, essa soma vai acontecendo até a resposta ser emitida para o sistema que chamou o A. Propagação de erros, como eu já falei, o autoacoplamento traz como consequência a propagação de erros. Por quê? Porque quando o sistema D lança algum erro, algum tipo de problema, o B e o A vão receber esse erro. É óbvio que existem diversas tratativas para a gente conseguir aumentar a resiliência e diminuir esses erros, mas para simpl aqui o case, entenda que o sistema síncrono é acoplado, ponto. E quando o sistema dependente dele sofre um erro, ele vai lançar esse erro para cima, tá? E o sistema que está chamando vai também receber esse erro. E se não tiver nenhuma tratativa, ele vai jogar esse erro para o chamador, que é para o cliente. É importante salientar aqui que o sistema síncrono tem suas vantagens. Então, existem trade-offs, existem vantagens de usar o sistema síncrono. Mas como a gente quer especificamente falar aqui do uso do Apache Kafka, a gente está focando em por que, neste caso, não usar o sistema síncrono, não usar a arquitetura síncrona. E aqui eu coloquei três grandes pontos, que são o acoplamento, a latência e a propagação de erros. Como é que a gente resolve isso? Usando sistemas assíncronos Significa que você não espera por uma resposta E você não tem acoplamento entre sistemas Então o desenho muda um pouco aqui O sistema A, em vez de ele chamar direto B Ele chama esse novo componente, que vai fazer a gravação dessas mensagens, desses eventos. O sistema D vai consumir esses eventos, assim como o sistema C e o B. Então, nesse desenho novo, em nenhum momento o sistema A faz a chamada direto para o sistema B, para o C ou para o D. E aqui a gente aplica, pensando em Solid, o S do Solid, que é o conceito de responsabilidade única. Porque esse componente novo que está aqui no meio, a única responsabilidade dele é armazenar esses eventos, essas mensagens que estão sendo transmitidas entre os sistemas. Essa é a única responsabilidade dele. E como eu já falei várias vezes aqui, a gente está aplicando o conceito de evento. Então, o que é um evento? Um evento é uma coisa que já aconteceu. E a gente vai falar no próximo slide aqui, um pouco mais de detalhe, do que é um evento. Então, para simplificar, eu substituí aquele sistema A, B e C por microserviços. Então, o primeiro microserviço é o Cria Cliente. E o que acontece? Quando ele recebe uma requisição, ele faz o que tem que fazer, salva da base de dados, etc. E emite uma mensagem, que nesse caso é um evento de cliente criado. O evento é sempre o passado, então é sempre o que aconteceu. Então tudo que já aconteceu é um evento. E nesse caso, o microserviço de criação de cliente emitiu um evento dizendo cliente criado. Esse componente novo que está aqui no meio, deixa eu só... Esse componente novo que está aqui no meio, ele está armazenando esse evento, no passo 2, o microserviço de autorizar o cliente, ele está consumindo esse evento de cliente criado, ele faz o que tem que fazer, chama a Peste Terna, salva na base e emite o outro evento, que é o cliente autorizado, que é esse evento aqui. Dado esse cliente autorizado, ele também vai ser salvo nesse novo componente que vai armazenar todos os eventos. No passo 4, a gente tem um evento sendo consumido pelo microserviço de notificação. Então, o microserviço de notificação está consumindo o evento cliente autorizado. E aí ele vai fazer o quê? Post notification, vai mandar e-mail, etc. Dizendo que aquele cliente foi autorizado. É válido lembrar que também o mesmo evento pode ser consumido por diversos serviços. Então, nesse caso, além do micro serviço de autor cliente a estar consumindo o cliente criado, o lake, que nada mais é do que uma base de dados ou storage, entenda que é um local onde informações estão sendo armazenadas. Então, lake barra banco de dados barra storage. Esse cliente criado está sendo gravado nesse link também. Então, tem um sistema aqui que está consumindo esse cliente criado, assim como o microserviço que autoriza o cliente. Por quê? Porque eu posso gerar um relatório, fazer BI, analytics, baseado em... Eu quero saber qual é a sazonalidade de criação dos meus clientes. Então, eles são criados mais em dezembro, mais em janeiro, qual é o pico de horário. Então, consumir esses eventos e gerar relatórios a partir disso me ajudam a tomar decisões mais inteligentes no meu negócio. E, finalmente, quem que seria esse componente novo que a gente está adicionando aqui para poder gravar esses eventos é o Apache Kafka, claro. Então, é ele o componente que vai ser responsável por gravar todas as mensagens que a gente está trafegando. Entenda que para o Apache Kafka, ele não sabe o que é evento. Ele só sabe que ele está gravando um dado. Quem está definindo que esse dado é um evento somos nós. E aí, mais para frente, conforme a gente for avançando, eu vou falar um pouco sobre outros tipos, como comando etc mas por agora entenda que o evento é um tipo de mensagem mais utilizados nesse tipo de arquitetura porque ele vai emitir uma informação que já foi efetuado de alguma forma tá e aí um breve histórico para a gente finalizar o apache café foi criado 2011 pelo linkedin tá então é até um histórico para a gente finalizar. O Apache Kafka foi criado em 2011 pelo LinkedIn. Então é até uma história interessante porque o LinkedIn, eles usavam o MQ. E aí eles verificaram que o MQ não atendia a performance necessária. Então eles decidiram criar uma ferramenta que depois se chamou de Kafka. Ele é escrito em escala Java. Ele é open source, então eu coloquei aqui o link do GitHub. Você pode ficar super à vontade para olhar o código, ver como funciona, abrir por request, se você acha que tem alguma melhoria. Ele é distribuído sob a licença Pacho, então é uma licença super permissiva que permite você distribuir o software e utilizar em qualquer tipo de business, não tem nenhum tipo de pagamento atrelado a ela esse aqui é o website oficial, então aqui tem todo um tipo de dock, o Apache Carca mais pra frente, quando a gente entrar na parte de TANning e servidor, você vai ver que tem milhares de configurações pra fazer TANning, então essa doc aqui é muito útil. Eu uso muito para lembrar quais são as configurações e quais são os valores default dela. Os autores que começaram lá em 2011, o Jay Krabs, o John Howe, então coloquei aqui o nome deles, acho que é importante. Você vai ver muitos palestras com o Jay Krabs, então ele é nada menos do que um dos criadores do Kafka. Eu tive a experiência de participar do Kafka Summit em 2019, ele estava lá palestrando, né? Então foi uma experiência incrível encontrar o Jay Krabs pessoalmente. E a origem do nome Franz Kafka, desculpa, a origem do nome Kafka, ela vem do Franz Kafka, né? Para quem conhece, é um autor bem conhecido. E por que Franz Kafka? Foi uma brincadeira que o Jay Krabs fez no início para dizer que o Franz Kafka é um ótimo escritor. Assim como casca ele é um ótimo escritor assim como casca também é um ótimo escritor já que ele escreve mensagens do disco então foi meio que uma brincadeira aí que foi feita com o autor fran se casca e o nome casca que é do seu pai cas. É isso pessoal, espero que vocês tenham gostado e até a próxima.