A arquitetura de microsserviços pode trazer muitos benefícios para o desenvolvimento de software. Seus principais pontos fortes são a escalabilidade, a resiliência da aplicação, facilidade de implantação e aumento na eficiência da manutenção dos sistemas.

Nesse artigo, vamos entender um pouco melhor sobre a organização de um microsserviço e as camadas o compõe, definindo o seu ecossistema e explicando como cada parte se relaciona entre si.

 

O ecossistema da arquitetura de microsserviços

 

Construir, padronizar e manter a infraestrutura de uma maneira estável, escalável, tolerante a falhas e confiável é essencial para o sucesso das operações de um microsserviço.

Existem vários modelos distintos que sugerem como um ecossistema de microsserviços deve ser organizado. Um modelo interessante e bem estruturado é o descrito por Susan J. Fowler, em seu livro intitulado “Production-Ready Microservices”.

Segunda ela, o ecossistema de microsserviços pode ser dividido em quatro “camadas”, sendo elas: Hardware, comunicação, plataforma de aplicações e microsserviços.

Apesar das camadas estarem todas interligadas, estabelecer essa divisão nos ajuda a entender melhor as diferentes responsabilidades e os diferentes módulos que compõem um ecossistema da arquitetura de microsserviços.

 

Hardware:

 

Hardware são os computadores e equipamentos onde os microsserviços são armazenados e executados. Estes servidores podem estar dentro da empresa, ou pertencerem a provedores de infraestrutura em nuvem, como Amazon Web Services, Google Cloud Platform ou Windows Azure.

Existem algumas soluções que visam diminuir a dificuldade de se gerenciar estes equipamentos, como o emprego de tecnologias de conteinerização e clusterização para o armazenamento dos microsserviços.

É importante que os servidores sejam providos de mecanismos de monitoramento e logging para identificar problemas de falhas de disco, rede ou processamento, por exemplo. Em um ecossistema de grande diversidade e dinamismo, é importante ter à disposição ferramentas que evidenciem dados da saúde das máquinas onde esses microsserviços operam e mantenham um histórico destas informações. Desta maneira, eventuais problemas podem ser rapidamente identificados e resolvidos, uma vez que são facilmente detectados e rastreados. Adicionalmente, um mecanismo de monitoramento bem estruturado permite que seja possível acompanhar o impacto que a evolução das aplicações provoca na infraestrutura como um todo.

 

Comunicação:

 

A Comunicação engloba todo o conjunto responsável por permitir que a interação entre microsserviços ocorra, e é composta por elementos chave como os endpoints de API, Service Discovery e Service Registry, e Load Balancers.

 

Endpoints de API:

Dado uma API de um microsserviço, seus endpoints são os pontos através dos quais toda a comunicação externa acontece. É nos endpoints que o microsserviço envia e recebe informações de outros microsserviços ou aplicações.

 

Service Discovery e Service Registry:

Em um ecossistema de microsserviços executados em nuvem, as configurações de rede mudam dinamicamente dadas suas características de escalabilidade, falhas e atualizações.  Diante deste cenário dinâmico, é necessário um mecanismo que mantenha a localização mais recente e atualizada de cada serviço.  Os microsserviços registram a si mesmos no registrador de serviços quando são instanciados, e removidos quando são encerrados ou quando apresentam alguma falha.

Quando um serviço precisa se comunicar com outro, ele recorre ao Service Discovery, em busca da localização mais atualizada deste serviço. Este gerenciamento é um ponto importante e demanda muita atenção na configuração de um ecossistema de microsserviços.

 

Load Balancer:

Os balanceadores de carga são os responsáveis por rotear as requisições vindas dos clientes para as instâncias do microsserviço requisitado, garantindo que nenhum servidor seja sobrecarregado e maximizando sua velocidade e capacidade. Se a instância de um determinado microsserviço cair, o balanceador de carga para de rotear requisições de clientes para esta instância. Similarmente, quando uma nova instância fica disponível o balanceador começa a repassar requisições para ela automaticamente.

 

Plataforma de aplicações

A Plataforma de aplicações é a terceira camada, e engloba todas as ferramentas que são independentes de um microsserviço. Estas ferramentas devem ser construídas e dispostas de maneira que o time de desenvolvimento não tenha que se preocupar com nada além da lógica de sua própria aplicação.

Padrões nos processos de desenvolvimento com uso de repositórios de código como GitHub e Bitbucket, por exemplo, e mirroring de ambiente de produção são eficientes para manter a base de código organizada, e simular todas as dependências que a aplicação terá quando for ao ar.

Builds centralizados e automatizados com integração e deploys contínuos são essenciais. Dependendo do tamanho de sua aplicação e do número de microsserviços que ela possui, dezenas de deploys podem ocorrer diariamente. Por isso, é importante que as ferramentas sejam corretamente configuradas, e que sejam capazes de executar testes automaticamente, adicionar novas dependências conforme necessário, e preparar os releases a medida que novas versões são codificadas.

Por último, ter um mecanismo de log centralizado e monitoramento a nível de microsserviço é crucial para entender eventuais problemas que ocorrem no serviço implementado. Dado que a natureza de micro serviços é de sofrer alterações constantemente, os logs permitem entender o que aconteceu no sistema em um momento específico. O monitoramento, por sua vez, é utilizado para verificar a saúde e status de um serviço em tempo real.

 

Microsserviços

 

Os Microsservicos concentram a lógica para resolver o problema para o qual se propõe. A ideia é que o serviço seja totalmente abstraído dos demais componentes explicados acima, sem contato com as especificidades de hardware, service registry e service discovery, balanceamento de carga e processos de deploy, por exemplo. O microsserviço em si consiste apenas do código e configurações específicas que devem ser aplicadas sobre ele para que possa entregar as funcionalidades para qual foi idealizado.

 

 

De maneira geral, este é um modelo de ecossistema da arquitetura de microsserviços. Para serem aplicados em projetos reais, os tópicos citados devem ser estudados e compreendidos mais a fundo, tendo sempre em mente que esse tipo de arquitetura possui componentes muito dinâmicos, e que estão em constante aprimoramento.

 

 

– Igor Felipe Ferreira Ceridório

 

 

 

Design Patterns - O que são e quais os benefícios?

Compartilhe

Compartilhe este post com seus amigos