Bom pessoal, agora que a gente olhou esses três pontos, vamos fazer um pequeno exercício aqui de visualização. Olhando essa imagem aqui, pode parecer algo muito simples, algo que a gente está acostumado. Se você não está, uma hora você vai estar acostumado a ver um produtor, um tópico e um consumidor. Ou seja, esses caras aqui estão falando de forma assíncrona tá muitas vezes a sua aplicação ela tem que produzir dados ea sua é essa mesma aplicação ela tem que consumir dados é a coisa mais comum do mundo tá o grande ponto é que nesse momento quando você olha você tem que começar a fazer algumas perguntas. Quais são as dependências que a minha aplicação tem? Como é que os módulos dessa minha aplicação funcionam? E como que essa aplicação está alocada? Onde ela está conectada? Pensando nesse princípio, olhando para essa imagem, vai falar poxa ok faz sentido mas eu vou fazer uma alteração aqui que eu quero que você veja e eu tenho certeza que muitos de vocês estão olhando isso trabalham dessa forma olha só que interessante vou pegar esse consumidor vou colocar ele aqui Vou colocar ele aqui. Vou criar uma aura de agrupamento entre esses caras. O que isso significa? Significa que a coisa mais comum do mundo é que, quando você tem uma aplicação que produz algo e consome algo, e eu não estou falando que ela consome algo dela mesma ou qualquer coisa desse tipo, mas que ela tem o ato de produzir, que ela tem o ato de consumir, normalmente a gente acaba colocando isso dentro da mesma unidade de software, dentro do mesmo módulo e etc. Por que normalmente a gente faz isso? Porque é aqui onde estão as bibliotecas que a gente consegue falar com o mundo externo, sei lá, com a Apache Kafka, por exemplo. Entendeu? Então, pelo fato da biblioteca de produção normalmente se a mesma biblioteca de consumo tanto o produtor eo consumidor normalmente eles fazem parte do mesmo módulo e quando isso acontece você começa a ter um acoplamento muito ruim porque porque o produtor de uma informação pode influenciar no consumidor que em tese teria que ser totalmente desconectado do consumidor entende é muito comum a gente vê isso talvez no seu código hoje isso aconteça você tem um módulo lá esse módulo você coloca o produtor o consumidor e eles ficam consumindo de tópicos diferentes e tudo mais mas eles estão no mesmo lugar quando eles estão no mesmo lugar um tem a outra tem influência sobre o outro né então o que você tem que pensar é que os módulos de consumo eles precisam ser segregados do de produtos de produção de dados e eu vou mais longe tá a unidade computacional do de consumo ela tem que ser segregada do de produto de produção o que significa cria um processo isolado de consumo cria um outro processo isolado de produto não mistura esses produtos esses processos numa única num único o workload porque isso vai acontecer porque se der um problema no consumo você vai parar de produzir e se você tiver um problema na hora da produção você vai parar de consumir é muito comum você tem alguns frameworks que conseguem fazer com que você consuma e que você produza ao mesmo tempo é mega comum e você falar tem a minha aplicação eu sou ela está consumindo e produzindo mas isso aí pode gerar um problema danado tá então mesmo que você vai usar a mesma aplicação tá você separa o consumo e o produto módulos diferentes e crie dois workloads um para consumo para produto e que eles rodem de forma independente. Então, quando você começa a olhar, você fala, poxa vida, isso aqui é a coisa mais comum do mundo, na hora de olhar. Mas na hora que você dá um zoom e faz aquelas perguntas de módulos, de dependência, como que as coisas funcionam, você vai começar a perceber que as coisas não estão rodando dessa forma. Quando você olha a locação, quando você olha os módulos, quando você olha a forma de como eles se conectam, você vai perceber que uma coisa está junto da outra e aí você vai começar a ter novamente o problema de acoplamento. Então, tome cuidado com o que você desenha. Comece a verificar se o que você desenha realmente é o que acontece no seu software. Por isso que quando a gente olha o software mais ou menos dessa forma, ou com um diagrama C4, ou qualquer coisa desse tipo, você vai perceber que você está desenhando uma coisa, mas na realidade você tem outra. E você tem a falsa sensação de estar arquitetando corretamente a sua aplicação. Legal? Então, era isso aí. É só um exercício mental aqui que eu queria que você fizesse nesse ponto. Vamos nessa.