Microsserviços, uma solução para escalabilidade.

Lara Menezes e Roberto Sarquis | conteudo@hmit.com.br

Publicado em 12 de março de 2024

O que são microsserviços?

Microsserviços é uma arquitetura que permite que uma aplicação grande e complexa seja separada em componentes independentes menores, com cada parte tendo sua própria responsabilidade. Em contraste com os microsserviços, temos a arquitetura monolítica e a arquitetura orientada a serviços (SOA).

Nas arquiteturas monolíticas, os processos são altamente acoplados e executados como um serviço único, em que todos os componentes compartilham um ambiente único de execução. Assim, se um processo da aplicação apresentar um pico de demanda, toda a aplicação deverá ser escalada. Nessa abordagem, há também um maior risco de disponibilidade, já que uma falha em um serviço irá interromper o restante da aplicação.

Já com a SOA, os microsserviços compartilham a ideia de decompor sistemas em serviços reutilizáveis, mas diferem em termos de escopo e implementação. Na SOA, os serviços são maiores, mais abrangentes, acoplados e centralizados.

Quando criados corretamente, serviços independentes não afetam uns aos outros. Isto significa que, se uma parte falhar, os outros serviços podem continuar operando normalmente. Cada serviço pode ser atualizado, implantado e escalado para atender a demanda de funções específicas de um aplicativo.

Na prática

Para quem constrói aplicações utilizando a plataforma Java, o Spring Cloud é um conjunto de ferramentas projetadas para o desenvolvimento de microsserviços. 

Em conjunto com os microsserviços, costumamos usar componentes para fornecer recursos para descoberta de serviços, balanceamento de carga, roteamento de solicitações, segurança e monitoramento. 

Por exemplo, o Spring Cloud oferece como suporte a mecanismos de descobertas de serviços o Eureka, entre outros, que permite que os microsserviços registrem-se dinamicamente e localizem uns aos outros de forma transparente. Essa necessidade se dá, pois, na nuvem, os aplicativos nem sempre conseguem saber a localização exata de outros serviços. Podemos ter muitos serviços distribuídos na rede, em que as instâncias dos serviços mudam dinamicamente devido a escala automática, falhas, atualizações e não temos controle de endereços IP e nem o nome da instância. 

Neste caso, cada instância de serviço (microsserviço) registra-se no servidor Eureka quando é iniciada, enviando uma requisição de registro, informando o seu nome, endereço IP, porta e outras informações relevantes. Estas instâncias continuam enviando periodicamente atualizações de status para o servidor Eureka para informá-lo de que ainda estão em funcionamento. O Spring Cloud também fornece recursos para criar um gateway de API, que atua como ponto de entrada único para solicitações externas e pode realizar roteamento de mensagens, autenticação, autorização, balanceamento de carga e outros recursos.

O Spring Cloud Gateway oferece controle da camada API, integrando descoberta de serviço Spring Cloud e soluções de balanceamento de carga do lado do cliente para simplificar a configuração e a manutenção.

Autores

Lara Menezes é Chief Information Officer na HMIT Tecnologia | CIO
Roberto Sarquis é Analista de Sistemas e PO NFe Master na HMIT Tecnologia