Você já ouviu falar em API Gateway?!
Nesse artigo vamos falar sobre as características e benefícios que um API Gateway trás para a sua infraestrutura de APIs.
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.