Atualmente, a arquitetura da Microservices tornou-se um hype dentro do segmento de desenvolvimento software . Este modelo de arquitetura é uma abordagem que determina a implantação de aplicações em uma gama de serviços. A equipe de desenvolvimento pode adotar as tecnologias mais apropriadas para resolver problemas específicos. A arquitetura da Microservices também aumenta a escalabilidade ao permitir o uso de abordagens como auto-escala e micro-container.APIs e Microsserviços estão intimamente relacionados, uma vez que o padrão é usar uma interface API totalmente direcionada ao RESTful. No entanto, ainda estamos enfrentando alguns problemas quando precisamos nos integrar com sistemas legados para terceirizar funcionalidades como serviços, já que a maioria dos sistemas não possui protocolos como WebServices ou interfaces RESTful; portanto, vamos explorar esse tópico.
A maioria das empresas deseja expor os APIs internamente (dentro da corporação) e/ou externamente (a parceiros ou clientes), entretanto, seus sistemas ou aplicações não foram projetados para esse fim. A maioria das aplicações é baseada na seguinte arquitetura:
Quando nos deparamos com esse tipo de cenário, a solução comum é construir um adaptador para expor um protocolo padrão. Esse componente deve ser parecido com o diagrama apresentado abaixo:
O adaptador é o principal componente da solução, uma vez que permitirá a terceirização do serviço. Para promover essa padronização, algumas normas devem ser utilizadas:
Para ter uma aplicação com um modelo de integração simples e escalável é necessário ter um estilo de arquitetura que atenda a todos esses requisitos e o estilo de arquitetura que mais se assemelha a essas características é o Microservices. Lembre-se que esta recomendação se aplica quando seu backend não é exposto com o protocolo HTTP, pois a maioria das soluções API Gateways conseguirá facilmente rotear e transformar mensagens para comunicação backend:
Finalmente, observe que Microsserviços precisa ser organizado dentro dos domínios de sua empresa. Desta forma, podemos ver que este estilo de arquitetura é uma oportunidade para quebrar o monolítico de seu negócio e fornecer uma arquitetura melhor, como o design apresentado abaixo:
Este é um artigo muito interessante da Microservices.
Depois de decidir que a implementação do adaptador será baseada em uma arquitetura Microservices, algumas características são necessárias:
Algumas das estruturas que sugerimos incluem:Java:
JavaScript:
Outra característica crucial ao implementar APIs utilizando Microservices é a capacidade de integração com sistemas legados. Este tipo de característica requer uma estrutura específica que implemente os padrões de integração comercial (padrões EAI); a recomendação neste caso é usar a estrutura Java Apache Camel.
Após implementar o pacote Microservices e certificar-se de que ele esteja pronto, deve-se implementá-lo para que esteja disponível para uso. A estratégia mais recomendada é usar os serviços PaaS (Plataforma como um serviço) para implementar os pacotes Microservices. Isto porque este tipo de serviço oferece algumas características muito interessantes, como por exemplo:
Duas outras características importantes são:
As principais ofertas PaaS no mercado para uma estratégia de implementação devem ser avaliadas, inclusive:
Outras opções que podem ser consideradas são Amazon Elastic Beanstalk e Google App Engine. Ambos são muito interessantes, pois têm uma integração nativa com serviços de Cloud e Infra-estrutura e também oferecem serviços de infra-estrutura como serviço (IaaS). Entretanto, em nossa opinião, a melhor alternativa para a implementação do Microsserviços é aquela resultante de uma integração completa com uma plataforma de gerenciamento de APIs e, neste caso, o Sensedia API Suite oferece um recurso chamado BaaS (Backend as a Service) que utiliza os mesmos recursos de serviço PaaS e realiza esta integração. Este recurso permite que você realize a implementação e execute seu Microsserviços, expondo diretamente as APIs de seus sistemas legados. As tecnologias suportadas pelo BaaS são:
É importante lembrar que se você puder usar esta plataforma para executar seu Microsserviços que não são apenas aqueles que permitem a integração com legados, ela poderia ser sua plataforma oficial de execução de microserviços.
Depois que os Microservices estiverem funcionando corretamente, as APIs que expõem os Microservices devem ser bem gerenciadas e algumas das características essenciais para isso, que a maioria das plataformas deste tipo oferecem:
Todas as capacidades acima são comuns em um API Gateway mas algumas outras características cruciais para a gestão completa de suas APIs são:
Como mencionado acima, algumas plataformas API Management oferecem total integração com a plataforma de execução Microsserviços . Este tipo de funcionalidade oferece uma gestão total de todas as partes da solução, não exigindo uma infra-estrutura separada. Dessa forma, sua arquitetura será como mostrado na figura abaixo:
O uso da arquitetura Microservices permite o desenvolvimento de interfaces RESTful que exporão seu legado que nativamente não tem uma interface HTTP, mas o primeiro desafio é escolher as ferramentas corretas para essa implementação. Há muitas estruturas e linguagens que podem ajudar na implementação de Microsserviços. A decisão depende muito do cenário que está sendo enfrentado, mas alguns dos mais utilizados são mencionados neste artigo.Depois de escolher seu kit de desenvolvimento, a próxima decisão que deve ser tomada é a de determinar a plataforma de implementação e execução. Mais uma vez, a decisão depende muito do cenário que você está enfrentando, mas, neste caso, o objetivo principal é a exposição de APIs RESTful atendendo consistentemente aos requisitos funcionais e não funcionais.Sensedia API Suite é uma ferramenta API management que consegue oferecer a funcionalidade de Backend as Services (BaaS), que pode substituir as responsabilidades de um PaaS na implementação e execução de Microservices. Além disso, a ferramenta oferece todas as características chave para o gerenciamento ideal de uma API, tais como API Gateway com Caching e Analytics. Em resumo, a recomendação é utilizar uma ou mais plataformas integradas que permitam o gerenciamento total de seus Microservices e das APIs que serão expostas.
Referências
[1] Microservices - http://www.martinfowler.com/articles/Microsserviços.html
[2] Apache Camel - http://camel.apache.org/
[3] PaaS Comparator - https://paasfinder.org/compare
[4] Twelve Factor App - https://12factor.net/
[5] Sensedia API Management Platform- http://sensedia.com/api-management-platform/
[6] API Gateway Padrão - https://www.nginx.com/blog/building-Microsserviços-using-an-api-gateway/