Microsserviços com AWS Lambda e API Gateway

A computação sem servidor, o famoso serverless, é um modelo de computação em nuvem no qual um provedor de nuvem gerencia automaticamente o provisionamento e a alocação de recursos de computação. Diferentemente da computação em nuvem tradicional, onde o usuário é responsável por gerenciar manualmente os recursos de computação. Você pode saber mais sobre o assunto lendo o post “Aplicações Serverless: quais as vantagens de usar esta arquitetura?”.

Com a popularização do uso da Arquitetura de Microsserviços, uma abordagem extremamente válida para executar microsserviço é implementá-lo utilizando o serviço AWS Lambda e, em seguida, expor para consumo público usando o AWS API Gateway. No texto a seguir vamos explicar um pouco mais sobre este processo. 

Mas afinal, o que é o AWS Lambda?

O serviço AWS Lambda permite executar códigos sem se preocupar com o processamento do servidor. Se faz necessário somente enviar o código para a AWS que o serviço Lambda consegue executar sua rotina com alta escalabilidade e disponibilidade. Desta forma, quem implementa a solução não precisa gastar horas e horas pensando em desenvolver algo mirabolante, que reinvente a roda, somente para poupar recursos computacionais. 

É claro que não estamos falando em criar um código mal feito e jogá-lo para dentro da AWS de qualquer jeito. Lembre-se sempre de utilizar as melhores práticas para sempre manter um código limpo e otimizar o desenvolvimento da sua aplicação.  

A maior vantagem do AWS Lambda é que você irá pagar somente pelo tempo de computação que for utilizado para o processamento. Imagine que você desenvolveu um microsserviço que insira registros em uma tabela no banco de dados, e você sabe que ele terá uma alta demanda de acesso, logo, precisará ser escalável e estar sempre disponível para os usuários. 

Pensando de maneira tradicional, você precisa deixar sua aplicação rodando em um servidor que deve estar sempre disponível, então, o custo de computação será por utilizar um recurso do AWS EC2 rodando 24 horas, e podendo ter um custo adicional, quando precisar escalar esse serviço. 

Porém, se pensarmos em colocar seu código dentro de um Lambda, você será cobrado apenas quando essa rotina for executada e o custo será baseado no tempo de execução, o AWS Lambda verifica a cada 100ms executados, sem que você se preocupe em gerenciar a escalabilidade e disponibilidade do serviço. Agora que já conhecemos quem vai executar o nosso código fonte, precisamos saber quem será o gatilho da nossa função Lambda, e como nosso foco aqui é microsserviço web, deixaremos essa função para o Amazon API Gateway.

E o que é API Gateway? 

O Amazon API Gateway é um serviço onde é possível criar, publicar e gerenciar APIs com facilidade. Funcionando como uma porta de entrada dos nossos microsserviços, ele possui suporte tanto para encaminhar as chamadas para os microsserviços que estão conteinerizados, quanto para nossas funções Lambda. Com ele você consegue criar APIs HTTP RESTFul, que são a melhor escolha quando estamos falando de APIs web, ou, também, a criação de APIs do tipo WebSocket.

Com o API Gateway conseguimos administrar todo o recebimento e processamento de centenas de milhares de chamadas simultâneas. Sendo possível gerenciar todo o tráfego HTTP, configurar CORS, adicionar controle de acesso e até criar um controle de versões da nossa API. E o custo é bem reduzido, pois a cobrança é feita pela quantidade de chamadas que sua API recebe e pela transferência de dados de retorno para quem consome a API. E é possível reduzir ainda mais os custos à medida que se tem necessidade de escalonamento.

Estamos falando de um serviço que nos oferece desenvolvimento eficiente de uma API, performance em qualquer escala, fácil monitoramento, controle de segurança flexível e tudo isso a um custo extremamente acessível.

Então, nossa solução de microsserviços serverless ficará da seguinte forma: uma porta de entrada HTTP utilizando o Amazon API Gateway, onde poderemos ou não configurar controle de acesso, que nos entregará alta performance em qualquer escala de aplicação com fácil monitoramento, e que será o responsável por acionar nossa rotina que estará configurada dentro de uma função AWS Lambda, que possui capacidade altíssima de processamento sem que seja necessário provisionar e gerenciar um recurso dentro de um servidor, que nos entregará escalabilidade contínua em alta disponibilidade, performance otimizada e tudo isso pagando somente pelo tempo que for utilizado.

Comece a repensar as arquiteturas de seus projetos para utilizar esses serviços que irão otimizar o tempo de desenvolvimento de sua solução com inúmeros benefícios, tanto para quem desenvolve quanto para quem consome os microsserviços. É claro que existem outras maneiras válidas de usar esses serviços que possuem diferentes implementações.

Para os leitores deste artigo, sugiro consultar a documentação oficial dos serviços para entender melhor sua implementação e utilizar as melhores práticas. Este artigo ainda pode servir como uma introdução aos principais recursos associados a esses serviços, mesmo se você escolher uma arquitetura diferente. Gostou do texto? Então entre em contato com a gente. A Viceri tem um time de especialistas prontos para auxiliar seu negócio.