Você já ouviu falar em API Gateway?!

Rafael Mateus
Neoway Labs | Tech
4 min readMar 1, 2023

--

Nesse artigo vamos falar sobre as características e benefícios que um API Gateway trás para a sua infraestrutura de APIs.

Imagem criada usando a IA DALL-E

A arquitetura de micro-serviço está crescendo cada vez mais, cada um com sua responsabilidade e propósito, com isso os Gateways de APIs acabam se tornando cada vez mais essenciais para uma arquitetura desacoplada e com alta escalabilidade.

IImagina que você tenha back-ends servindo endpoints para outros parceiros ou empresas usarem e cada vez que você cria um back-end (micro-serviço) você precisa se preocupar na segurança dele. Em verificar o token de autenticação, verificar se o request está autorizado, se tem permissões para acessar aquele recurso, etc.

E de repente surgiu outro micro-serviço de API que faz algo muito parecido mas para outra camada de domínio, e claro, ele vai precisar fazer todas aquelas verificações de token e permissão de acesso.

Dessa forma, sua lógica de validação de acesso ficaria totalmente espalhada entre os micro-serviços, deixando a responsabilidade também espalhada. Agora imagine que você precise saber todos os endpoints disponíveis para os clientes acessarem, teria que lembrar de todos os micro-serviços e começar o levantamento.

Com o API Gateway, você cria uma camada antes dos seus micro-serviços que estão disponibilizando endpoints de API no qual a responsabilidade de interpretar e validar cada requisição antes de chegar no seu back-end.

Essa camada tem como responsabilidade abstrair regras que o micro-serviço não precisa se preocupar, de uma maneira mais amigável e transparente.

Falamos muito de validação de token, mas vamos usar um outro exemplo que o API Gateway pode atuar, rate limit.
É complicado deixar seu endpoint exposto para o cliente sem limitar a quantidade de requisições que ele pode fazer por segundo, isso pode ferir drasticamente sua segurança e disponibilidade do micro-serviço, podendo até sofrer um ataque de negação de serviço.

Por isso, os APIs Gateways podem ser usados para verificar quantas requisições aquele cliente já fez naquele intervalo de tempo e barrar caso necessário, sem passar essas requisições para o back-end.

Baita ganho, né?

Outro ponto massa do rate limit é conseguir controlar o número de requisições independente do número de instâncias que tem do seu back-end. Imagina agora que você esteja fazendo o deploy do seu micro-serviço no K8S, com 3 pods rodando sua aplicação. Como você controlaria as requisições respondida entre os pods? Um pouco complicado né? Talvez usando um envoy ou um outro micro-serviço só para controlar isso, porque cada pod é uma instância separada, sem compartilhamento de “contador de requests do cliente X”.

Tá e agora sua aplicação ficou topzera, com micro-serviços e cada um com sua responsabilidade e aí vem a necessidade de negócio, “agora vamos precisar cobrar essas requisições dos clientes, queremos configurar uma quantidade de requisições que cada um pode fazer por mês para eles pagarem a conta no final do mês…” resumindo ferrou. Fecha o notebook e bora vender picolé na praia. A não ser que você tenha um API Gateway.

Outra característica muito massa do API Gateway é conseguir contabilizar esse número de requisições que um cliente fez em um intervalo de tempo, diferente do rate limit, entende? O rate limit garante que não vai ter uma rajada de requisições em um intervalo de tempo curto que o back-end não aguente, já a quota vai garantir que o cliente só tem um número de requisições por intervalo de tempo, podendo ser renovada ou não.

Outros benefícios:

  • Reescrever o endpoint: seu cliente chama /minha/API e o API Gateway chama o back-end pelo endpoint /v1/api.
  • Transformar os payloads: sua API responde em XML e você quer entregar em formato JSON para o cliente ou vise versa.
  • Load balancing: o API Gateway pode distribuir as requisições para várias instâncias de um micro-serviço tendo uma maior escalabilidade e performance.
  • Cache: o API Gateway pode manter a resposta de requisições por um determinado tempo sem precisar bater no back-end, guardando o último estado na resposta em cache e respondendo de forma mais otimizada.
  • Circuit breaker: o Gateway de API pode identificar que o response do seu back-end falhou e fazer um retry ou tentar uma outra estratégia para ter sucesso na requisição.
  • Versionamento: o API Gateway pode criar abstrações para versionar os endpoints de API por header ou URL.

Autor: Rafael Mateus

Curtiu o conteúdo? Não se esqueça de deixar seus comentários, dúvidas e compartilhar esse post nas suas redes.

Antes de encerrar por aqui, um pedido: siga a gente por aqui e se inscreva em nosso canal do YouTube (que por sinal já tem alguns vídeos bem legais por lá) para continuar por dentro do universo Neoway :)

🚨URGENTE🚨Estamos contratando! Saiba mais sobre as vagas disponíveis no nosso perfil oficial na Gupy.

--

--

Rafael Mateus
Neoway Labs | Tech

A passionate Software Developer 🚀 having an experience of building APIs and Web applications with Go / Python / Ruby / Rails / Docker / K8s and DevOps skil