AWS

12 mar, 2019

Microservices: trabalhando com Amazon API Gateway

Publicidade

Há mais de 10 anos, quando as empresas começaram a migrar suas aplicações para arquiteturas baseada em serviços (SOA), ficou mais do que evidente que o modelo de comunicação entre os serviços começaria a ficar totalmente insustentável. Serviços disponibilizados de forma totalmente descentralizadas e gerenciados por equipes e departamentos totalmente diferentes começaram a ficar “perdidos” dentro das organizações, uma vez que as aplicações consumidoras precisavam ter informações de quais servidores precisavam acessar, IPs, regras de firewall, tipo de protocolo, entre outros. Apesar de todo o trabalho, naquele momento, a granularidade dos sistemas e aplicações não podiam se comparar com o famoso “subset” dos microserviços que está se consolidando atualmente.

Cloud computing, diferentes clusters, load balancers, lambda functions e outras arquiteturas serverless já fazem parte da realidade de diversas empresas. E como o nome já diz: com microserviços, na maioria das vezes, um sistema corporativo vai ter centenas de instâncias com diferentes tipos de serviços a serem disponibilizados. O ponto crítico, nesse caso, é como consolidar todos esses serviços de forma transparente e segura para as aplicações consumidoras. E foi a partir daí que empresas como Netflix começaram a trabalhar com conceitos e técnicas que se tornaram fundamentais em aplicações baseadas em microserviços: a utilização de API Gateways.

Uma API Gateway é o “Single Point of Contact” de uma aplicação / sistema para com os serviços que serão disponibilizados. Provavelmente, se você tem trabalhado com microserviços, sua empresa provavelmente já trabalha com API Gateways ou uma camada similar ou provavelmente ela está sofrendo para organizar a disponibilização de todos os serviços.

Nesse artigo, será apresentado a utilização do serviço de API Gateway disponibilizado pela Amazon AWS. A própria imagem da Amazon acaba sendo auto explicativa em relação a utilização de seu serviço:

Para que você possa começar a utilizar a estrutura de API Gateway da Amazon, é muito simples. Ao acessar o dashboard principal, busque pelo serviço: API Gateway:

Ao acessar, imediatamente você verá a opção de criar uma API:

Para fazermos um rápido teste, adicione uma nova API e chame-a de BuscaCEP:

Adicione um novo recurso, conforme imagem abaixo:

Perceba que o recurso que será criado está se utilizando de duas chaves “{cep}”, ou seja, o mesmo será parte de um parâmetro de nossa API.

Uma vez que o recurso foi criado, adicione um método do tipo “Get” para ele. Para isso, clique em ações, e, em seguida, em Adicionar método.

Agora você verá o grande poder da API Gateway da Amazon, uma vez que você terá toda flexibilidade para apontar seu endpoint para qualquer serviço da própria Amazon, ou algum outro externo (que será o nosso caso).

Perceba que estamos utilizando o site “viacep.com.br”, para fazer nossa API Gateway abstrair tal serviço. Observe também que estamos fazendo uso do {cep} neste formato, pois ele será um parâmetro de nosso endpoint.

Pronto! Nossa API Gateway foi configurada e está pronta para uso, abstraindo assim nosso serviço de busca CEP. Vamos testar agora? Para isso, clique na opção “TESTE” na própria interface.

Ao realizar o teste, tivemos nosso primeiro resultado.

Apesar da facilidade na criação dos recursos e métodos, é muito clara a vantagem na utilização de uma API Gateway. Vamos imaginar que amanhã queiramos mudar para outro serviço para consulta de CEP. Sem problemas, basta reconfigurar nossa API Gateway, que tudo estará funcionando e as aplicações consumidoras jamais sentirão a diferença.

É muito importante lembrar que apesar de todo esse processo de configuração, os serviços disponibilizados pela Amazon AWS são extremamente completos e muitas vezes complexos, logo, é muito importante você entender os serviços básicos como EC2, S3, entre outros. Caso queira ter uma noção mais detalhada desses serviços, na School of Net há uma área de cursos online gratuitos que pode ser seu pontapé inicial nessa jornada.