Porque eu preciso de um API Gateway?

E ai pessoal, tudo bem?

hoje vou falar um pouco sobre API Gateway pattern e a minha experiência recente com diferentes ferramentas e os benefícios a curto e longo prazo principalmente migrando de monolito para microservices.

Atualmente trabalho com um grande monolito, com alguns milhões de requisições por dia, toda a infraestrutura na AWS, monitoramento a nível de aplicação e a nível de infraestrutura, mas nem sempre o monitoramento de infraestrutura ou aplicação ajuda quando precisamos entender alguns cenários do dia a dia, como por exemplo comunicação entre aplicações.

As vezes a gente pode ter algum problema em um um serviço que é uma dependência da nossa aplicação, talvez vamos ver que as chamadas estão lentas no lado do app, mas a resposta está normal a nível de aplicação na dependência, ai você vai ao nível de infraestrutura e você vê nos Load Balancers que o trafego estava normal, ai você se pergunta, onde está o problema?

Pra começar, você precisou olhar em pelo menos dois lugares para entender o que poderia estar acontecendo, monitoramento da aplicação e monitoramento da infraestrutura. Com um API Gateway em frente das suas aplicações, você pode ter um único ponto de entrada para elas, sendo assim, consegue ter logs sobre todo o trafego dos clientes/consumidores para elas em um único lugar.

Utilizando um API Gateway você consegue ver detalhadamente as transações entre o seu cliente e as aplicação e também entre aplicações.

API Gateway entre serviços e diferentes clientes

O API Gateway ainda tem muitas funções que podem ajudar em alguns desafios, como por exemplo certificado distribuído, controlar acesso aos endpoints por API Keys, Circuit Breakers, Timeouts, Retries, você consegue definir N configurações em um único lugar.

Agora vem a pergunta de ouro: Qual o melhor API Gateway? Bom, depende! sim, tudo depende do que você precisa e o quanto pretende investir em infraestrutura e também da curva de aprendizado além do objetivo que pretende atingir, mas aqui vão algumas das ferramentas que tive contato:

Ocelot (https://github.com/ThreeMammals/Ocelot): Open source, escrito em C#, você instala um pacote no seu app e basicamente adiciona as funções de um API Gateway, fácil de usar e para cenários onde por exemplo você quer começar a aplicar facades para quebrar a sua aplicação de microservices, pode ser um bom começo, ele ajuda a fazer um proxy simples entre apis, mas não seria a minha escolha como um API Gateway hoje.

Kong (https://konghq.com): Open source e também tem versão Enterprise, mas para começar com certeza a versão gratuita tem tudo que você precisa, logging, controle de acesso com api keys, rotas customizados, certificado centralizado, load balancer, retries, circuit breaker e muito mais, com certeza uma ferramenta completa, tem várias integrações e muitos plugins que adicionam ainda mais poder para essa ferramenta incrível.

AWS API Gateway (https://aws.amazon.com/pt/api-gateway/): Temos várias funções que vemos no Kong, porém você paga pelo recurso, é um pouco mais difícil, você fica preso a AWS, porém foi muito útil pra gente iniciar nesse mundo e fazer controle por API Keys e fazer um rate limiting de acessos de consumidores, um lado bom que você não precisa de recursos extras para monitoramento e integrações, pois está tudo disponível dentro da plataforma da AWS.

Por hoje era isso, em breve devo trazer mais detalhes sobre como aplicar o uso do Kong e também Ocelot com implementações reais, até a próxima!

Leave a Reply

O seu endereço de email não será publicado. Campos obrigatórios marcados com *