Bom pessoal, eu falei bastante sobre como que a comunicação assíncrona nos ajuda a gente economizar recurso computacional. E agora eu quero mostrar aqui para vocês o comportamento disso ali na prática, mostrando a gente consumindo uma carga de trabalho e verificando quanto tempo isso demora para ser processado. E aí a gente consegue ver o poder da comunicação assíncrona para que você consiga utilizar no dia a dia. Como que funciona essa dinâmica aqui, galera? Eu tenho uma aplicaçãoicação depois eu vou deixar o endereço aí pra vocês tá pra você trabalhar e poder trabalhar com comunicação assíncrona ela foi feita pelo meu amigo gago luís carlos faria tá cara bem forte na comunidade do atleta e ele criou esse exemplo aqui pra que você de uma forma um pouco mais clara consiga ver né a possibilidade de você trabalhar de forma assim como o que que fica aqui por trás de tudo isso é uma aplicação que está rodando aí ele desenvolveu com c sharp nós temos aí o rei tmq a gente vai falar um pouco dele depois nós temos também o grafana onde a gente consegue ver dashboard ea gente tem também o post como banco de dados onde ele guarda as informações a serem consumidos tá como é que funciona isso aqui galera o negócio é o seguinte vamos imaginar que eu tenho uma certa carga de trabalho que tem que ser processada por uma unidade de processamento. Legal? Então, o que acontece? Olha só que interessante. Vamos imaginar que eu tenho, por exemplo, 10 sistemas mandando requisição para a minha aplicação. Mas a minha aplicação não tem capacidade de processar 10 pessoas ao mesmo tempo. Essas 10 pessoas ao mesmo tempo vão mandar aqui para a gente 10 mensagens por segundo. Então significa aqui que eu vou ter 100 mensagens por segundo para ser processada. Então o que eu vou fazer? Eu vou adicionar uma carga de trabalho aqui, que vai nos trazer aqui então né 10 máquinas produzindo 10 mensagens por segundo aqui pra mim eu tenho 10 máquinas mandando 10 mensagens por segundo agora o grande ponto é o seguinte eu não tenho ninguém consumindo essas mensagens então se eu tivesse trabalhando de forma síncrona eu estaria perdendo todas essas mensagens porque eu tenho sistema fora do ar. Olha só, a cada segundo eu estaria perdendo 100 mensagens. 1 milhão de reais por mensagem, a gente estaria perdendo 100 milhões de reais por segundo. Olha só, galera, como isso é importante. Como que eu consigo ver isso na prática? Se eu olhar aqui, eu tenho o Grafana. O Grafana é um sistema que nos mostra aqui informações em tempo real do que está acontecendo com o nosso sistema. Então, se você olhar aqui, ele vai trazer aqui para a gente o tamanho da fila ou seja o tamanho da quantidade de mensagens que foi chegando e ao invés de ele a gente perder essas mensagens essa mensagem ficou guardada ali numa fila num local onde essas mensagens elas não são perdidas se você olhar aqui pra gente você vai perceber que eu já tenho aqui 7.412 mensagens nesse momento que estão paradas tá para algum sistema consumir legal então olha só galera se nesse momento eu tivesse trabalhado de forma assíncrona, eu estaria, querendo ou não, perdendo quase agora 10 mil mensagens. Agora, como essas mensagens estão enfileiradas, o que vai acontecer, simplesmente, eu não vou perder essas mensagens. E agora eu vou querer começar a consumir essas mensagens. Então, o que acontece aqui? Se você olhar aqui, nesse gráfico verde, eu tenho aqui a minha capacidade de publicação. Ou seja, eu estou conseguindo publicar aqui 100% das minhas mensagens, mas eu não estou consumindo nenhuma mensagem. Então, agora, o que eu vou fazer? Eu vou pegar aqui e colocar que eu tenho 5 máquinas, 5 instâncias capazes de processar 10 mensagens por segundo. Então eu vou adicionar aqui esses caras. Vamos aguardar um pouquinho, porque o meu sistema, querendo ou não, ele fica mais sobrecarregado, porque ele está processando, mandando tudo isso de mensagem, e eu ainda estou gravando o vídeo, e agora sim, então eu tenho 100 mensagens sendo enviadas por segundo, e eu tenho 50 mensagens por segundo sendo consumidas. Então, nesse momento, se eu for olhar aqui o meu grafana, a gente já vai ver que a gente tem uma situação um pouco diferente. Por quê? Porque nós temos aqui agora um processamento das nossas mensagens. Está vendo? Então, agora a coisa está mudando um pouco de figura. Por quê? Porque simplesmente nós podemos pegar essas mensagens. Então agora, se você começar a perceber, eu estou conseguindo consumir isso de mensagens e eu tenho agora essa capacidade de publicação de mensagens. Ou seja, eu estou consumindo menos mensagens do que eu estou publicando. Mas pelo menos eu estou conseguindo consumir. Você vai perceber que de forma geral o tamanho dessa fila só vai começar a subir. Por quê? Porque simplesmente eu estou consumindo menos mensagens do que eu estou publicando. Agora a gente vai fazer uma mudança tá eu vou falar que eu consigo publicar é consumir 200 mensagens por segundo em uma outra instância então eu vou adicionar agora aqui ea gente vai perceber agora que eu tenho a capacidade de ler, de consumir 250 mensagens por segundo, enquanto eu tenho a capacidade de produzir 100 mensagens por segundo. Então agora a coisa muda de figura, por quê? Porque agora eu consigo consumir mais, ou seja, 250 mensagens enquanto só público sem mensagens aqui pra mim então você vai perceber que o tamanho da minha fila agora ela vai tender a a diminuir e o porquê porque eu consigo consumir mais mensagens do que eu começo a publicar o mais interessante de tudo isso é que baseado né é nessas estatísticas aqui eu tenho um tempo médio de processamento o que significa que a até tantos segundos, eu consegui publicar, processar as minhas mensagens. Então aqui mostra para a gente, sabe aquela história que eu falei para vocês da fila do banco? Eu consigo ver ali para mim o quanto tempo as pessoas que estão na fila vão poder ser atendidas. E aí, baseado nisso, eu vou ver se para mim compensa ou não colocar mais atendentes. Quanto mais atendente eu coloco, mais gente eu consigo resolver o problema. Em menos tempo essas pessoas vão ter que esperar. Mas quanto mais atendentes eu coloco, mais vou gastar então o que isso significa significa que eu como empresa principalmente em relação à decisão de negócio eu vou fazer o que eu vou decidir o quanto eu eu vou gastar, o quanto que eu tenho de orçamento e eu vou tentar balancear a satisfação do meu cliente com o custo que eu vou ter que colocar. E isso no final do dia vale para uma fila de atendimento ali no check-in do aeroporto, mas também vale para o processamento das cargas de trabalho que os seus sistemas vão fazer. Vamos imaginar que eu acabei de fazer uma compra no seu e-commerce, tá? E aí eu faço o pagamento. Como eu estou trabalhando de forma assíncrona, pode ser que eu vá demorar, sei lá, um minuto para conseguir processar seu pagamento. E assim que eu conseguir processar, eu te mando um e-mail falando que a sua compra foi aprovada. Eu não sei se você já fez uma compra, por exemplo, sei lá, numa Amazon da vida, você vai perceber que ele não fala se a sua compra foi aprovada de cara ou não. O que ele fala é ordem de serviço realizada, pedido realizado. E se tiver algum problema com o pagamento, quem vai receber o e-mail porque porque eles não querem gastar né e a processar isso de forma síncrona tá porque eles não precisam no final das contas tá então olha só que interessante aqui ele tá mostrando aqui para gente né quanto tempo ele tá demorando para processar essa mensagem desde quando ela foi criada. Olha só que interessante. E aqui a gente consegue ver a fila sendo diminuída cada vez mais ali para a gente. Agora, existem algumas situações que isso provavelmente não vai ser possível. Eu vou dar um exemplo aqui para vocês. Imagina que você vai comprar um ingresso do show do youtube sei lá do coldplay né da kate perry sei lá um artista muito famoso e aí eles abrem tá as a as vendas online para comprar tem tanta gente acessando ao mesmo tempo que o que vai acontecer? Quando você comprar o ingresso ele vai querer processar o pagamento naquele momento para você. Por quê? Porque se o seu pagamento não for aprovado você vai saber na hora para você refazer seu pagamento para você não perder o ingresso. Porque se ele processar só daqui a um minuto, pode ser que durante esse minuto outras pessoas comprem o bendito do ingresso e você fez um pedido e depois vai ter perdido o ingresso. Olha só que loucura, entende? Ou a mesma coisa, sei lá, com passagem aérea. Um avião tem um espaço limitado dentro ali da aeronave então se na hora que eu comprar eu não consegui garantir a minha passagem naquele momento o que vai acontecer pode ser que eu perca essa oportunidade de compra então existem casos que a comunicação assínconar ela não vai receber seu problema mas por exemplo né vamos imaginar que existe a compra do ingresso pode ser que ele segure você ali numa fila é síncrona pra fazer a compra mas depois que ele comprou ele manda por um monte de processamento assíncrono para gerar o bilhete, para gerar a nota fiscal, para mandar o e-mail de boas-vindas. Então, tudo isso pode ser assíncrono. E daí, o pagamento tem que ser assíncrono para ele garantir que você fez a compra naquele momento. Então, para vocês perceberem como é importante vocês entenderem quando você pode utilizar uma comunicação sí sincrona ou assíncrona mas normalmente quando a gente está falando com o cliente final a decisão que vai poder ser sincrona ou assíncrona vai ser uma decisão muito mais de negócio tá agora quando você tem micro serviços que ficam processando mensagens ali tudo em background eu recomendo que você sempre utilize comunicação assíncrona tá olha só que bacana o tamanho da fila fica normalmente aí perto de 250 porque ele vai publicando e o sistema vai lendo e agora você vai perceber que cada vez mais o tempo de finalização de leitura de uma mensagem até o seu processamento, ela começa a diminuir, porque eu tenho mais sistemas com poder computacional vendo as mensagens do que sistemas produzindo as mensagens. Então isso aqui é importante. A gente tem cinco caras, mas um deles aqui tem 200 mensagens por segundo. Se eu coloco mais um cara com 200 mensagens por segundo, aí a coisa vai complicar, porque eu vou ter agora 300 mensagens sendo publicadas e 250 sendo consumidas. E agora a gente vai perceber que o tamanho da fila ela vai continuar só subindo porque eu tenho menos capacidade de publicação de equipe de leitura de consumo dessas mensagens mas se pra mim tiver ok beleza tá o grande ponto é que as pessoas pessoas que vão resolver receber esse problema vão demorar mais para processar a mensagem. E dependendo da situação, está tudo bem. Então agora basta você conseguir balancear a volumetria que você vai ter. Bacana? Então toda vez que você pensar em comunicação assíncrona, você tem que pensar nisso que eu estou te mostrando agora. E como que você consegue fazer isso normalmente? Por teste de descarga, por teste de estresse, para você ver como está o comportamento do seu sistema. Se você não tiver essas métricas facilmente, pode ser que você tenha um problema muito grande. E aí é por isso que ter esse tipo de informação nos sistemas quando você trabalha de forma assíncrona é muito importante. Bacana? Então é isso aí que eu queria ter te mostrado. Um grande abraço e até o nosso próximo vídeo.