Bom pessoal, no nosso vídeo anterior, eu mostrei para vocês tanto o Jaeger e o Zipkin aqui, trazendo os dados de tracing. Agora, como que isso aqui foi desenvolvido? Então, vamos lá. Primeira coisa que eu quero que você perceba é que aqui no Docker Compose, eu subi um serviço do Jaeger e subi um serviço do Zipkin aqui para a gente. Eu subi um serviço do Jaeger e subi um serviço do Zipkin aqui para a gente. Agora, um outro serviço que eu subi aqui, se você perceber, é o Hotel Collector, que é o Open Telemetry Collector. O Open Telemetry Collector, o que eu passei, se você perceber? Eu passei um arquivo de configuração. E é nesse arquivo de configuração que eu falo para ele pegar os dados de telemetria que a minha aplicação está recebendo e jogar no Jaeger e no Zipkin e no Prometheus aqui também. O Prometheus recebe métricas, tá, galera? Só para vocês saberem aqui também. Bacana? Então é basicamente isso que acaba acontecendo aqui nesse caso. Agora, alguns pontos que são importantes para você entender. Como que é esse arquivo? Então se eu chegar aqui no meu código, e aí eu for aqui em .docker, você vai ver aqui que eu tenho um hotel collector config. Esse cara aqui é o cara que faz a configuração do collector. Então o que ele está falando? Olha, eu vou receber os dados utilizando o gRPC e eu tenho alguns exporters aqui para eu trabalhar. Um exporter é pegar todos os dados e jogar para o Prometheus. O outro exporter é para pegar os logs. Lembrando que a parte de login em muitos SDKs ainda estão sendo desenvolvidos. Um outro exporter é o Zipkin, que eu vou mandar os dados utilizando o protofile, protocol buffer, para o Zipkin. E o outro dado, o outro exporter que eu vou utilizar é mandar os dados pelo Jaeger. E aqui eu posso ter processadores, por quê? Imagina o seguinte, que todos os dados que eu estou processando tem um CPF, mas lá no log eu não quero que o CPF apareça. Então, o que eu posso fazer? Eu posso ter um processador que, aos poucos, ele passa por uma série de pipelines e que ele vai escondendo dados, ele vai formatando dados, ele vai ajustando esses dados, ele vai mandando dados em mais de um lugar e etc. Então, eu tenho o processador, eu tenho as extensões que ele verifica health check aqui pra gente e os serviços tá ou seja os serviços ele vai mandar esses dados por essa pipeline perceba que nas pipelines que eu tenho eu tenho uma pipeline de traces e eu tenho uma pipeline de métricas. O que eu tenho no tracing? O receiver, que é esse cara aqui de cima, que vai receber os dados. Aí ele vai processar os dados, que é a parte de batch, nesse caso ele não está fazendo transformação. E quais são os exporters? Ele está mandando dados de log, dados para o Zipkin e dados para o Jaeger aqui para a gente. E a métricas, ele está usando o mesmo receiver, o mesmo processor, e ele está mandando os dados aqui somente para o Prometheus. Legal? Então é basicamente isso que ele está pegando para mandar os dados. Ou seja, todos os nossos microserviços estão mandando dados para esse receiver aqui, usando o protocolo GRPC, que é um protocolo extremamente rápido, muito pequeno, os dados que são trafegados nele, e que normalmente é recomendado para você usar ao invés de ficar mandando dados via HTTP, que acaba sendo muito mais lento. Não que o GRPC não use HTTP, mas ele utiliza protocol buffers e trabalha com HTTP2 para trabalhar com os dados ainda menores. Legal? Então, essa que é a ideia de como o Collector funciona. Eu tenho o Receiver, eu tenho o Exporter e eu tenho os Processors aqui para a gente. E daí eu crio as minhas Pipelines que eu escolho como que esses dados vão indo. Legal? No próximo vídeo, eu vou mostrar para você a nossa aplicação, o microserviço em si, como que ele foi desenvolvido aqui para a gente.