Vídeo aula sobre microsserviços em Java com Spring Boot

Por Gaspar Barancelli Junior em 22 de fevereiro de 2023

Temos uma iniciativa entre um grupo de amigos para criar vídeos sobre desenvolvimento de software e disponibilizá-los na internet de forma gratuita.

Nossos primeiros vídeos foram lives transmitidas na Twitch pois queríamos ter um contato mais aproximado com o público. Sabendo que Twitch remove os vídeos após um determinado período, subimos esses mesmos vídeos para o youtube e também estamos compartilhando com vocês por meio do nosso blog.

Essa foi uma série de vídeos sobre Microsserviços a qual ainda não foi finalizada, pretendemos lançar vários outros vídeos ao longo do tempo e atualizar essa mesma página, incluindo informações básicas sobre os vídeos e o link dos mesmos.


Nesse vídeo vamos criar nosso primeiro serviço, que será uma API RESTful responsável por persistir produtos no banco de dados H2.

Um ponto que devemos destacar no primeiro vídeo é o cuidado que devemos ter com segurança ao desenvolvermos uma API. Vamos detalhar uma falha de segurança chamada Mass Assignment e uma solução de implementação para evita-la.


Continuando o desenvolvimento da nossa API, nesse vídeo vamos desenvolver um novo endpoint responsável por obter um produto já inserido no banco de dados e customizar a serialização do objeto de saída para JSON.

É importante comentar que foi seguido o padrão RESTful, portanto, quando um determinado recurso "produto" não existir em nossa base de dados devemos retornar um código http 404, mas em caso de sucesso, quando o recurso existir o código retornado será 200 e será adicionado no corpo da requisição um objeto representando o recurso encontrado.


Nesse vídeo vamos adicionar endpoints para remover e atualizar um determinado recurso, sempre seguindo o padrão RESTful, sendo assim, adicionamos os verbos DELETE, PATCH e PUT.

Além dos novos endpoints vamos começar a trabalhar com eventos em nossa aplicação para aumentar a coesão e evitar um forte acoplamento entre as classes, bem como utilizar o ActiveMQ Artemis como Message Broker, que nada mais é que um servidor de mensagens.


Agora entraremos mais a fundo no mundo de serviços distribuídos, vamos utilizar algumas peças do Spring Cloud, como Config, Eureka e Gateway.

  • Config: Spring Cloud Config fornece suporte do lado do servidor e do cliente para configuração externalizada em um sistema distribuído. Com o Config Server, você tem um local central para gerenciar propriedades externas para aplicativos em todos os ambientes. Conforme um aplicativo se move pelo pipeline de implantação do desenvolvimento para o teste e para a produção, você pode gerenciar a configuração entre esses ambientes e ter certeza de que os aplicativos têm tudo de que precisam para serem executados durante a migração.

  • Eureka: O Service Discovery é um dos princípios-chave de uma arquitetura baseada em microservices, pois podemos ter inúmeros serviços sendo executados, com diversas réplicas dos mesmos sendo escaladas, bem como diversas versões rodando em paralelo e até mesmo em vários ambientes, sendo que esses serviços provavelmente não serão executados na mesma máquina, mas sim em máquinas diferentes e até mesmo em zonas diferentes para garantir a alta disponibilidade da sua aplicação, então quando houver uma comunicação entre serviços o ideal é que ela seja feito através do nome dos serviços, e que seja possível distribuir essas requisições por um balanceador de carga.

  • Gateway: Spring Cloud Gateway é a implementação do API Gateway desenvolvida pela equipe do Spring Cloud em cima do ecossistema reativo da Spring Framework. Ele fornece uma maneira simples e eficaz de encaminhar solicitações recebidas para o destino apropriado usando o Gateway Handler Mapping.


Observabilidade é um conceito muito importante quando trabalhamos com serviços distribuídos, devemos ser capazes de armazenar e visualizar informações sobre a saúde da nossa aplicação, como os recursos que estão sendo consumidos, logs gerados bem como o trace completo de uma requisição. Com essas informações em mãos podemos gerar alertas para quando alguma anomalia acontecer bem como rastrear rapidamente qual o problema e antecipar uma resolução.

Utilizaremos as ferramentas mencionadas abaixo para aplicar o conceito de observabilidade, as quais serão devidamentes explicadas no vídeo:

  • Micrometer;

  • Prometheus;

  • Grafana;

  • Sleuth;

  • Zipkin;

  • Logstash;

  • Elastic Search;

  • Kibana;

// Livros recomendados relacionados ao assunto do post

// Compartilhe esse Post