Arquitetura de microsserviços e API

Atualmente, a arquitetura de microsserviços está dando o que falar na área de desenvolvimento de software. Sua abordagem é definida pela composição de um único software baseado em um conjunto de serviços autônomos e simples. 

Esse estilo de arquitetura traz muito benefícios. Por exemplo, permite que os desenvolvedores adotem recursos tecnológicos mais adequados para a resolução de alguns problemas. Além disso, trabalhar com microsserviços facilita a escalabilidade por meio de auto-scaling e micro-container.

Microsserviços e API estão diretamente ligados, já que é comum utilizar uma interface de APIs direcionada para RESTful. Entretanto, há alguns problemas que ocorrem ao integrar sistemas legados. Isso acontece porque a maior parte desses sistemas não têm protocolos como WebServices ou RESTful.

O problema dos mircrosserviços e API 

Frequentemente, as empresas expõem APIs dentro da empresa ou até mesmo fora dela, para clientes e parceiros. Contudo, os sistemas não foram feitos para esta finalidade. Assim, a maioria das aplicações são baseadas conforme abaixo:

  • Aplicações monolíticas para web usando um banco de dados único. Ex: Java (JSF) com banco de dados Oracle.
  • Produto ou plataforma como ERP’s da SAP.
  • Aplicações de alto nível em escritas em Cobol.
  • Aplicações Cliente-Servidor implementados em VB6 e SQL Server.

Quando ocorre esse tipo de situação, a saída mais comum é a construção é de um adaptador para a exposição de um protocolo padrão. Esse componente deve ser semelhante ao diagrama abaixo:

Adapters Microservices

No caso, o componente principal para a solução é o adaptador, pois, permitirá a externalização do serviço. Para essa padronização, há alguns requisitos. Confira quais são:

  • Compatibilidade total com padrão RESTful
  • Organização por domínios de negócio
  • Ser facilmente escalável
  • Pacotes leves e com inicialização rápida.

Portanto, microsserviços e API possibilitam um modelo de integração escalável e ao mesmo tempo, simples, cumprindo com todas essas exigências.

Vale ressaltar que essa recomendação se aplicada quando o seu backend não é exposto com o protocolo HTTP, porque a maioria das soluções de API Gateways irá conseguir rotear e transformar facilmente as mensagens para comunicação com o backend.

Além disso, há ainda outros cenários em que a arquitetura de microsserviços é indicada. Listamos algumas delas. Veja.

  • Orquestração: conforme o caso é necessário rotear e/ou chamar outros serviços.
  • Composição: às vezes é preciso chamar mais de um serviço para compor e devolver uma resposta.
  • Transformação de Mensagens Complexas: quando é necessário utilizar de algoritmos mais complexos para conseguir devolver uma mensagem para o consumidor do serviço.

Enfim, os microsserviços devem ser organizados dentro dos domínios do seu negócio. Em síntese, eles fazem parte de um modelo de arquitetura que se transformou numa oportunidade de romper os monolíticos. Consequentemente, você obterá uma melhor arquitetura, como descreve na figura a seguir:

Arquitetura Microserviços

Estratégia de implementação de microsserviços e API 

Antes de instalar o adaptador baseado em microsserviços e API, é deve-se considerar algumas características necessárias.

  • Pacotes leves e baixo consumo de memória.
  • A inicialização da aplicação deve ser rápida para criar em novas instâncias de containers ou servidores.
  • Desenvolvimento rápido e simples baseado na especificação Swagger
  • Features de segurança como OAuth2

Há ainda alguns dos frameworks mais usados:

Java

  • Spring boot
  • Spark Framework
  • Play Framework
  • Dropwizard
  • Apache Camel

JavaScript

  • Node.js

Outro ponto fundamental na implantação dos microsserviços e API é a capacidade de integração com sistemas legados.

Neste caso será necessário um framework específico que implementa os padrões de EAI. Recomendamos utilizar o framework Java Apache Camel

Leia mais Como implementar segurança na arquitetura de microsserviços

Como implantar microsserviços e API 

Logo depois que o pacote com microsserviços é implementado, o próximo passo é programá-lo para que ele possa ser usado. A tática ideal é utilizar serviços PaaS (Plataforma como serviço). Isto porque este tipo de serviço oferece algumas vantagens muito interessantes como:

  • Uso de containers
  • Orquestração de containers
  • Armazenamento (sistema de arquivos e banco de dados)
  • Monitoramento em tempo real
  • Logging e rastreamento

Há várias opções de PaaS no mercado. Mas, certamente a melhor alternativa para implantar microsserviços é escolher a plataforma que oferece uma integração completa com microsserviços e API.

Depois que os microsserviços estiverem rodando de forma correta, as APIs que os expõe devem ser bem gerenciadas. Para que isso aconteça, as plataformas precisam apresentar algumas características:

  • Segurança e Resiliência: é importante proteger o seu backend de pessoas ou aplicações não habilitadas para consumir os microsserviços e API. Quando uma API é aberta ou para parceiros, os seus Microserviços devem estar protegidos contra os picos de tráfego, para que não fique fora de serviço e para isso é necessário ter controle de limite de tráfego (Rate Limit e Spike Arrest) e limite de tamanho do corpo da mensagem (Payload Size).
  • Controle de Acesso: os consumidores da API devem estar sobre o seu controle, para isso é necessário a utilização de padrões de mercado como OAuth 2.0 ou JSON Web Tokens.
  • Monitoramento e Rastreamento: é necessário conseguir monitorar todos os tipos de chamadas realizadas na sua plataforma.Támbém é necessário ter um mecanismo de log poderoso para encontrar os erros frequentes na sua API.

Por fim, adotar a arquitetura de microsserviços e API possibilita o desenvolvimento de interfaces RESTful que irão expor o seu legado que não possui uma interface HTTP nativa. Entretanto, é crucial escolher as ferramentas adequadas para a implementação. No artigo, trouxemos as mais utilizadas, mas existem muitos frameworks e linguagens que podem ajudar na integração de microsserviços. Essa escolha deve levar em conta cada cenário. Mas o mais importante é usar plataformas integradas que são capazes de gerenciar todos os seus microsserviços e API.

Leia também Como gerenciar e integrar dados em microsserviços?