Bom pessoal, no vídeo anterior eu falei aqui pra vocês quando que a gente pode optar para trabalhar com microserviços e eu acho que deu pra deixar claro que pra trabalhar com microserviços você precisa de grandes desenvolvedores, necessidade de escala diferente, resolver problemas com arquiteturas e sistemas diferentes tudo isso é importante porém, o que que acontece todas as vezes que você for trabalhar com micro serviços, eu quero te provocar sobre algumas tecnologias ou pontos importantes que você tem que levar em consideração que a sua equipe, que o seu time deve saber, se o seu time não souber esses tipos de coisa, provavelmente eu prefiro sofrer um pouco com monolito, com muita gente trabalhando, do que fazer isso e virar o caos com micro serviços. Então vamos colar aqui alguns pontos importantes como provocação para você trabalhar ali com micro serviços. Então vamos lá, provocação, o mínimo para trabalhar com micro serviço então vamos lá provocação o mínimo para trabalhar com micro serviços primeira coisa o seu time tá ele tem que ter maturidade tá pra trabalhar um pipeline de organização de pipeline de se a e se de tá container registry hoje em dia você tem que entender de containers né você tem que entender muito bem de arquitetura de software apesar de arquitetura de software para criar monolitos também é importante mas quando a gente tá indo para micro serviços você tem que conhecer ainda mais você tem que ter uma ótima base de arquitetura de soluções porque você não vai estar mais preso apenas um código vai ser você vai estar preso a um ecossistema e pra isso entender de arquitetura de solução é importante você vai ter que entender muito mas muito bem sobre comunicação assíncrona tá ou seja não é mais aquela chamada direta rest que você vai fazer em outros micro serviços você vai poder até fazer tá mas cada vez que você faz uma chamada direta você gera um acoplamento e fica mais complexo ainda de você ter resiliência no seu sistema legal pra trabalhar com comunicação assíncrona você tem que entender de mensagem de brokers sistemas de string de dados e aí eu tô falando de apache cáfrica a revit mq active mq a gente está falando de sqs pub sub a gente está falando de sns tem diversos mensagens de brokers aí outra coisa importantíssima apesar de a gente também pode ter isso em monolitos mas com micro serviços você eleva isso a décima potência é trabalhar com concorrência tá você muitas vezes têm micro serviços concorrendo pelos principais serviços que você vai trabalhar imagina que você tem um sistema de tickets que várias pessoas vão querer comprar como eu consigo garantir que ninguém vai comprar a último ticket mais de uma vez como que eu consigo alugar um quarto de hotel como que eu consigo fazer buscas em diversos hotéis para trazer o preço mais barato como que eu consigo evitar né que eu vou ter uma grande concorrência no meu banco de dados né e junto com tudo isso você vai ter que entender um pouco mais sobre mutex sobre mútua exclusão você vai ter que entender mais sobre o rei com dígitos você vai ter que entender como você trabalha com lotes pessimista lotes otimistas lote distribuído isso é um dos pontos mais importantes porque até então então, concorrência, até mesmo sistemas monolíticos têm. Mas trabalhar com lote distribuído, você precisa quando você está em um ambiente distribuído. Legal? Você vai ter que aprender a trabalhar com cache distribuído, e daí a gente tem os mais diversos tipos de cache. Legal? Outra coisa, você vai ter que ter um banco de dados para cada microserviço, Outra coisa, você vai ter que ter um banco de dados para cada microserviço. Porque se o seu microserviço precisa ser autônomo, ele precisa ser independente, outro microserviço não vai poder ter acesso a esse banco de dados e degradar esse seu serviço. Então, outros microserviços só vão ter acesso aos seus dados através do microserviço e não mais diretamente através do banco de dados. Porém, nesse momento, você começa a ter outras dificuldades que com sistemas monolíticos você não vai ter. Por exemplo, como que eu faço relatórios? Se eu tenho diversos bancos de dados e cada pedaço dos dados que eu tenho estão cada um em um microserviço diferente, como que eu gero relatórios? Eu gero um microserviço para relatório ou eu trabalho com event sourcing, eu trabalho com flat tables para eles irem preenchendo os relatórios conforme os eventos vão chegando? Então, são várias nuances que você vai ter que entender. Cada vez mais, você vai ter que entender mais sobre domain-driven design. Não somente para você criar código, mas para você entender escopos. Legal? Para você falar a mesma língua daquele escopo. Por último aqui, a gente tem a parte de observabilidade. Logs. Trabalhar com logs, todo mundo fala que é fácil. Eu boto o log lá no stdout, boto ali um new relic, um datadog, um dynatrace, não interessa qual é o cara que eu vou utilizar, e depois eu acesso os logs. Mas, quando você trabalha com microserviços, os seus logs, eles precisam estar totalmente padronizados para você conseguir fazer buscas e cruzamento de logs entre microserviços do seu sistema de observabilidade. Então, padronização de logs é algo extremamente complexo e é muito difícil você entrar num consenso, principalmente quando você tem uma arquitetura baseada em microserviços, com um monte de microserviços funcionando. Ok? Métricas, mesma coisa. Você vai ter que ter métricas daquele micro serviço em específico, porém essas métricas podem também ser necessárias para outros micro serviços. E baseado nessas métricas, você pode querer pegar anomalias. nessas métricas, você pode querer pegar anomalias. Hoje em dia, os sistemas de observabilidade, eles têm gerenciamento ou apontamentos de anomalia. E para fazer isso de forma cruzada, é um pouco mais complexo. E por último, e não menos importante, é a parte de tracing. Quando você tem um problema, você tem o seu stack trace dentro do seu sistema monolito nada do seu sistema monolítico e você consegue debulgando agora e se o seu sistema começa a dar problema e ele começa a dar problema você não sabe aonde ele deu problema e se ele se você descobriu aonde que ele deu problema ele deu problema em um outro microserviço que não é você que desenvolveu, você vai ter que falar com outra equipe. E para isso você precisa de tracing distribuído, você tem que passar um contexto, um ID entre microserviços para você conseguir identificar a request, isso a gente chama normalmente de correlation ID. Então, se você perceber, galera, isso aqui é um monte de buzzword que eu passei aqui, mas é uma buzzword importante para você ter noção da complexidade que é de trabalhar com micro serviços. Agora, não é, porque existe esse grau de complexidade, que é algo impossível de saber e que é algo que você tem que saber tudo de uma vez. Mas é importante você saber para você começar a estruturar seu ambiente. É aquela história do piloto de avião. Você tem milhares de botões ali que o piloto tem que saber apertar. Para o avião decolar, para ir e tudo mais. Mas, o que acontece? Ele não precisa utilizar todos aqueles botões ao mesmo tempo. É a mesma coisa que acontece com o microserviço. Você não precisa saber tudo isso ao mesmo tempo. Entende o que eu estou dizendo dizendo mas você vai precisar saber é essa a mensalidade a mentalidade que eu quero trazer pra você você vai ter que saber essas paradas não tudo ao mesmo tempo nem sempre você vai usar tudo ao mesmo tempo também mas é importante porque a partir de agora você vai ter um road map para você estudar, para você aprender mais, para que quando você começar a trabalhar com seus microserviços, ou se você já trabalha com seus microserviços, você já vai ter um grau maior de maturidade e não vai sair falando de boca cheia que trabalha com microserviços. de boca cheia que trabalha com micro serviços. Você vai falar isso de uma forma muito consciente, de entendendo o porquê você está utilizando cada uma das coisas. Legal? Então, essa provocação não é para assustar, não é para inibir. É saber que tudo isso é um botão diferente no avião. Você não vai apertar todos de uma vez, mas invariavelmente, em algum momento, você vai ter que apertar eles. E é importante você saber. Bacana? É isso aí, galera. Um grande abraço e até o nosso próximo vídeo.