Neste curso, será aboradado o conceito teórico e prático sobre comunicação entre microsserviços e como aplicá-las. Praticamente iremos criar 3 APIs, duas delas com Node.js, MongoDB, Mongoose, Sequelize, PostgreSQL e JWTpara autenticação. Iremos também criar uma APIcom Java 11 utilizando Spring Boot, PostgreSQL, Spring Data JPA, Spring Cloud OpenFeign e JWT, realizando a comunicação e integração entre essas duas tecnologias.
Iremos utilizar o RabbitMQ para a comunicação via filas de mensagens utilizando o protocolo AMQP com o intuito de criar uma comunicação assíncrona entre os serviços. Iremos também utilziar comunicação síncrona entre aplicações, ou melhor, chamadas a clients HTTP entre as APIs, integrando-as com as tecnologias FeignClient (Spring Boot) e Axios (Node.js).
Iremos também subir todas as nossas aplicações em containers Docker utilizando o Docker-compose. Por fim, ao termos tudo desenvolvido, subiremos toda a aplicação ao Heroku para ver tudo rodando em cloud e simular como seria um cenário real de desenvolvimento.
Neste curso, você verá uma abordagem teórica sobre arquitetura de microsserviços e arquitetura monolítica, suas comparações, vantagens e desvantagens, comunicação síncrona e assíncrona entre aplicações utilizando chamadas a APIREST (HTTP) e filas de mensagens, além de conseguir compreender todos esses conceitos ao vê-los ocorrendo na prática. Iremos também detalhar os métodos e status HTTP, além também dos tipos de exchanges e filas de mensagens existentes no RabbitMQ para posterior implementação.
Iremos também implementar um básico de rastreabilidade de requisições entre microsserviços com logs nas APIs, IDs de requisições e iremos visualizar nossa rastreabilidade com as APIs no Heroku usando o add-on Coralogix Logging, que nos fornece uma interface do Kibana.
Ao fim deste curso você será capaz de criar suas próprias APIs e integrá-las da maneira que julgar necessário, com filas de mensagens ou chamadas REST, será capaz também de definir um ambiente de desenvolvimento e executar todos os serviços em containers ou em serviço em nuvem como Heroku, definindo suas próprias variáveis e arquivos de configuração de ambiente.