Arquitetura Event-Driven – Hipsters Ponto Tech #485
Resumo
O episódio explora a arquitetura orientada a eventos, começando com uma explicação conceitual de Vini, que a compara a um sistema de campainha: há um produtor de eventos, um consumidor e um broker intermediário. A discussão avança para os casos de uso apropriados, como sistemas de e-commerce que precisam processar múltiplos estados de pedido de forma desacoplada e escalável, especialmente em cenários de pico como a Black Friday.
Os participantes debatem quando adotar essa abordagem, alertando contra a adoção por hype. Eles propõem um roteiro de perguntas para validar a necessidade: múltiplos serviços reagem ao mesmo evento? É aceitável que a resposta não seja síncrona? É necessário desacoplar componentes? A equipe e a infraestrutura estão preparadas para lidar com rastreamento, versionamento e monitoramento de eventos? Conceitos como idempotência e consistência eventual são destacados como desafios inerentes.
A conversa então se volta para as tecnologias disponíveis. RabbitMQ é apresentado como uma opção clássica e mais simples para começar, ideal para filas de tarefas. Kafka é recomendado para cenários de streaming com alto throughput, como processamento de áudio em tempo real. Outras ferramentas como NATS, AWS SQS, Google Pub/Sub e Azure Event Grid também são mencionadas. Estratégias de resiliência, como DLQ (Dead Letter Queue) e padrões como Saga, são discutidas para lidar com falhas.
Finalmente, o episódio aborda considerações sobre organização de código (mencionando Clean Architecture, DDD, CQRS e Vertical Slice), a importância de entender os fundamentos antes das ferramentas, e dicas para profissionais em diferentes níveis de carreira que desejam se aprofundar no tema. A conclusão reforça que a arquitetura orientada a eventos é poderosa, mas traz complexidades significativas e não é uma solução universal.
Indicações
Cursos
- Pós-Tec (Arquitetura de Software) — Thiago Adriano menciona que coordena uma pós-graduação que aborda desde Domain Driven Design, Vertical Slice, arquitetura hexagonal até deploys e escala.
- Pós-Tec (IA) — Thiago também cita uma pós-graduação em IA que ensina fundamentos como o que são modelos de IA, virtualização, RAG (Retrieval-Augmented Generation) e como trabalhar com essas ferramentas.
Ferramentas
- RabbitMQ — Apresentado como uma ferramenta clássica, simples e completa para começar com mensageria, ideal para aprender e para ambientes corporativos. Oferece suporte a diferentes tipos de exchange (Fanout, Direct, Topic).
- Apache Kafka — Recomendado para cenários de streaming com alto throughput de milhões de eventos em tempo real, como em plataformas de áudio ou processamento contínuo de dados.
- NATS — Mencionado por Vini como uma ferramenta que ele conheceu recentemente, também com capacidades de streaming.
Livros
- Livro do Thiago Adriano (Casa do Código) — Thiago menciona que está finalizando um livro sobre arquitetura de software que será publicado pela Casa do Código.
Linha do Tempo
- 00:02:36 — Conceito de Arquitetura Orientada a Eventos — Vini explica o conceito usando a analogia da campainha: alguém produz um evento (tocar a campainha), um broker intermediário (a campainha) notifica, e um consumidor reage (ir atender). Ele destaca as três partes: produtor, consumidor e broker. A ideia é um paradigma assíncrono, diferente do modelo síncrono request-response.
- 00:05:09 — Quando usar Arquitetura Orientada a Eventos — Felipe inicia a discussão sobre casos de uso, citando sistemas de e-commerce como exemplo clássico, onde um pedido passa por vários estados (criado, pago, em separação) e múltiplos serviços precisam reagir de forma desacoplada e escalável. A arquitetura é útil para quebrar responsabilidades em capacidades de negócio isoladas.
- 00:09:23 — Roteiro para validar a necessidade de Event-Driven — Vini propõe um mini roteiro de perguntas para evitar adotar a arquitetura por hype: múltiplos serviços reagem ao mesmo evento? É aceitável que não seja síncrono? É necessário desacoplar as peças? A equipe está pronta para rastrear, versionar e monitorar eventos? Será que um REST não resolveria? A adoção é um comprometimento alto.
- 00:13:29 — Desafios e Conceitos Avançados: Idempotência — Os participantes discutem conceitos que surgem com a arquitetura orientada a eventos, como a idempotência. Eles explicam que uma operação idempotente pode ser executada várias vezes com o mesmo resultado final (ex: um ‘like’ em rede social), enquanto operações não idempotentes (ex: adicionar ao carrinho) acumulam. Isso ilustra a mudança de pensamento necessária.
- 00:16:27 — Panorama de Tecnologias: RabbitMQ vs. Kafka — André pede um panorama das tecnologias. Thiago defende o RabbitMQ como uma opção clássica, completa e mais simples para começar e ensinar, com suporte a diferentes tipos de exchange (Fanout, Direct, Topic). Pathy e Felipe mencionam o Kafka como ideal para cenários de streaming com alto throughput de milhões de eventos, como em plataformas de áudio.
- 00:18:48 — Estratégias de Resiliência: DLQ e Retry — André pergunta o que acontece se o consumidor de uma fila parar. Thiago explica estratégias básicas como retry (tentar novamente algumas vezes) e DLQ (Dead Letter Queue), para onde mensagens com falha são enviadas para reprocessamento ou análise. Ele cita a importância dessas estratégias em sistemas críticos, como os de saúde.
- 00:25:18 — Debate: Monolito escala? — Thiago retoma sua provocação inicial: ‘Monolito escala?‘. Ele relata sua experiência na TV Bandeirantes, onde um monolito com PHP escalava, mas com o custo de adicionar mais máquinas (escalar para cima). Ele argumenta que, para sistemas com poucas funcionalidades e uma equipe pequena, um monolito pode ser mais fácil de manter do que vários microserviços.
- 00:27:27 — Organização de Código em Event-Driven — Vini levanta a questão de como organizar o código nesse novo paradigma, mencionando uma ‘sopa de letrinhas’ de padrões: CQRS, DDD, Saga, Arquitetura Hexagonal. Thiago comenta que vê muito Clean Architecture nas empresas pela facilidade de manutenção. Pathy defende começar pelo DDD para colocar o negócio no centro antes de escolher a organização do código.
- 00:31:27 — Como estudar e se preparar para Event-Driven — André pergunta como profissionais podem estudar e treinar arquitetura orientada a eventos. Vini recomenda começar pelo RabbitMQ em ambiente local para brincar com produção e consumo. Para níveis mais sênior, é crucial entender quando usar e debater a decisão, não apenas a tecnologia. Pathy e Thiago enfatizam estudar fundamentos (Pub/Sub, eventos vs. comandos) e fazer provas de conceito.
- 00:42:52 — Considerações Finais e Segurança — No fechamento, os participantes reforçam que Event-Driven não é uma solução divina para todos os problemas. Thiago alerta para desafios adicionais como autenticação, autorização e ataques de negação de serviço (DoS) em filas públicas. A segurança no tráfego de dados é destacada como imprescindível. Eles sugerem um próximo papo para discutir os problemas após a escolha da arquitetura.
Dados do Episódio
- Podcast: Hipsters Ponto Tech
- Autor: Alura - Hipsters Network
- Categoria: Technology Science Education
- Publicado: 2025-10-14T03:06:02Z
- Duração: 00:44:28
Referências
- URL PocketCasts: https://pocketcasts.com/podcast/8c92b8c0-2f51-0134-eba6-0d50f522381b/episode/b19a8e2a-9464-4acc-b2a6-129f4980e375/
- UUID Episódio: b19a8e2a-9464-4acc-b2a6-129f4980e375
Dados do Podcast
- Nome: Hipsters Ponto Tech
- Site: https://www.hipsters.tech/
- UUID: 8c92b8c0-2f51-0134-eba6-0d50f522381b
Transcrição
[00:00:00] RIPSTERS.TEC, o podcast de tecnologia e outras modinhas.
[00:00:13] Salve, ouvintes do RIPSTERS.TEC!
[00:00:15] Está no ar mais um episódio do seu podcast favorito.
[00:00:19] Eu sou o André Davi, sou o seu host mais uma vez.
[00:00:23] E hoje é um dia da gente fazer aquele pensamento que ajuda a dar alguns saltos
[00:00:27] na forma como a gente aborda a tecnologia.
[00:00:30] A gente vai falar novamente sobre arquitetura,
[00:00:32] mas dessa vez a arquitetura orientada a eventos.
[00:00:35] Quando isso é necessário? O que muda?
[00:00:38] Por que tudo aquilo que você aprendeu até agora
[00:00:40] talvez precise ser readequado para esse novo formato?
[00:00:45] Vamos ver quem está comigo nesse papo.
[00:00:54] E quem está aqui comigo hoje é ele, Vini, né?
[00:00:59] André Davi, meu grande amigo, o Tech Lead.
[00:01:01] Tudo bem com você, Vini?
[00:01:02] Tudo bem, André.
[00:01:03] E para mim, orientação a evento é quando alguém toca a campainha e eu vou lá ver quem é.
[00:01:08] Coisa maravilhosa.
[00:01:09] Já começamos.
[00:01:10] Eu quero ver que tipo de bingo a gente vai marcar hoje.
[00:01:12] Mas antes, deixa eu apresentar o resto da galera.
[00:01:15] O Felipe, o famoso Cachoeira, lá do Luísa Labs, é Senior Staff Software Engineer.
[00:01:21] Tudo bem contigo, Felipe?
[00:01:22] Tudo certo aí, André, Vinícius, Thiago.
[00:01:26] Bora aí falar de arquitetura de eventos aí.
[00:01:28] Pô, sensacional.
[00:01:30] E quem volta aqui ao Hipsters para ajudar a gente mais uma vez a entender esse mundo por trás dos sistemas
[00:01:36] é ela, Pathy, que é Tech Lead.
[00:01:39] Tudo bem com você, Pathy?
[00:01:40] Tudo ótimo.
[00:01:41] Eu gosto da liberdade do caos ao mesmo tempo.
[00:01:44] É um prazer estar aqui para falar de Event to Driven.
[00:01:47] Liberdade do caos, gostei.
[00:01:49] E quem fecha aqui o nosso time de especialistas é ele, Thiago Adriano, que é coordenador da Pós-Tec.
[00:01:56] Tudo bem com você, Thiago?
[00:01:57] Opa, tudo bem, pessoal?
[00:01:59] Muito obrigado aí pela oportunidade.
[00:02:01] Já fica aquela dúvida.
[00:02:02] Monolito escala?
[00:02:03] Ih, rapaz!
[00:02:05] Galera, já deu para perceber aqui que o assunto tem aí vários espinhos, várias controvérsias e várias coisas legais.
[00:02:13] Mas para a gente começar contextualizando esse papo.
[00:02:16] Outro dia eu falei para o Vini.
[00:02:17] Eu falei, Vini, vamos falar sobre mensageria.
[00:02:21] E o Vini falou, cara, vamos falar sobre arquitetura orientada a eventos como um todo.
[00:02:25] Porque a gente já pode abordar.
[00:02:27] É necessário quando não é.
[00:02:29] Então, como sempre, eu vou pedir aquele resumão, Vini.
[00:02:32] O que é arquitetura orientada a eventos, a grosso modo?
[00:02:36] Boa.
[00:02:36] Vale a pena a gente pensar que é um paradigma diferente.
[00:02:40] Então, por exemplo, a gente consegue fazer uma analogia a código síncrono ou assíncrono.
[00:02:45] Então, se a gente tem um código síncrono, alguma coisa que a gente está esperando ali executar.
[00:02:49] A gente só vai para a linha de baixo quando termina.
[00:02:52] E o assíncrono, que a gente não sabe quando vai terminar.
[00:02:54] Quando acontece, a gente vai lá e faz alguma coisa.
[00:02:57] Certo?
[00:02:57] Então, a ideia do Event Driven é mais ou menos isso.
[00:03:00] Ao invés de a gente ter uma requisição e uma resposta, a gente tem três partes.
[00:03:05] Vai.
[00:03:05] A gente tem quem está produzindo o evento.
[00:03:09] A gente tem quem vai consumir esse evento.
[00:03:12] Então, se a gente voltar lá no exemplo da campainha,
[00:03:15] alguém, uma entrega chegou para mim e alguém foi lá e tocou a porta.
[00:03:19] Essa pessoa produziu um evento.
[00:03:21] E eu consumi esse evento.
[00:03:22] Eu estava lá tomando café, fiquei ali escutando a campainha.
[00:03:25] A campainha tocou e eu fui lá reagir.
[00:03:27] E a terceira parte é quem faz o meio.
[00:03:30] É a campainha, é o nosso broker.
[00:03:32] Ou seja, esse broker é esse intermediário entre os interessados.
[00:03:37] Então, resumindo, três partes.
[00:03:39] A gente tem alguém que produz.
[00:03:41] A gente tem alguém que consome.
[00:03:42] E a gente tem esse broker, esse intermediário aí, que ele é só o caminho, certo?
[00:03:48] Ele é a campainha.
[00:03:49] Ele só vai avisar que aconteceu alguma coisa e tudo mais.
[00:03:51] Isso se desdobra muito, porque tem várias formas de fazer isso.
[00:03:56] Mas esse…
[00:03:57] Essencialmente, a gente tem mais ou menos isso, independente da tecnologia que a gente use.
[00:04:02] Pode ser lá um Kafka, um RabbitMQ, tem lá produtos da AWS para isso,
[00:04:07] da Asia para isso, do Google, EventBridge, PubSub.
[00:04:12] Enfim, tem muita coisa.
[00:04:14] Tem um que eu conheci recentemente no último projeto que eu trabalhei,
[00:04:16] que se chama NETS, N-A-T-S.
[00:04:19] Então, enfim, são várias ferramentas diferentes para a gente fazer isso.
[00:04:22] Alguém produz, alguém consome e alguém intermedia.
[00:04:27] Então, resumidamente, esse é o conceito.
[00:04:30] Pô, beleza.
[00:04:30] A gente tem aqui o conceito claro.
[00:04:32] Eu quero jogar a bola para o resto da galera no seguinte.
[00:04:34] Quando você se vê diante de uma situação em que talvez a resposta para a pergunta
[00:04:39] qual arquitetura eu uso é a orientada a eventos.
[00:04:43] E só para deixar ainda mais explícito para os ouvintes que estão acompanhando a gente,
[00:04:47] ali, de acordo com a explicação do Vini, então,
[00:04:49] uma coisa é usar uma API REST, por exemplo,
[00:04:52] que eu vou fazer uma chamada e o meu programa vai ficar parado
[00:04:55] esperando aquela chamada ser resolvida.
[00:04:57] Até eu receber a minha resposta.
[00:04:59] O Vini e a galera estão trazendo para a gente a ideia, então,
[00:05:01] de não ficar esperando, de ter coisas assíncronas.
[00:05:05] Então, Felipe, Pathy, Tiago,
[00:05:06] quando que a gente vai usar esse tipo de abordagem?
[00:05:09] Ah, eu acho que, assim, primeiro, né,
[00:05:11] a gente precisa entender o que a gente quer resolver.
[00:05:13] Qual é a dor que a gente está sentindo ali?
[00:05:17] O que a gente quer resolver?
[00:05:18] Isso é independente de qualquer coisa, né?
[00:05:21] Mas eu acho que é um estilo arquitetural muito útil, né?
[00:05:25] Se você quer, por exemplo,
[00:05:27] seguir uma estratégia de componentes desacoplados, né?
[00:05:31] E aí eu posso citar um exemplo clássico aqui, né,
[00:05:33] de um cenário de e-commerce, por exemplo,
[00:05:35] onde você faz uma compra, um pedido é gerado,
[00:05:38] ele passa por vários estados gerais,
[00:05:40] como pedido criado, pendente de pagamento,
[00:05:42] pedido pago, em separação, né?
[00:05:44] Então, se você quer que isso tenha uma escala independente,
[00:05:47] para ter mais desempenho,
[00:05:48] e não necessariamente isso ser respondido na hora ali, né?
[00:05:52] Mas em algum determinado momento,
[00:05:54] as aplicações em volta dessa estratégia de arquitetura,
[00:05:56] elas vão começar a reagir a esses eventos
[00:05:59] até que o ciclo, ele em total, chegue no fim, né?
[00:06:02] Essa é uma excelente razão, um caso de uso, né?
[00:06:06] Para você poder estar utilizando essa estratégia, né?
[00:06:08] Eu escalo apenas o que é demandado, né?
[00:06:11] E sem impactar os demais componentes.
[00:06:13] Isso é amplamente utilizado, né?
[00:06:15] Quando a gente quer quebrar essas responsabilidades, né?
[00:06:18] De uma aplicação, por exemplo, monolítica, né?
[00:06:20] Em capabilities isoladas, né?
[00:06:22] Em capacidades de negócios isoladas.
[00:06:24] Então, não só…
[00:06:26] Especificamente, né?
[00:06:28] Esse caso de uso, né?
[00:06:29] Tem outros, por exemplo,
[00:06:30] ah, eu não quero usar REST,
[00:06:31] eu quero simplesmente produzir esses eventos em algum momento
[00:06:34] e eu vou ser notificado.
[00:06:36] Não necessariamente tem que ser voltado a microserviços, né?
[00:06:39] Mas é muito orientado a utilizar em uma arquitetura distribuída.
[00:06:43] Pegando esse gancho,
[00:06:45] para aquela pessoa que está começando com o Event Driven,
[00:06:48] isso já aconteceu comigo.
[00:06:50] Eu faço algumas perguntas que me guiam,
[00:06:52] porque muitas vezes o nosso coração quer usar,
[00:06:56] utilizar o hype, né?
[00:06:58] Para testar, mas…
[00:07:00] Se tratando de uma empresa que precisa gerar resultados,
[00:07:04] aí a gente começa a fazer perguntas de negócio mesmo, assim.
[00:07:08] Tipo, ah, um evento, ele precisa acionar, né?
[00:07:11] Várias coisas diferentes.
[00:07:13] Dá para essas coisas rodarem depois,
[00:07:15] sem travar a resposta?
[00:07:17] E sobre escala e picos?
[00:07:19] A gente está falando de um e-commerce, né?
[00:07:21] Que pode ter, assim,
[00:07:23] picos gigantescos na Black Friday,
[00:07:25] ou em…
[00:07:26] Ou quando tem campanhas de marketing, né?
[00:07:29] A gente vai sofrer rajadas de tráfico?
[00:07:31] Uma fila ajudaria, né?
[00:07:33] A segurar isso?
[00:07:34] A gente tem tarefas caras, lentas?
[00:07:36] E aí, você vai respondendo, muitas vezes,
[00:07:39] o time de negócio ali, o arquiteto,
[00:07:42] ele começa a fazer essas perguntas
[00:07:44] junto ao time de negócio,
[00:07:47] que acaba que direciona essas decisões arquiteturais.
[00:07:52] Eu sempre gosto de passar para os alunos,
[00:07:53] até nas empresas que eu passei, consultoria, tudo.
[00:07:55] A gente tem que entender primeiro qual que é o problema.
[00:07:58] Toda tecnologia, ela veio para resolver algum problema.
[00:08:01] Às vezes, a gente cria um problema para a gente
[00:08:03] e a gente não deveria ter testado aquilo.
[00:08:06] Na questão de event-driven, de arquitetura,
[00:08:09] a gente tem que ver qual que é o budget do projeto,
[00:08:11] qual que é o time to market do projeto.
[00:08:13] Realmente, eu preciso…
[00:08:15] Por exemplo, pensando aqui agora com vocês,
[00:08:17] a gente está falando aqui de um sistema
[00:08:20] para medicina ali para um hospital.
[00:08:23] A gente fala, não, tem que ser algo rápido,
[00:08:24] tem que ser escalável, então eu coloco event-driven por isso.
[00:08:27] Só que ele tem milhões de aquisições,
[00:08:29] a fila processa tudo e tal.
[00:08:31] Entrou uma pessoa que ela não tem cadastro,
[00:08:33] no onboarding.
[00:08:34] Entrou no onboarding, disparou para a fila,
[00:08:36] só que esse cara, ele tem que entrar direto para o TI.
[00:08:38] Só que ele teria que passar pela fila
[00:08:40] por um outro fluxo.
[00:08:41] Como que a gente vai colocar uma prioridade para ele?
[00:08:44] Como que a gente vai?
[00:08:45] Então, a gente tem que ver qual que é o caso de uso,
[00:08:47] qual que é o problema.
[00:08:48] Será que o monolito ou algo que,
[00:08:50] como a gente tinha antigamente ali,
[00:08:52] um cadastro service,
[00:08:54] ou um cadastro repositor que já inserisse ali na hora,
[00:08:56] já não resolveria,
[00:08:58] a gente também tem que ver,
[00:08:59] que é um pouco do que a Pathy falou,
[00:09:00] dessa questão de ter o hype,
[00:09:02] mas ver qual que é o real problema.
[00:09:04] Por que o event-driven, ele ajuda?
[00:09:06] Ele ajuda a gente tirar o autoacoplamento,
[00:09:08] mas, independente da regra de negócios,
[00:09:10] será que não é bom ter um autoacoplamento?
[00:09:12] Será que a parte do SUS,
[00:09:13] porque tem a parte do onboarding,
[00:09:15] tem a parte da UTI,
[00:09:16] será que elas não têm que ser acopladas?
[00:09:18] Então, a gente tem que entender e estudar
[00:09:20] para ver onde a gente vai colocar.
[00:09:22] Mas só um,
[00:09:23] vamos ver,
[00:09:24] para a gente já começar a esquentar e brincar.
[00:09:26] Eu acho que é muito fácil
[00:09:28] a gente cair nessa armadilha pelo hype.
[00:09:31] Então, tem um mini roteiro que eu sempre penso,
[00:09:34] na hora de entender se isso faz sentido ou não.
[00:09:36] Então, por exemplo,
[00:09:37] a primeira coisa que a gente pode se perguntar é,
[00:09:39] se eu preciso,
[00:09:41] se eu tenho vários serviços
[00:09:44] que reagem ao mesmo evento.
[00:09:46] Então, por exemplo,
[00:09:47] se a gente pensar em um processamento de pagamento,
[00:09:50] alguém foi lá e passou o cartão.
[00:09:52] Eu preciso que múltiplos serviços
[00:09:54] reajam a esse evento?
[00:09:55] Talvez sim.
[00:09:56] Será que eu vou rodar um antifraude?
[00:09:58] Será que eu vou ter um outro serviço
[00:09:59] que vai fazer um check se a pessoa tem saldo?
[00:10:02] E por aí vai.
[00:10:03] Então, ou seja,
[00:10:04] talvez você tenha múltiplos serviços
[00:10:06] que vão reagir ao mesmo evento.
[00:10:08] Uma outra coisa também que a gente pode se perguntar,
[00:10:10] está tranquilo se isso não for síncrono?
[00:10:13] Porque assim,
[00:10:14] quando a gente está falando de evento,
[00:10:15] a gente pega alguma coisa que aconteceu
[00:10:17] e coloca em uma fila,
[00:10:18] que já saiu aí no bingo.
[00:10:20] Então, se ela está em uma fila,
[00:10:21] ela está lá esperando ser processada.
[00:10:23] Então, está tudo bem isso não ser assíncrono?
[00:10:26] Está tudo bem quem emitiu o evento
[00:10:28] não esperar para saber o que vai acontecer com ele?
[00:10:31] Isso é essencial.
[00:10:32] Se não está tudo bem,
[00:10:33] talvez um event de driven aqui
[00:10:35] não seja a melhor saída.
[00:10:38] E por aí vai.
[00:10:39] Será que isso aqui vai crescer
[00:10:41] e eu preciso desacoplar essas peças?
[00:10:44] Tiago já falou disso.
[00:10:46] Então, será que eu preciso desse desacoplamento aqui?
[00:10:50] E isso de fato está desacoplado
[00:10:52] e não é um monolito disfarçado?
[00:10:54] Então assim,
[00:10:55] tem que existir esse desacoplamento.
[00:10:58] E eu acho que assim,
[00:10:59] a pergunta principal,
[00:11:00] será que eu estou pronto para lidar com isso?
[00:11:02] Rastrear evento,
[00:11:03] versionar evento,
[00:11:04] monitorar evento,
[00:11:06] o meu time está pronto para lidar com isso?
[00:11:08] A minha infra está pronta para lidar com isso?
[00:11:10] Porque a gente não está falando mais do request e response.
[00:11:13] A gente está falando para evento.
[00:11:15] E no final é,
[00:11:16] será que eu não estou só inventando moda?
[00:11:18] Será que se eu botar um rest,
[00:11:19] isso aqui não resolve?
[00:11:20] Então assim,
[00:11:21] vale refletir antes de cair,
[00:11:23] porque não é uma coisa trivial
[00:11:25] de se mudar depois que está rodando.
[00:11:27] É um commitment,
[00:11:28] é um comprometimento que a gente tem
[00:11:31] que é muito alto,
[00:11:32] se a gente está se comprometendo verdadeiramente com aquilo.
[00:11:35] Então,
[00:11:36] vale a pena a gente parar e analisar,
[00:11:37] será que é isso aqui mesmo?
[00:11:39] Aí se a resposta final for sim,
[00:11:41] você faz check, check, check, check, check.
[00:11:43] Beleza, então vamos lá.
[00:11:44] Vamos para cima.
[00:11:45] E aí sim,
[00:11:46] aí a gente pode passar,
[00:11:48] levar a nossa conversa para o próximo nível,
[00:11:50] que é,
[00:11:51] está decidido que a gente vai usar Event Driven.
[00:11:53] Mas o que a gente vai usar?
[00:11:54] Kafka?
[00:11:55] RabbitMQ?
[00:11:56] É o que?
[00:11:57] Nets?
[00:11:58] É o que?
[00:11:59] É um SQS da vida?
[00:12:00] É um PubSub que até o Redis faz?
[00:12:02] O que a gente vai usar?
[00:12:03] Aí a gente consegue continuar essa conversa.
[00:12:05] Olha,
[00:12:06] eu vou ser provocativa,
[00:12:08] porque eu escuto todo dia,
[00:12:11] porque eu uso Event Driven,
[00:12:13] meus serviços são desacoplados,
[00:12:16] baixo acoplamento.
[00:12:17] Mas,
[00:12:18] olha,
[00:12:19] eu já tive essa experiência.
[00:12:20] Aí eu fui perguntar para entender mais.
[00:12:23] Mas como que tem funcionado aí do seu lado?
[00:12:26] E no final,
[00:12:27] só estava sendo,
[00:12:28] o acoplamento estava sendo empurrado de um lado para o outro.
[00:12:31] Event Driven,
[00:12:32] ele reduz o acoplamento.
[00:12:34] Ok,
[00:12:35] se você souber implementar isso, certo.
[00:12:37] Mas assim,
[00:12:38] aí você empurra o acoplamento de um lado para o outro,
[00:12:41] como eu disse.
[00:12:42] Aí o consumidor ainda depende de outro serviço para responder.
[00:12:46] Entende?
[00:12:47] Event Driven,
[00:12:49] desacoplamento,
[00:12:50] essas palavras bonitas,
[00:12:51] elas existem,
[00:12:52] mas a gente precisa,
[00:12:54] primeiro,
[00:12:55] entendeu?
[00:12:56] O que que são,
[00:12:57] o que que é desacoplamento?
[00:12:58] Muitos falam,
[00:12:59] ah,
[00:13:00] vou usar Event Driven,
[00:13:01] porque eu preciso de serviços desacoplados,
[00:13:03] preciso escalar,
[00:13:04] certo?
[00:13:05] E muitas vezes,
[00:13:06] os profissionais que escolhem,
[00:13:08] eles acabam que nem conseguem fazer o básico,
[00:13:12] que é,
[00:13:13] não entende o que é escalar,
[00:13:14] e não entende o básico do que é um,
[00:13:16] são serviços desacoplados.
[00:13:19] E aqui,
[00:13:20] a gente pode linkar com isso,
[00:13:22] para fazer aqui o bingo,
[00:13:23] que eu vou roubar para bater aqui a minha cartela,
[00:13:25] que a gente começa a falar de coisas do,
[00:13:27] por exemplo,
[00:13:28] idempotência.
[00:13:29] A gente começa a falar difícil aqui,
[00:13:30] para a mamãe ficar orgulhosa.
[00:13:31] Rapaz,
[00:13:32] essa aí,
[00:13:33] nem em inglês,
[00:13:34] nem em português,
[00:13:35] essa é complicada.
[00:13:36] Então,
[00:13:37] porque assim,
[00:13:38] qual que é o rolê,
[00:13:39] dessa idempotência?
[00:13:41] A gente garantir,
[00:13:43] que a operação,
[00:13:44] ela é indepotente,
[00:13:45] ou seja,
[00:13:46] ela pode executar várias vezes,
[00:13:47] e o resultado final,
[00:13:48] vai ser sempre o mesmo.
[00:13:49] Então,
[00:13:50] o que que é uma operação,
[00:13:51] por exemplo,
[00:13:52] que ela é idempotente?
[00:13:53] O like,
[00:13:54] é lá na rede social.
[00:13:55] Se eu posso dar,
[00:13:56] eu posso apertar no like,
[00:13:57] várias vezes,
[00:13:58] e só vai ter uma curtida minha,
[00:13:59] ou vai fazer um toggle.
[00:14:01] Então,
[00:14:02] eu não consigo incrementar,
[00:14:03] para deixar uma peça lá,
[00:14:05] que foi postada com vários likes,
[00:14:07] tem que ser mesmo,
[00:14:08] cada usuário único.
[00:14:09] Mas,
[00:14:10] se eu clicar em adicionar o carrinho,
[00:14:11] várias vezes em um produto,
[00:14:12] ele vai adicionar várias vezes.
[00:14:13] Então,
[00:14:14] ele é o oposto.
[00:14:15] Então,
[00:14:16] olha só o tipo de coisa,
[00:14:17] que a gente tem que se preocupar,
[00:14:18] quando a gente está falando de evento.
[00:14:20] É um mar,
[00:14:21] é uma seara,
[00:14:22] totalmente diferente,
[00:14:23] do que aquela tradicional,
[00:14:25] request,
[00:14:26] response.
[00:14:27] Isso aqui,
[00:14:28] vai muito além,
[00:14:29] daquela briga,
[00:14:30] de se a gente vai usar,
[00:14:31] REST ou GraphQL.
[00:14:32] É um pensamento,
[00:14:33] totalmente diferente.
[00:14:34] Eu acho que,
[00:14:35] com grandes poderes,
[00:14:36] vem grandes responsabilidades.
[00:14:37] Então,
[00:14:38] as responsabilidades,
[00:14:39] são os trade-offs,
[00:14:40] e os desafios,
[00:14:41] que você vai ter,
[00:14:42] utilizando essa abordagem.
[00:14:43] Então,
[00:14:44] um grande ponto,
[00:14:45] de você utilizar,
[00:14:46] Limit Driven,
[00:14:47] você vai ter muito poder.
[00:14:48] Você vai ter muitas opções,
[00:14:49] casos de uso.
[00:14:50] Mas,
[00:14:51] tem sempre o bônus.
[00:14:52] Junto com isso,
[00:14:53] vem alguns problemas,
[00:14:54] que você vai ter que lidar,
[00:14:55] como consistência eventual,
[00:14:56] maior complexidade,
[00:14:57] na hora de depurar.
[00:14:58] Você vai precisar,
[00:14:59] ter uma observabilidade,
[00:15:00] de alta escala,
[00:15:01] distribuída.
[00:15:02] Vai ter que ter,
[00:15:03] uma boa comunicação,
[00:15:04] entre os serviços.
[00:15:05] E,
[00:15:06] assim,
[00:15:07] pela minha experiência,
[00:15:08] nem sempre,
[00:15:09] as coisas,
[00:15:10] vão funcionar,
[00:15:11] como você planeja.
[00:15:12] Em algum momento,
[00:15:13] você vai ter que,
[00:15:14] em algum momento,
[00:15:15] alguma coisa,
[00:15:16] vai falhar.
[00:15:17] Isso é inevitável.
[00:15:18] Um caso de uso legal,
[00:15:19] é que,
[00:15:20] por exemplo,
[00:15:21] você pode ter um cenário,
[00:15:22] onde o pedido,
[00:15:23] ele pode ter sido pago.
[00:15:24] Mas,
[00:15:25] a notificação,
[00:15:26] de confirmação,
[00:15:27] daquele pagamento,
[00:15:28] não chegou.
[00:15:29] E aí,
[00:15:30] como é que você vai resolver?
[00:15:31] Isso é um problema,
[00:15:32] do consumer?
[00:15:33] Foi o produtor?
[00:15:34] Foi o esquema?
[00:15:35] Então,
[00:15:36] assim,
[00:15:37] é necessário,
[00:15:38] ter algumas estratégias,
[00:15:39] em relação,
[00:15:40] a essa,
[00:15:41] abordagem,
[00:15:42] arquitetural.
[00:15:43] Como o mecanismo,
[00:15:44] para fazer uma depuração,
[00:15:45] alto nível.
[00:15:46] Então,
[00:15:47] sempre que,
[00:15:48] a gente for escolher,
[00:15:49] uma abordagem,
[00:15:50] que utiliza,
[00:15:51] Event Driven,
[00:15:52] a gente tem que estar preparado,
[00:15:53] também,
[00:15:54] para os trade-offs.
[00:16:06] Primeiro,
[00:16:07] eu queria dizer,
[00:16:08] que bingo,
[00:16:09] pelo trade-off.
[00:16:10] E segundo,
[00:16:11] eu queria dizer,
[00:16:12] o seguinte,
[00:16:13] a gente tem,
[00:16:14] tecnologias,
[00:16:15] preferidas,
[00:16:16] ou mais adequadas,
[00:16:17] porque a gente,
[00:16:18] está falando aqui,
[00:16:19] de arquitetura,
[00:16:20] só.
[00:16:21] Mas,
[00:16:22] não falamos de tecnologia,
[00:16:23] não falamos de linguagem,
[00:16:24] de programação,
[00:16:25] de quem vai trazer,
[00:16:26] esse broker.
[00:16:27] O Vini citou,
[00:16:28] vários nomezinhos aí,
[00:16:29] falou de MQ,
[00:16:30] falou de Reds,
[00:16:31] falou de não sei o que.
[00:16:32] Tragam para a gente,
[00:16:33] esse panorama,
[00:16:34] o que que tem,
[00:16:35] o que que é usado,
[00:16:36] o que que não é usado,
[00:16:37] qual que vocês amam,
[00:16:38] qual que vocês odeiam.
[00:16:39] Bom,
[00:16:40] eu vou trazer o meu,
[00:16:41] de estimação então,
[00:16:42] o MQ,
[00:16:43] o famoso,
[00:16:44] Rebt MQ.
[00:16:45] Eu acho que,
[00:16:46] ele é o clássico,
[00:16:47] assim,
[00:16:48] eu acho que,
[00:16:49] normalmente,
[00:16:50] se a pessoa,
[00:16:51] está começando ali,
[00:16:52] até mesmo para aprender,
[00:16:53] se a gente pensar,
[00:16:54] em alguém que nunca usou,
[00:16:55] porque eu acho que,
[00:16:56] ele é um dos mais clássicos,
[00:16:57] né?
[00:16:58] Ele tem,
[00:16:59] várias coisas maneiras,
[00:17:00] que ele faz,
[00:17:01] mas ele é,
[00:17:02] acho que,
[00:17:03] o assíncrono,
[00:17:04] mais tradicional,
[00:17:05] do tipo,
[00:17:06] tem lá uma fila,
[00:17:07] de coisas a serem processadas,
[00:17:08] e alguém,
[00:17:09] lá ouvindo essas filas.
[00:17:10] E aí,
[00:17:11] a gente vai se preocupar,
[00:17:12] assim,
[00:17:13] o meu evento,
[00:17:14] precisa carregar o estado,
[00:17:15] ou não?
[00:17:16] Então,
[00:17:17] por exemplo,
[00:17:18] vamos usar lá o Rebt,
[00:17:19] e vamos lá ter uma fila,
[00:17:20] para ser processada.
[00:17:21] Então,
[00:17:22] eu gerei um evento.
[00:17:23] Então,
[00:17:24] qual é o pensamento,
[00:17:25] que a gente vai ter que ter?
[00:17:26] Esse evento,
[00:17:27] vai ter lá dentro,
[00:17:28] todos os dados necessários,
[00:17:29] para quem vai consumir ele.
[00:17:30] Então,
[00:17:31] por exemplo,
[00:17:32] a gente pode ter um evento,
[00:17:33] de usuário registrado.
[00:17:34] O usuário está lá registrado,
[00:17:35] o que eu vou carregar,
[00:17:36] nesse evento?
[00:17:37] O evento,
[00:17:38] ele vai ter de fato,
[00:17:39] os dados do usuário,
[00:17:40] nome,
[00:17:41] CPF,
[00:17:42] vai lá,
[00:17:43] pega esse D,
[00:17:44] e vai buscar lá,
[00:17:45] onde for necessário.
[00:17:46] Então,
[00:17:47] a gente pensa muito mais,
[00:17:48] é um pensamento,
[00:17:49] mais tradicional,
[00:17:50] no sentido de,
[00:17:51] alguma coisa,
[00:17:52] orientada ao evento.
[00:17:53] Então,
[00:17:54] pensando naquelas três pecinhas,
[00:17:55] alguma coisa aconteceu,
[00:17:56] o Rebt,
[00:17:57] foi informado,
[00:17:58] e quem está lá,
[00:17:59] ouvindo,
[00:18:00] vai pegar,
[00:18:01] e vai reagir.
[00:18:02] Então,
[00:18:03] se a gente precisa,
[00:18:04] por exemplo,
[00:18:05] escalar isso,
[00:18:06] a gente coloca mais.
[00:18:07] Beleza,
[00:18:08] eu preciso que essa fila,
[00:18:09] não fica tão grande.
[00:18:10] Eu preciso de mais agilidade aqui.
[00:18:11] Então,
[00:18:12] a gente consegue pensar,
[00:18:13] em coisas assim,
[00:18:14] no sentido mais tradicional.
[00:18:16] Deixa eu pegar um parênteses,
[00:18:17] porque o Thiago,
[00:18:18] tinha comentado,
[00:18:19] aquela hora,
[00:18:20] que alguma coisa,
[00:18:21] pode não funcionar.
[00:18:22] Você tem todo um planejamento,
[00:18:23] mas alguma coisa,
[00:18:24] pode não funcionar.
[00:18:25] Eu queria pegar esse exemplo,
[00:18:26] que você está trazendo,
[00:18:27] e perguntar,
[00:18:28] Thiago,
[00:18:29] o Vini está mandando lá,
[00:18:30] mensagens,
[00:18:31] mensagens,
[00:18:32] mensagens de eventos,
[00:18:33] que aconteceram,
[00:18:34] e ele disse então,
[00:18:35] que isso fica tudo numa fila,
[00:18:36] nesse serviço específico.
[00:18:38] Pode acontecer,
[00:18:39] de quem consome essa fila,
[00:18:41] parar de funcionar,
[00:18:42] por alguma razão.
[00:18:43] O que existe,
[00:18:44] de estratégia,
[00:18:45] de resiliência,
[00:18:46] o que acontece,
[00:18:47] numa hora dessas?
[00:18:48] Bom,
[00:18:49] a gente tem estratégias,
[00:18:50] de retry,
[00:18:51] tem o fluxo da DLQ,
[00:18:52] que é o basicão,
[00:18:53] de quando a gente,
[00:18:54] trabalha com fila,
[00:18:55] e além desses,
[00:18:56] a gente tem que pensar,
[00:18:57] também na coreografia,
[00:18:58] que foi uma das coisas,
[00:18:59] que o Felipe,
[00:19:00] falou aqui.
[00:19:01] Por exemplo,
[00:19:02] a parte de notificar,
[00:19:03] não funcionou,
[00:19:04] a gente vai dar rollback,
[00:19:05] em todos os serviços,
[00:19:06] ou a gente vai usar,
[00:19:07] um saga pattern,
[00:19:08] a gente vai usar,
[00:19:09] alguma coisa,
[00:19:10] para fazer a coreografia,
[00:19:11] mas respondendo,
[00:19:12] a pergunta dele,
[00:19:13] André,
[00:19:14] então a gente tem que fazer,
[00:19:15] alguma estratégia,
[00:19:16] de retry,
[00:19:17] um, dois, três,
[00:19:18] manda para a DLQ,
[00:19:19] algum outro fluxo assim,
[00:19:20] para que a gente,
[00:19:21] não perca a mensagem.
[00:19:22] Voltando,
[00:19:23] para o sistema hospitalar,
[00:19:24] pensa,
[00:19:25] uma mensagem,
[00:19:26] de um órgão,
[00:19:27] não chegou para a pessoa,
[00:19:28] de um transplante,
[00:19:29] travou na fila,
[00:19:30] não foi na DLQ,
[00:19:31] a pessoa não foi notificada,
[00:19:32] é algo crítico,
[00:19:33] eu estou,
[00:19:34] batendo bastante,
[00:19:35] na questão hospitalar,
[00:19:36] que a gente,
[00:19:37] teve uma live,
[00:19:38] esses dias,
[00:19:39] e o pessoal,
[00:19:40] era do Albert Einstein,
[00:19:41] as coisas assim,
[00:19:42] acha que é bem interessante,
[00:19:43] mas olha,
[00:19:44] quantos sistemas críticos,
[00:19:45] existem,
[00:19:46] aí essa questão,
[00:19:47] de mensageria,
[00:19:48] foi uma das pautas,
[00:19:49] que a gente acabou,
[00:19:50] conversando também,
[00:19:51] e vi como eles,
[00:19:52] trabalham bastante,
[00:19:53] com resiliência,
[00:19:54] pensando justamente,
[00:19:55] nesse sentido,
[00:19:56] a DLQ,
[00:19:57] a DLQ não foi,
[00:19:58] já manda para uma outra fila,
[00:19:59] já manda para um tópico,
[00:20:00] já reprocessa,
[00:20:01] já tem um dashboard,
[00:20:02] já tem um alerta,
[00:20:03] tem um Dynatrace,
[00:20:04] é bem interessante mesmo.
[00:20:05] Aproveita,
[00:20:06] que está com a palavra,
[00:20:07] e conta para a gente,
[00:20:08] então,
[00:20:09] a tua tecnologia favorita,
[00:20:10] nesse mundo,
[00:20:11] como ele falou,
[00:20:12] ele tem a questão,
[00:20:13] do Pub Sub,
[00:20:14] mas a gente consegue,
[00:20:15] trabalhar ali,
[00:20:16] com Exchange,
[00:20:17] de outras formas,
[00:20:18] usando Fanout,
[00:20:19] usando Direct,
[00:20:20] Topic,
[00:20:21] Header também,
[00:20:22] ele é o mais simples,
[00:20:23] da gente implementar,
[00:20:24] e pensando,
[00:20:25] no mundo corporativo,
[00:20:26] é o mais simples,
[00:20:27] da gente ensinar também,
[00:20:28] para o pessoal,
[00:20:29] começar a pegar,
[00:20:30] para o pessoal,
[00:20:31] começar a dar manutenção,
[00:20:32] porque não é simplesmente,
[00:20:33] a gente cadastrar ali,
[00:20:34] um broker,
[00:20:35] e beleza,
[00:20:36] está funcionando,
[00:20:37] você mandou a mensagem,
[00:20:38] e voltou,
[00:20:39] tem que saber,
[00:20:40] quando devolver,
[00:20:41] que não processou,
[00:20:42] tem que saber,
[00:20:43] quando reprocessar ali,
[00:20:44] de uma DLQ,
[00:20:45] tem que saber,
[00:20:46] como que funciona,
[00:20:47] a estrutura,
[00:20:48] e tem ali,
[00:20:49] a parte de Ver Host,
[00:20:50] também que funciona,
[00:20:51] muito simples,
[00:20:52] quando a gente vai escalar,
[00:20:53] para serviços,
[00:20:54] dentro do Rabbit,
[00:20:55] então eu acho,
[00:20:56] que ele é o mais completo,
[00:20:57] hoje,
[00:20:58] e o mais simples,
[00:20:59] da gente passar,
[00:21:00] tem a parte de Streaming,
[00:21:01] que também tem agora,
[00:21:02] que era um dos grandes,
[00:21:03] fortes,
[00:21:04] lá do Kafka,
[00:21:05] então eu acho,
[00:21:06] que ele é bem completo,
[00:21:07] simples,
[00:21:08] e tem aquela camada,
[00:21:09] grátis dele,
[00:21:10] até para fazer,
[00:21:11] muito simples,
[00:21:12] então a gente pode ter,
[00:21:13] tanto o ambiente de Dev,
[00:21:14] ali para o pessoal,
[00:21:15] brincar,
[00:21:16] à vontade,
[00:21:17] como a gente pode fazer,
[00:21:18] sistemas de homologação,
[00:21:19] uma versão Trial,
[00:21:20] dependendo do budget,
[00:21:21] da empresa,
[00:21:22] e para produção,
[00:21:23] lindo aí,
[00:21:24] várias Clouds,
[00:21:25] a gente tem ele,
[00:21:26] eu gosto bastante,
[00:21:27] dele mesmo.
[00:21:28] Pô,
[00:21:29] fala sério,
[00:21:30] quando o cara,
[00:21:31] fala Docker,
[00:21:32] o coração,
[00:21:33] sempre dá um quentinho,
[00:21:34] traz uma alegria,
[00:21:35] diferente.
[00:21:36] Paty,
[00:21:37] eu sei que você,
[00:21:38] é a rainha do depende,
[00:21:39] inclusive,
[00:21:40] você sempre fala,
[00:21:41] que você está,
[00:21:42] nesse universo?
[00:21:43] Depende,
[00:21:44] porque,
[00:21:45] brincadeiras à parte,
[00:21:46] mas depende,
[00:21:47] assim,
[00:21:48] eu vou dizer,
[00:21:49] que o meu preferido,
[00:21:50] é o que eu tive,
[00:21:51] mais experiência,
[00:21:52] né,
[00:21:53] eu trabalhei muito,
[00:21:54] com o RabbitMQ,
[00:21:55] o que a galera falou,
[00:21:56] é super verdade,
[00:21:57] né,
[00:21:58] mas quando a gente,
[00:21:59] precisa lidar,
[00:22:00] por exemplo,
[00:22:01] com o fluxo,
[00:22:02] contínuo,
[00:22:03] de milhões de eventos,
[00:22:04] por exemplo,
[00:22:05] blogs,
[00:22:06] chat,
[00:22:07] streaming,
[00:22:08] streaming em geral,
[00:22:09] já,
[00:22:10] o Kafka,
[00:22:11] porque ele é perfeito,
[00:22:12] para esse cenário,
[00:22:13] né,
[00:22:14] então,
[00:22:15] fila,
[00:22:16] tipo,
[00:22:17] não,
[00:22:18] é streaming,
[00:22:19] então,
[00:22:20] é como se fosse,
[00:22:21] transmissão de rádio,
[00:22:22] e a fila,
[00:22:23] não,
[00:22:24] a gente,
[00:22:25] é como se você,
[00:22:26] mandasse uma carta,
[00:22:27] streaming,
[00:22:28] você está,
[00:22:29] transmitindo ali,
[00:22:30] a rádio,
[00:22:31] então,
[00:22:32] foi mais fácil,
[00:22:33] com o Kafka,
[00:22:34] naquele,
[00:22:35] naquele momento,
[00:22:36] e foi Kafka,
[00:22:37] porque,
[00:22:38] eu,
[00:22:39] acho que,
[00:22:40] analisando,
[00:22:41] os prós,
[00:22:42] e contras,
[00:22:43] porque a gente,
[00:22:44] tem que,
[00:22:45] analisar,
[00:22:46] também,
[00:22:47] o know-how,
[00:22:48] do time,
[00:22:49] então,
[00:22:50] como a gente,
[00:22:51] só precisava,
[00:22:52] para,
[00:22:53] para streaming,
[00:22:54] a gente,
[00:22:55] foi para Kafka,
[00:22:56] e jogamos,
[00:22:57] para dentro,
[00:22:58] e falamos,
[00:22:59] assim,
[00:23:00] vamos matar,
[00:23:01] no peito,
[00:23:02] Kafka,
[00:23:03] e deixar,
[00:23:04] o nosso,
[00:23:05] queridinho,
[00:23:06] Rabbit MQ,
[00:23:07] de lado,
[00:23:08] de situação,
[00:23:09] e coisas,
[00:23:10] que acontecem,
[00:23:11] e a gente usa,
[00:23:12] no dia-a-dia,
[00:23:13] e não está ligado,
[00:23:14] eu não vou falar,
[00:23:15] a app,
[00:23:16] mas eu vou contar,
[00:23:17] o caso de uso,
[00:23:18] e vai todo mundo,
[00:23:19] imaginar,
[00:23:20] imagina,
[00:23:21] que a gente,
[00:23:22] tem um cenário,
[00:23:23] onde cada,
[00:23:24] a gente está,
[00:23:25] fazendo streaming,
[00:23:26] de áudio,
[00:23:27] música,
[00:23:28] e a gente,
[00:23:29] precisa,
[00:23:30] ficar reagindo,
[00:23:31] a play,
[00:23:32] pause,
[00:23:33] troca de música,
[00:23:34] porque,
[00:23:35] quando alguém,
[00:23:36] troca de música,
[00:23:37] de áudio,
[00:23:38] ou do som,
[00:23:39] dependendo da qualidade,
[00:23:40] de conexão,
[00:23:41] a gente quer,
[00:23:42] depois de emitir,
[00:23:43] um relatório,
[00:23:44] de quantas pessoas,
[00:23:45] estão ouvindo a música,
[00:23:46] X,
[00:23:47] agora,
[00:23:48] em tempo real,
[00:23:49] então,
[00:23:50] para esse tipo,
[00:23:51] de cenário,
[00:23:52] o Kafka brilha,
[00:23:53] o Nets,
[00:23:54] também,
[00:23:55] tem bastante coisa,
[00:23:56] de stream,
[00:23:57] vale a pena,
[00:23:58] também,
[00:23:59] dar uma olhada,
[00:24:00] mas o Kafka,
[00:24:01] acho perfeito,
[00:24:02] que ele trabalha,
[00:24:03] muito bem,
[00:24:04] com isso,
[00:24:05] então,
[00:24:06] brilha.
[00:24:07] Felipe,
[00:24:08] eu estou me perguntando,
[00:24:09] se na Luisa Lab,
[00:24:10] vocês tem uma,
[00:24:11] bala de prata,
[00:24:12] uma solução,
[00:24:13] para todos os casos,
[00:24:14] em termos tecnológicos,
[00:24:15] mas brincadeira a parte,
[00:24:16] cara,
[00:24:17] qual que é a tua,
[00:24:18] tecnologia favorita?
[00:24:19] É,
[00:24:20] aqui no Labs,
[00:24:21] a gente usa,
[00:24:22] de tudo um pouco,
[00:24:23] tem PubSub,
[00:24:24] tem Wrapped,
[00:24:25] tem Kafka,
[00:24:26] tem Nets,
[00:24:27] também,
[00:24:28] tem,
[00:24:29] dá para brincar,
[00:24:30] com um pouco de tudo,
[00:24:31] assim,
[00:24:32] eu não tenho,
[00:24:33] uma favorita,
[00:24:34] assim,
[00:24:35] para a gente trabalhar,
[00:24:36] com um throughput,
[00:24:37] bem alto,
[00:24:38] de mensagens ali,
[00:24:39] não que o Wrapped,
[00:24:40] também,
[00:24:41] não tenha,
[00:24:42] essa facilidade,
[00:24:43] eu vou muito mais,
[00:24:44] pela,
[00:24:45] necessidade,
[00:24:46] mas,
[00:24:47] se for para,
[00:24:48] empatar o jogo aqui,
[00:24:49] eu vou de Kafka,
[00:24:50] também,
[00:24:51] estou com a parte,
[00:24:52] esse,
[00:24:53] parte aqui.
[00:24:58] E eu quero,
[00:24:59] trazer uma polêmica,
[00:25:00] que o Thiago,
[00:25:01] trouxe lá no começo,
[00:25:02] para vocês debaterem,
[00:25:03] porque o Thiago,
[00:25:04] perguntou,
[00:25:05] se monolito,
[00:25:06] escala,
[00:25:07] ou não,
[00:25:08] é um debate,
[00:25:09] frequente,
[00:25:10] esse aí,
[00:25:11] que,
[00:25:12] quando a solução,
[00:25:13] pode ser um monolito,
[00:25:14] conta para a gente,
[00:25:15] Thiago,
[00:25:16] a origem da provocação,
[00:25:17] cara.
[00:25:18] Esse é,
[00:25:19] um assunto,
[00:25:20] de todas as mesas,
[00:25:21] né,
[00:25:22] assim,
[00:25:23] a gente acaba sendo,
[00:25:24] tipo,
[00:25:25] monolito,
[00:25:26] escala,
[00:25:27] não,
[00:25:28] eu trabalhei,
[00:25:29] por alguns anos,
[00:25:30] na TV Bandeirantes,
[00:25:31] lá,
[00:25:32] e cara,
[00:25:33] era monolito,
[00:25:34] com,
[00:25:35] picture,
[00:25:36] tudo,
[00:25:37] e,
[00:25:38] escalava,
[00:25:39] escalava,
[00:25:40] só que escalava,
[00:25:41] em máquina,
[00:25:42] né,
[00:25:43] eu lembro,
[00:25:44] até hoje,
[00:25:45] um sistema,
[00:25:46] que a gente fez,
[00:25:47] que era,
[00:25:48] o Central de Mídia,
[00:25:49] a gente,
[00:25:50] teve uma evasão,
[00:25:51] lá,
[00:25:52] dos anônimos,
[00:25:53] lá,
[00:25:54] eu lembro,
[00:25:55] que foi o CQC 3.0,
[00:25:56] eles desafiaram,
[00:25:57] os anônimos,
[00:25:58] foi a noite toda,
[00:25:59] a gente tentando,
[00:26:00] enfim,
[00:26:01] bloquear,
[00:26:02] todos os acessos,
[00:26:03] mas ele escala,
[00:26:04] mas ele escala,
[00:26:05] com um certo custo,
[00:26:06] né,
[00:26:07] cara,
[00:26:08] e era on-premise,
[00:26:09] ainda,
[00:26:10] essas,
[00:26:11] essas VMs,
[00:26:12] todas,
[00:26:13] ou,
[00:26:14] tudo on-premise,
[00:26:15] caraca,
[00:26:16] esse dia,
[00:26:17] foi louco,
[00:26:18] a gente,
[00:26:19] não tinha nada,
[00:26:20] de cloud,
[00:26:21] foi bem interessante,
[00:26:22] mesmo,
[00:26:23] mas olha,
[00:26:24] escalar para cima,
[00:26:25] e escalar,
[00:26:26] é,
[00:26:27] não é,
[00:26:28] é verdade,
[00:26:29] e a parte interessante,
[00:26:30] é que,
[00:26:31] também,
[00:26:32] o sistema,
[00:26:33] esse lá,
[00:26:34] que a gente tinha,
[00:26:35] que ele tem,
[00:26:36] cinco funcionalidades,
[00:26:37] três devs,
[00:26:38] um exemplo,
[00:26:39] é mais fácil,
[00:26:40] de escalagem,
[00:26:41] da manutenção,
[00:26:42] do que,
[00:26:43] se a gente tivesse,
[00:26:44] cinco microserviços,
[00:26:45] porque,
[00:26:46] cada um,
[00:26:47] dando manutenção,
[00:26:48] o outro,
[00:26:49] acaba quebrando,
[00:26:50] então,
[00:26:51] quando for pensar,
[00:26:52] escalar,
[00:26:53] a gente,
[00:26:54] também,
[00:26:55] tem que pensar,
[00:26:56] do lado da empresa,
[00:26:57] em sentido,
[00:26:58] de escalar,
[00:26:59] aplicação,
[00:27:00] em sentido,
[00:27:01] com custo,
[00:27:02] como o Vini falou,
[00:27:03] para cima.
[00:27:04] Boa,
[00:27:05] e uma outra parada,
[00:27:06] que eu acho que vem junto,
[00:27:07] quando a gente está falando,
[00:27:08] sobre Event Driven,
[00:27:09] é como é que a gente vai usar,
[00:27:10] e organizar,
[00:27:11] o nosso código,
[00:27:12] porque a gente está falando,
[00:27:13] de um paradigma,
[00:27:14] diferente,
[00:27:15] então,
[00:27:16] não é aquele,
[00:27:17] Controller Model,
[00:27:18] Controller Repository Model,
[00:27:19] como é que a gente,
[00:27:20] vai fazer isso,
[00:27:21] e aí,
[00:27:22] eu vou jogar aqui,
[00:27:23] uma sopa de letrinha,
[00:27:24] porque eu quero ouvir,
[00:27:25] da galera,
[00:27:26] também,
[00:27:27] o que eles têm,
[00:27:28] de favorito,
[00:27:29] na hora de escolher,
[00:27:30] separar ali,
[00:27:31] e fazer tudo direitinho,
[00:27:33] tem a galera aqui,
[00:27:34] para fechar o bingo,
[00:27:35] que usa CQRS,
[00:27:36] para organizar,
[00:27:37] que eu acho muito bacana,
[00:27:38] quando a gente está falando,
[00:27:39] de Event Driven,
[00:27:40] tem a galera,
[00:27:41] que vai lá,
[00:27:42] mais do DDD,
[00:27:43] tem a galera,
[00:27:44] que vai no Saga,
[00:27:45] que o Thiago já falou,
[00:27:46] e tem a galera,
[00:27:47] também,
[00:27:48] que eu já ouvi,
[00:27:49] também,
[00:27:50] que funciona bem,
[00:27:51] eu nunca vi em produção,
[00:27:52] mas a hexagonal,
[00:27:53] para usar,
[00:27:54] Event Driven,
[00:27:55] eu queria saber vocês,
[00:27:56] o que vocês estão usando,
[00:27:57] ou então,
[00:27:58] é no Go Horse,
[00:27:59] é um mononito,
[00:28:00] tem que entregar muito.
[00:28:01] Vini,
[00:28:02] faltaram duas aí,
[00:28:03] Vertical Slice,
[00:28:04] que é o que o pessoal,
[00:28:05] tem utilizado bastante,
[00:28:06] refaturação de monolito,
[00:28:07] vai quebrando,
[00:28:08] os pedacinhos ali,
[00:28:09] para poder escalar,
[00:28:10] então eles utilizam,
[00:28:11] essa abordagem de Feature,
[00:28:12] e a Onion,
[00:28:13] também,
[00:28:14] que o pessoal,
[00:28:15] foi um hype ali,
[00:28:16] acho que se não me engano,
[00:28:17] 2019,
[00:28:18] 2021,
[00:28:19] mas a gente,
[00:28:20] ainda tem alguns,
[00:28:21] eu não vou dizer,
[00:28:22] que é legado,
[00:28:23] porque é pouco tempo,
[00:28:24] mas são alguns,
[00:28:25] meio legadinho aí,
[00:28:26] que a gente,
[00:28:27] também tem ali,
[00:28:28] bastante com Onion.
[00:28:29] Mas Thiago,
[00:28:30] é o Onion,
[00:28:31] porque é em camadas,
[00:28:32] ou é o Onion,
[00:28:33] que a gente bota a mão,
[00:28:34] e chora?
[00:28:35] Eu,
[00:28:36] vou falar a verdade,
[00:28:37] que eu já peguei alguns,
[00:28:38] nos dois sentidos,
[00:28:39] porque,
[00:28:40] o pessoal,
[00:28:41] é o Onion,
[00:28:42] daí tentou colocar ali,
[00:28:43] um Solid,
[00:28:44] aí já mexeu,
[00:28:45] com procedural,
[00:28:46] nossa,
[00:28:47] mas,
[00:28:48] falando,
[00:28:49] de uma arquitetura,
[00:28:50] que eu vejo bastante,
[00:28:51] nas empresas,
[00:28:52] é o Clean Arc,
[00:28:53] eu vejo o pessoal,
[00:28:54] utilizar muito,
[00:28:55] pela facilidade,
[00:28:56] manutenção,
[00:28:57] e escala dele,
[00:28:58] é tranquilo,
[00:28:59] a hexagonal,
[00:29:00] acaba ficando,
[00:29:01] aquele tanque de guerra,
[00:29:02] né?
[00:29:03] É muita coisa,
[00:29:04] para um microserviço,
[00:29:05] um contexto,
[00:29:06] um boundary de contexto,
[00:29:07] só,
[00:29:08] então acaba quebrando,
[00:29:09] mas a galera,
[00:29:10] vem utilizando bastante,
[00:29:11] também,
[00:29:12] o Vertical Slice,
[00:29:13] por conta das features,
[00:29:14] que eles vão,
[00:29:15] migrando dos monolitos,
[00:29:16] e falando ali,
[00:29:17] do Onion,
[00:29:18] acaba ficando,
[00:29:19] entre o Onion,
[00:29:20] e entre o Clean Arc,
[00:29:21] que eles tem ali,
[00:29:22] praticamente,
[00:29:23] o mesmo paradigma,
[00:29:24] a mesma ideia,
[00:29:25] só que um fatia,
[00:29:26] e o outro,
[00:29:27] pode vir de um lado,
[00:29:28] para o outro,
[00:29:29] acaba utilizando,
[00:29:30] o Clean Arc,
[00:29:31] por conta da facilidade,
[00:29:32] até na hora,
[00:29:33] de explicar ali,
[00:29:34] tudo,
[00:29:35] para o pessoal,
[00:29:36] que é mais Junior.
[00:29:37] Na minha experiência,
[00:29:38] eu vejo o Clean Arc,
[00:29:39] porque assim,
[00:29:40] a gente vai separar,
[00:29:41] o domínio da infra,
[00:29:42] beleza,
[00:29:43] ports e adapters,
[00:29:44] mas,
[00:29:45] antes disso,
[00:29:46] antes de escolher,
[00:29:47] como a gente vai organizar,
[00:29:48] eu,
[00:29:49] geralmente,
[00:29:50] trabalho,
[00:29:51] eu preciso,
[00:29:52] pôr o negócio,
[00:29:53] no centro,
[00:29:54] né?
[00:29:55] Então,
[00:29:56] eu trabalho,
[00:29:57] por exemplo,
[00:29:58] com o Domain Driven Design,
[00:29:59] porque,
[00:30:00] quando eu vou fazer,
[00:30:01] de negócio,
[00:30:02] e aí,
[00:30:03] quando,
[00:30:04] chega na parte,
[00:30:05] de escolher,
[00:30:06] como que eu vou organizar,
[00:30:07] esse código,
[00:30:08] aí,
[00:30:09] fica bem mais fácil,
[00:30:10] de enxergar,
[00:30:11] se vai ser,
[00:30:12] Exxon,
[00:30:13] ou Clean,
[00:30:14] né?
[00:30:15] Então,
[00:30:16] ajuda,
[00:30:17] o DDD,
[00:30:18] ele ajuda a modelar,
[00:30:19] em termos,
[00:30:20] de domínios,
[00:30:21] ou subdomínios,
[00:30:22] e aí,
[00:30:23] fica,
[00:30:24] redondinho,
[00:30:25] só para a gente,
[00:30:26] justificar,
[00:30:27] com fortes argumentos,
[00:30:28] para o time,
[00:30:29] para organizar,
[00:30:30] esse coração,
[00:30:31] do negócio.
[00:30:32] Vocês,
[00:30:33] falaram,
[00:30:34] de Júnior,
[00:30:35] falamos,
[00:30:36] de profissionais,
[00:30:37] e eu queria,
[00:30:38] ir agora,
[00:30:39] para o desenvolvimento,
[00:30:40] da carreira,
[00:30:41] de cada pessoa,
[00:30:42] porque,
[00:30:43] dentre os ouvintes,
[00:30:44] que estão acompanhando a gente,
[00:30:45] tem galera,
[00:30:46] que nem de Tec,
[00:30:47] é,
[00:30:48] mas da galera,
[00:30:49] de Tecnologia,
[00:30:50] alguns,
[00:30:51] saíram ali,
[00:30:52] da faculdade,
[00:30:53] ou de um curso,
[00:30:54] que fizeram,
[00:30:55] dominando bem,
[00:30:56] uma arquitetura,
[00:30:57] orientada,
[00:30:58] para as pessoas,
[00:30:59] trabalham,
[00:31:00] em empresas,
[00:31:01] onde,
[00:31:02] não tem a oportunidade,
[00:31:03] por uma questão,
[00:31:04] de negócio mesmo,
[00:31:05] de se trabalhar,
[00:31:06] com outra arquitetura,
[00:31:07] o que vocês,
[00:31:08] recomendariam,
[00:31:09] o que dá,
[00:31:10] para fazer,
[00:31:11] para essa pessoa,
[00:31:12] conseguir estudar,
[00:31:13] conseguir treinar,
[00:31:14] porque a gente,
[00:31:15] está falando,
[00:31:16] de cenários,
[00:31:17] super macro,
[00:31:18] nossa,
[00:31:19] tantas chamadas,
[00:31:20] numa Black Friday,
[00:31:21] escalei,
[00:31:22] para tantas máquinas,
[00:31:23] isso,
[00:31:24] é simulável,
[00:31:25] antes de chegar,
[00:31:26] essa hora?
[00:31:27] Assim é,
[00:31:28] tem uma parada,
[00:31:29] que a gente chama,
[00:31:30] de teste de carga,
[00:31:31] só que,
[00:31:32] é um ponto importante,
[00:31:33] por exemplo,
[00:31:34] esses dias,
[00:31:35] eu estava até,
[00:31:36] conversando,
[00:31:37] com um amigo meu,
[00:31:38] que trabalha,
[00:31:39] numa empresa de varejo,
[00:31:40] e eles,
[00:31:41] estavam repensando isso,
[00:31:42] porque eles,
[00:31:43] estavam fazendo,
[00:31:44] o teste de carga,
[00:31:45] justamente,
[00:31:46] para Black Friday,
[00:31:47] só que,
[00:31:48] imagina o custo,
[00:31:49] porque assim,
[00:31:50] a gente,
[00:31:51] está falando,
[00:31:52] de um teste,
[00:31:53] de muitas requisições,
[00:31:54] de muita gente usando,
[00:31:55] milhões,
[00:31:56] vai escalar,
[00:31:57] tudo,
[00:31:58] vai escalar,
[00:31:59] para cima,
[00:32:00] e a gente vai medir,
[00:32:01] o impacto,
[00:32:02] se você vai aguentar,
[00:32:03] se não vai.
[00:32:04] Mas,
[00:32:05] e essa etapa anterior,
[00:32:06] Vini,
[00:32:07] assim,
[00:32:08] como alguém,
[00:32:09] que hoje entende,
[00:32:10] orientado a eventos,
[00:32:11] começa a se preparar,
[00:32:12] para chegar uma hora,
[00:32:13] na carreira,
[00:32:14] e poder,
[00:32:15] ofertar isso,
[00:32:16] ali no seu currículo,
[00:32:17] né?
[00:32:18] Ah,
[00:32:19] boa,
[00:32:20] então,
[00:32:21] eu acho que,
[00:32:22] assim,
[00:32:23] se a gente,
[00:32:24] está pensando,
[00:32:25] em saber tudo,
[00:32:26] mas entender um,
[00:32:27] vai te ajudar,
[00:32:28] mover mais fácil,
[00:32:29] para os outros,
[00:32:30] se precisar.
[00:32:31] Então,
[00:32:32] dá uma olhada,
[00:32:33] lá no RabbitMQ,
[00:32:34] e dá para fazer,
[00:32:35] uma brincadeira local,
[00:32:36] aqui,
[00:32:37] produzindo,
[00:32:38] e consumindo eventos,
[00:32:39] dá para ter uma noção.
[00:32:40] Então,
[00:32:41] acho que vale a pena,
[00:32:42] ter uma bagagenzinha,
[00:32:43] de fazer um curso,
[00:32:44] entender como funciona,
[00:32:45] e ter uma brincadeira,
[00:32:46] lá no GitHub.
[00:32:47] Se a gente,
[00:32:48] está falando aqui,
[00:32:49] de uma pessoa,
[00:32:50] que está ali,
[00:32:51] no meio da jornada,
[00:32:52] mid,
[00:32:53] né,
[00:32:54] então,
[00:32:55] o RabbitMQ,
[00:32:56] legal,
[00:32:57] mas vamos dar uma olhada,
[00:32:58] numa solução de stream,
[00:32:59] vamos conhecer,
[00:33:00] o que as principais,
[00:33:01] provedoras de cloud,
[00:33:02] tem,
[00:33:03] então,
[00:33:04] aumentar aqui,
[00:33:05] um leque,
[00:33:06] e quando a gente,
[00:33:07] está falando,
[00:33:08] de senioridade,
[00:33:09] mais alta,
[00:33:10] a pessoa,
[00:33:11] tem que bater,
[00:33:12] esse papo,
[00:33:13] aqui,
[00:33:14] que a gente,
[00:33:15] está tendo,
[00:33:16] agora.
[00:33:17] Eu preciso,
[00:33:18] usar EventDriven?
[00:33:19] Eu sei,
[00:33:20] que,
[00:33:21] usar EventDriven,
[00:33:22] é o clássico,
[00:33:23] de mudar,
[00:33:24] a forma de pensar,
[00:33:25] e como que a gente,
[00:33:26] vai fazer aqui,
[00:33:27] as nossas partes,
[00:33:28] do nosso sistema.
[00:33:29] Então,
[00:33:30] a pessoa,
[00:33:31] tem que estar pronta,
[00:33:32] para medir,
[00:33:33] se no final,
[00:33:34] essa conta,
[00:33:35] vai fechar positiva,
[00:33:36] vamos para EventDriven,
[00:33:37] ou não,
[00:33:38] não vai fechar positivo,
[00:33:39] ou mesmo,
[00:33:40] quando alguém,
[00:33:41] vem com uma decisão,
[00:33:42] acontece muito isso,
[00:33:43] no mundo corporativo,
[00:33:44] alguém,
[00:33:45] vem com uma decisão,
[00:33:46] de cima para baixo,
[00:33:47] dizendo que,
[00:33:48] vamos usar EventDriven,
[00:33:49] e aí,
[00:33:50] às vezes,
[00:33:51] está todo mundo,
[00:33:52] pensando mesmo,
[00:33:53] que a gente precisa disso,
[00:33:54] vamos rever isso,
[00:33:55] vamos,
[00:33:56] oh,
[00:33:57] será?
[00:33:58] Olha aqui,
[00:33:59] olha aqui,
[00:34:00] olha esse lado,
[00:34:01] olha isso,
[00:34:02] que a gente,
[00:34:03] vai ter que tomar conta,
[00:34:04] olha esse sistema aqui,
[00:34:05] que não está preparado,
[00:34:06] para isso.
[00:34:07] Então,
[00:34:08] quanto mais senioridade,
[00:34:09] mais a pessoa,
[00:34:10] tem que estar pronta,
[00:34:11] para discutir,
[00:34:12] não discutir,
[00:34:13] de sair no braço,
[00:34:14] mas,
[00:34:15] conversar sobre essa,
[00:34:16] se essa,
[00:34:17] é a melhor opção,
[00:34:18] ou não.
[00:34:19] Eu acho que,
[00:34:20] se a pessoa,
[00:34:21] eu acho que,
[00:34:22] primeiro,
[00:34:23] o que eu recomendo,
[00:34:24] não comece,
[00:34:25] pela tecnologia,
[00:34:26] primeiro,
[00:34:27] se pergunte,
[00:34:28] o que eu preciso,
[00:34:29] resolver,
[00:34:30] qual que é a dor,
[00:34:31] acho que,
[00:34:32] principalmente,
[00:34:33] também,
[00:34:34] estudar fundamentos,
[00:34:35] o que é um evento,
[00:34:36] qual que é a diferença,
[00:34:37] entre um comando,
[00:34:38] um evento,
[00:34:39] uma query,
[00:34:40] diferença entre,
[00:34:41] eventos de notificação,
[00:34:42] o que é EventSourcing,
[00:34:43] por exemplo,
[00:34:44] que isso,
[00:34:45] vai acabar pegando,
[00:34:46] um pouco,
[00:34:47] quem utiliza EventDriven,
[00:34:48] e,
[00:34:49] principalmente,
[00:34:50] conceito de Publishing,
[00:34:51] e Subscriber,
[00:34:52] que é o conceito,
[00:34:53] central ali,
[00:34:54] quando a gente está falando,
[00:34:55] de EventDriven.
[00:34:56] Acho que,
[00:34:57] fazer prova,
[00:34:58] de conceito,
[00:34:59] também,
[00:35:00] para entender,
[00:35:01] o que aquilo,
[00:35:02] vai agregar,
[00:35:03] no que você está construindo,
[00:35:04] como produto,
[00:35:05] dentro da empresa,
[00:35:06] principalmente,
[00:35:07] ter muita força,
[00:35:08] de vontade,
[00:35:09] porque,
[00:35:10] hoje em dia,
[00:35:11] cada hora,
[00:35:12] cada segundo,
[00:35:13] que passa,
[00:35:14] tem uma tecnologia,
[00:35:15] nova,
[00:35:16] tem,
[00:35:17] um processo,
[00:35:18] novo,
[00:35:19] de arquitetura,
[00:35:20] sendo criado,
[00:35:21] sabe,
[00:35:22] pegar muito,
[00:35:23] se pegar muito,
[00:35:24] nos fundamentos.
[00:35:25] É isso,
[00:35:26] é começar,
[00:35:27] pelo fundamento,
[00:35:28] que nem a gente,
[00:35:29] começou falando,
[00:35:30] às vezes,
[00:35:31] a pessoa,
[00:35:32] não sabe,
[00:35:33] nem o que é,
[00:35:34] um desacoplamento,
[00:35:35] ela não sabe,
[00:35:36] nem o que é,
[00:35:37] escalar,
[00:35:38] quando a gente,
[00:35:39] fala assim,
[00:35:40] por que,
[00:35:41] que não escala,
[00:35:42] o que é,
[00:35:43] esse não escalar,
[00:35:44] trabalha,
[00:35:45] quando a gente,
[00:35:46] está mandando,
[00:35:47] 10 mensagens,
[00:35:48] trabalha bem,
[00:35:49] mas,
[00:35:50] então,
[00:35:51] esses fundamentos,
[00:35:52] eles são realmente,
[00:35:53] muito importantes,
[00:35:54] porque,
[00:35:55] a gente precisa,
[00:35:56] ter o discernimento,
[00:35:57] porque,
[00:35:58] tem várias ferramentas,
[00:35:59] muita gente,
[00:36:00] pode estar perguntando,
[00:36:01] agora,
[00:36:02] eu tenho que usar,
[00:36:03] tudo isso,
[00:36:04] eu tenho que usar,
[00:36:05] o broker,
[00:36:06] eu tenho que,
[00:36:07] eu tenho que usar,
[00:36:08] event search,
[00:36:09] sagas,
[00:36:10] ordenação,
[00:36:11] o resto,
[00:36:12] todo,
[00:36:13] não,
[00:36:14] não necessariamente,
[00:36:15] mas,
[00:36:16] dentro dessa,
[00:36:17] sopa de letrinha,
[00:36:18] todos,
[00:36:19] usa o broker,
[00:36:20] mas, também,
[00:36:21] trabalhe,
[00:36:22] com observabilidade,
[00:36:23] então,
[00:36:24] tem que entender,
[00:36:25] ali,
[00:36:26] o chão,
[00:36:27] para aí,
[00:36:28] a gente pegar,
[00:36:29] nossa caixinha,
[00:36:30] de ferramenta,
[00:36:31] e olhar,
[00:36:32] o que nós temos,
[00:36:33] lá dentro,
[00:36:34] de acordo,
[00:36:35] com o cenário,
[00:36:36] que eu tenho,
[00:36:37] porque,
[00:36:38] nem sempre,
[00:36:39] a gente precisa,
[00:36:40] usar sagas,
[00:36:41] a gente não precisa,
[00:36:42] usar event searching,
[00:36:43] porque,
[00:36:44] o broker,
[00:36:45] ele resolve,
[00:36:46] muito bem,
[00:36:47] a ordenação,
[00:36:48] é simples,
[00:36:49] então,
[00:36:50] sim,
[00:36:51] fundamento,
[00:36:52] em primeiro lugar,
[00:36:53] segundo,
[00:36:54] fazer perguntas,
[00:36:55] perguntas,
[00:36:56] abrem caminhos,
[00:36:57] e,
[00:36:58] essas perguntas,
[00:36:59] elas direcionam,
[00:37:00] ah,
[00:37:01] realmente,
[00:37:02] eu tenho,
[00:37:03] que suportar,
[00:37:04] um cenário,
[00:37:05] que eu preciso,
[00:37:06] fazer,
[00:37:07] rebobinar,
[00:37:08] a fita,
[00:37:09] eu tenho,
[00:37:10] que ver,
[00:37:11] toda a história,
[00:37:12] do evento,
[00:37:13] por x,
[00:37:14] y,
[00:37:15] z,
[00:37:16] ah,
[00:37:17] isso aí,
[00:37:18] vem de ser,
[00:37:19] se uma coisa,
[00:37:20] vai puxar na outra,
[00:37:21] e é natural.
[00:37:22] Boa,
[00:37:23] pegando então,
[00:37:24] a pergunta do André,
[00:37:25] tem um pedaço da fala dele,
[00:37:26] que falou,
[00:37:27] para o pessoal,
[00:37:28] que é programador,
[00:37:29] e não programador,
[00:37:30] como que eles conseguem,
[00:37:31] colocar em prática,
[00:37:32] porque não programador,
[00:37:33] hoje,
[00:37:34] com a evolução daí,
[00:37:35] a gente tem o vibe code,
[00:37:36] então,
[00:37:37] um amigo meu,
[00:37:38] devops,
[00:37:39] ele mostrou a arquitetura,
[00:37:40] que ele mostrou,
[00:37:41] que ele criou lá,
[00:37:42] com o vibe code,
[00:37:43] eu falei,
[00:37:44] interessante,
[00:37:45] você sabe,
[00:37:46] a linguagem,
[00:37:47] é uma maneira,
[00:37:48] de estar,
[00:37:49] também,
[00:37:50] sendo não programador,
[00:37:51] a gente está construindo,
[00:37:52] aplicações hoje,
[00:37:53] com esse grande hype aí,
[00:37:54] do vibe code,
[00:37:55] com a evolução da IA,
[00:37:56] das ideias,
[00:37:57] dos modelos,
[00:37:58] de inteligência artificial,
[00:37:59] mas,
[00:38:00] como que alguém,
[00:38:01] que está começando agora,
[00:38:02] ou na carreira,
[00:38:03] consegue estar colocando,
[00:38:04] essa sopa de letrinhas,
[00:38:05] ou,
[00:38:06] está se especializando,
[00:38:07] nessas ferramentas,
[00:38:08] eu vejo da mesma forma,
[00:38:09] que há 10,
[00:38:10] 20,
[00:38:11] 30 anos atrás,
[00:38:12] mesmo com a parte de IA,
[00:38:13] tem que estudar,
[00:38:14] tem que entender,
[00:38:15] qual que é,
[00:38:16] essa ferramenta,
[00:38:17] porque que ela foi criada,
[00:38:18] o que que ela vai resolver,
[00:38:19] eu sempre gostei,
[00:38:20] de passar para os meus times,
[00:38:21] que primeiro,
[00:38:22] você tem que entender,
[00:38:23] a ferramenta,
[00:38:24] para que depois,
[00:38:25] você possa sugerir ela,
[00:38:26] você não tem que aprender,
[00:38:27] a ferramenta,
[00:38:28] quando você tem um problema,
[00:38:29] você tem que entender antes,
[00:38:30] qual que são,
[00:38:31] suas ferramentas,
[00:38:32] isso vai te tornar,
[00:38:33] um sênior,
[00:38:34] eu conheço,
[00:38:35] tudo que eu tenho que fazer,
[00:38:36] eu sei todas as ferramentas,
[00:38:37] que eu posso utilizar,
[00:38:38] no momento,
[00:38:39] que eu vou precisar utilizar,
[00:38:40] porque ali,
[00:38:41] no momento,
[00:38:42] que acontecer um problema,
[00:38:43] a gente vai fazer a solução,
[00:38:44] mais rápida possível,
[00:38:45] e se não tiver,
[00:38:46] pronto,
[00:38:47] não vai dar,
[00:38:48] mas pô,
[00:38:49] como que eu penso assim,
[00:38:50] eu faço Jiu Jitsu,
[00:38:51] há um tempo,
[00:38:52] e é no Jiu Jitsu,
[00:38:53] a gente treina,
[00:38:54] treina, treina,
[00:38:55] para quando está no momento,
[00:38:56] de um campeonato,
[00:38:57] está no momento,
[00:38:58] de uma determinada situação,
[00:38:59] a gente já aplica,
[00:39:00] eu não aprendi ali na hora,
[00:39:01] a oportunidade veio,
[00:39:02] porque eu me especializei,
[00:39:03] eu tentei antes,
[00:39:04] e pensando hoje,
[00:39:05] no pessoal que está com,
[00:39:06] inteligência artificial,
[00:39:07] pô,
[00:39:08] como que o pessoal,
[00:39:09] vai conseguir entrar no mercado,
[00:39:10] como o pessoal,
[00:39:11] vai conseguir fazer,
[00:39:12] da mesma forma que antes,
[00:39:13] pessoal,
[00:39:14] estudem,
[00:39:15] e coloquem no GitHub,
[00:39:16] só assim,
[00:39:17] vocês vão ter,
[00:39:18] um leque de opções,
[00:39:19] quando vocês forem fazer,
[00:39:20] uma sugestão,
[00:39:21] no brainstorming,
[00:39:22] no refinamento técnico,
[00:39:23] em alguma reunião,
[00:39:24] com pessoas mais sêniores,
[00:39:25] para não acontecer,
[00:39:26] o cenário que eu vim,
[00:39:27] e falou,
[00:39:28] alguém vir com top down,
[00:39:29] tem que usar isso,
[00:39:30] bom,
[00:39:31] mas tem que usar isso,
[00:39:32] por quê?
[00:39:33] Eu vi,
[00:39:34] que em tal cenário,
[00:39:35] usar isso,
[00:39:36] pode ser ruim,
[00:39:37] por conta de tal coisa,
[00:39:38] acompanhar podcasts,
[00:39:39] acompanhar lives,
[00:39:40] para ver,
[00:39:41] experiências de outras pessoas,
[00:39:42] porque,
[00:39:43] como você já passou,
[00:39:44] umas duas,
[00:39:45] três vezes ainda,
[00:39:46] o que funcionou,
[00:39:47] naquela situação,
[00:39:48] para mim,
[00:39:49] não vai funcionar,
[00:39:50] para todo mundo,
[00:39:51] um exemplo,
[00:39:52] eleição de 2000,
[00:39:53] aquela Lula,
[00:39:54] versus Bolsonaro,
[00:39:55] lá,
[00:39:56] que foi umas eleições,
[00:39:57] que bombou bastante,
[00:39:58] eu estava na TV Bandeirantes,
[00:39:59] e caiu,
[00:40:00] porque o Google,
[00:40:01] estava junto com a gente,
[00:40:02] e eles anunciaram,
[00:40:03] e a parte de cadastro,
[00:40:04] nossa,
[00:40:05] não aguentou,
[00:40:06] para fazer o cadastro,
[00:40:07] e a parte,
[00:40:08] de ir para a live,
[00:40:09] o quê que a gente fez?
[00:40:10] A gente estava usando,
[00:40:11] o Azure Container Apps,
[00:40:12] que era uma ferramenta,
[00:40:13] que eu já tinha ido,
[00:40:14] numa live da Microsoft,
[00:40:15] umas semanas antes,
[00:40:16] eu tinha testado,
[00:40:17] então,
[00:40:18] porque eu tinha testado,
[00:40:19] eu coloquei rápido,
[00:40:20] de,
[00:40:21] a cada cinco,
[00:40:22] containerizados,
[00:40:23] que eu colocava,
[00:40:24] eu conseguia escalar,
[00:40:25] para 50,
[00:40:26] 10,
[00:40:27] 20,
[00:40:28] 30,
[00:40:29] então,
[00:40:30] foi algo,
[00:40:31] que eu já tinha testado antes,
[00:40:32] a gente conseguiu colocar,
[00:40:33] se não tivesse testado antes,
[00:40:34] a gente não conseguiria,
[00:40:35] ter entregue ali,
[00:40:36] o debate,
[00:40:37] que foi,
[00:40:38] algo explosão,
[00:40:39] na época,
[00:40:40] lá na TV Bandeirantes,
[00:40:41] então,
[00:40:42] foi até um case,
[00:40:43] para a gente,
[00:40:44] mas por quê?
[00:40:45] Eu estudei antes,
[00:40:46] eu sou,
[00:40:47] então,
[00:40:48] estudem,
[00:40:49] entendam a funcionalidade,
[00:40:50] o porquê,
[00:40:51] porque quando chegar,
[00:40:52] o que eu preciso,
[00:40:53] você já sabe,
[00:40:54] o como eu vou fazer,
[00:40:55] porque se for esperar ali,
[00:40:56] na hora,
[00:40:57] vai dar branco,
[00:40:58] vai dar dor de barriga,
[00:40:59] vai dar dor de cabeça,
[00:41:00] vai dar desespero,
[00:41:01] e vai vir a solução,
[00:41:02] que alguém pensou,
[00:41:03] a solução mais forte,
[00:41:04] possível,
[00:41:05] ou que nem,
[00:41:06] a gente brinca,
[00:41:07] quando os chats alucinam,
[00:41:08] apaga o código,
[00:41:09] vai vir aquela coisa,
[00:41:10] absurda,
[00:41:11] alucinada,
[00:41:12] porque não são,
[00:41:13] os modelos de ar,
[00:41:14] que alucinam,
[00:41:15] a gente também alucina,
[00:41:16] aquela solução,
[00:41:17] que lá na frente,
[00:41:18] vai ser cobrada,
[00:41:19] vai estancar ali,
[00:41:20] no momento,
[00:41:21] mas mais para frente,
[00:41:22] vai trazer problema,
[00:41:23] e fazendo já,
[00:41:24] um jabazinho aí,
[00:41:25] a gente tem,
[00:41:26] dois cursos,
[00:41:27] na Postec,
[00:41:28] que eu coordeno lá,
[00:41:29] que é arquitetura de software,
[00:41:30] que a gente passa,
[00:41:31] desde Domain Driven Design,
[00:41:32] arquitetura,
[00:41:33] por isso que eu passei,
[00:41:34] bastante ali,
[00:41:35] Vertical Slice,
[00:41:36] que é,
[00:41:37] um dos pontos,
[00:41:38] que eu gosto bastante,
[00:41:39] arquitetura hexagonal,
[00:41:40] estou finalizando,
[00:41:41] meu livro agora,
[00:41:42] na Casa do Código,
[00:41:43] já, já,
[00:41:44] vou postar aí também,
[00:41:45] então a gente passa,
[00:41:46] até a parte,
[00:41:47] de deploys,
[00:41:48] de escala,
[00:41:49] tudo,
[00:41:50] e também,
[00:41:51] na nossa pós de IA,
[00:41:52] que é um pouco,
[00:41:53] do que eu falei aqui,
[00:41:54] o que é um modelo de IA,
[00:41:55] como trabalhar,
[00:41:56] com modelo de IA,
[00:41:57] se eu uso Cursor,
[00:41:58] ou VS Code,
[00:41:59] com Copilot,
[00:42:00] já estou trabalhando,
[00:42:01] com IA,
[00:42:02] não,
[00:42:03] você tem que usar,
[00:42:04] uma biblioteca,
[00:42:05] um link chain,
[00:42:06] você tem que saber,
[00:42:07] o que é virtualização,
[00:42:08] você tem que saber,
[00:42:09] o que é RAG,
[00:42:10] então a gente tem,
[00:42:11] esses pontos,
[00:42:12] para que pessoal,
[00:42:13] para ensinar,
[00:42:14] o básico,
[00:42:15] ensinar os fundamentos,
[00:42:16] do que a gente precisa,
[00:42:17] mesmo aí,
[00:42:18] no dia a dia pessoal,
[00:42:19] e tudo com vivência,
[00:42:20] e experiência,
[00:42:21] e a galera,
[00:42:22] que chegou até aqui,
[00:42:23] eu espero,
[00:42:24] que a galera,
[00:42:25] não esteja achando,
[00:42:26] que Event Driven,
[00:42:27] é a solução divina,
[00:42:28] para todos os problemas,
[00:42:29] porque a gente,
[00:42:30] nem falou,
[00:42:31] de autenticação,
[00:42:32] autorização,
[00:42:33] tem uma parada,
[00:42:34] que é um desespero,
[00:42:35] quando a gente,
[00:42:36] está falando de evento,
[00:42:37] que é Denial of Service,
[00:42:38] porque às vezes,
[00:42:39] é uma fila pública,
[00:42:40] e alguém quer derrubar,
[00:42:41] o seu serviço,
[00:42:42] e ela solta,
[00:42:43] um milhão de bot,
[00:42:44] lá publicando,
[00:42:45] a sua fila,
[00:42:46] e são tudo,
[00:42:47] mais de flores,
[00:42:48] aqui não,
[00:42:49] tem que estar,
[00:42:50] bem antenada,
[00:42:51] para usar direitinho.
[00:42:52] E principalmente,
[00:42:53] segurança,
[00:42:54] que hoje em dia,
[00:42:55] é imprescindível,
[00:42:56] você está,
[00:42:57] trafegando dados,
[00:42:58] ali pela rede,
[00:42:59] é mais um complemento,
[00:43:00] além disso,
[00:43:01] que o Vinícius falou,
[00:43:02] principalmente segurança,
[00:43:03] trafegar,
[00:43:04] informações,
[00:43:05] dados com segurança.
[00:43:06] Estou vendo,
[00:43:07] que a solução para isso,
[00:43:08] vai ser a gente,
[00:43:09] já marcar um papo,
[00:43:10] com esse mesmo time aqui,
[00:43:11] para a gente conversar,
[00:43:12] sobre então,
[00:43:13] os problemas,
[00:43:14] escolhi uma arquitetura,
[00:43:15] e agora,
[00:43:16] vamos papar,
[00:43:17] como eu tenho que correr,
[00:43:18] eu queria agradecer,
[00:43:19] demais,
[00:43:20] a todos vocês,
[00:43:21] que acompanharam,
[00:43:22] o nosso papo,
[00:43:23] até agora,
[00:43:24] que se interessam,
[00:43:25] por esses assuntos,
[00:43:26] às vezes,
[00:43:27] um pouco mais aprofundados,
[00:43:28] do mundo da tecnologia,
[00:43:29] e do desenvolvimento,
[00:43:30] e agradecer também,
[00:43:31] ao Tiago,
[00:43:32] a Paty,
[00:43:33] ao Felipe,
[00:43:34] ao Vini,
[00:43:35] por terem ajudado,
[00:43:36] a gente aqui,
[00:43:37] explicado tanto,
[00:43:38] e dado uma verdadeira aula,
[00:43:39] e você viu,
[00:43:40] que durante o papo todo,
[00:43:41] surgiram,
[00:43:42] dicas de materiais,
[00:43:43] até de uma pós-graduação,
[00:43:44] a pós-tec,
[00:43:45] a gente vai deixar,
[00:43:46] você,
[00:43:47] aqui na descrição,
[00:43:48] desse episódio,
[00:43:49] mas eu quero,
[00:43:50] que você dê,
[00:43:51] o seu like,
[00:43:52] e também,
[00:43:53] recomende,
[00:43:54] para um amigo,
[00:43:55] ou para uma amiga,
[00:43:56] hipsters,
[00:43:57] a gente se vê,
[00:43:58] na próxima semana,
[00:43:59] até mais.
[00:44:00] Este podcast,
[00:44:01] foi produzido,
[00:44:02] pela Alura,
[00:44:03] Mergulhe,
[00:44:04] em Tecnologia,
[00:44:05] e Faculdade FIAP,
[00:44:06] Let’s Rock,
[00:44:07] the Future.
[00:44:16] Edição,
[00:44:18] Rede Gigahertz,
[00:44:19] de Podcasts.