O que é API
APIs são um conjunto de operações bem definidas com o objetivo de fornecer aos seus consumidores um serviço, produto ou integração
Na pratica o consumidor de uma API utiliza o serviço sem precisar entender os detalhes da implementação.
Essa imagem ilustra bem o objetivo da API, seguindo essa analogia de restaurante um casal que pediu uma refeição geralmente não liga muito quem é a pessoa que está preparando essa refeição, eles ligam que o prato chegue até a mesa.
Da mesma forma quando vamos consumir uma API no Frontend, não importa se ela foi construída em Node, Java, Go ou qualquer outra linguagem, o que importa é o front receber o que ele espera
Existem algumas APIs famosas por serem muito bem desenhadas fazendo com que empresas ou desenvolvedores solo possam integrar facilmente com essas APIs, por exemplo a API do twitter que é super bem documentada.
API Gateway
Os API gateways surgiram para resolver um problema gerado pela arquitetura de microsserviços, vamos imaginar que temos uma api publica e um cliente quer fazer uma integração com ela, porem nosso Backend é distribuído, já pensou falar pro cliente qual a api que ele precisa chamar para cada microsserviço que ele queira trabalhar? Isso seria inviável.
Eles são ferramentas de gerenciamento, geralmente adicionadas entre um cliente e um grupo de sistemas, atuando como um ponto unico de entrada para as APIS
Nessa imagem podemos ver dois clients Front consumindo a API porem eles falam com a API Gateway e a Gateway redireciona a requisição para o microsserviço que eles querem de fato se comunicar, inclusive fazendo a tradução de protocolo pois tem duas apis REST e uma AMQP, isso fica abstraído para o front
O Gateway vai ser sim um single point of failure (ponto único de falha), portanto temos que garantir a escalabilidade e resiliência dele.
Responsabilidades do Gateway
- Rate limiting
- Autenticação (Isso não isenta o serviço de ter uma autenticação própria com permissionamento e tudo mais)
- Controle de logs
- Gerenciamento de APIs (routing)
- Métricas padronizadas (ops team)
- Tracing Distribuido
Tipos de API Gateway
Enterprise Gateway
O foco dele é permitir gerenciar exposição e gerenciamento de apis voltadas ao negocio. Em geral ele permite controlar o ciclo de vida da API também.
Como o Enterprise Gateway normalmente tem muitas funcionalidades extras temos que tomar cuidado para não deixar ele fortemente acoplado com a nossa aplicação dificultando assim uma migração no futuro.
Seu proposito principal é a exposição, composição e gerenciamento de APIs externas ou internas, a manutenção em geral é feita pelo portal do API gateway e ela suporta múltiplos ambientes.
Micro/Microservices Gateway
Geralmente esse tipo de gateway tem a capacidade de "rotear" o trafego de entrada para APIs ou serviços. Em geral ele não tem suporte para o ciclo de vida da API e a equipe tem que cuidar disso em um processo separado. Geralmente é open source.
Em geral não possuem dependências externas, e são componentes standalone, facilitando assim o kubernets gerenciar o estado necessário para execução da aplicação
Seu proposito principal é a exposição, observabilidade e monitoramento de serviços, a manutenção é feita pelo time de API que via configuração declarativa fazem atualizações, isso faz parte do deployment do serviço ela controla um único ambiente, mas possui suporte a um roteamento mais dinâmico como por exemplo o Canary para facilitar o debug.
Algumas boas praticas são, usar a flexibilidade do deployment para "particionar" as APIs. E tentar ser Stateless o máximo possível aumentando assim muito a facilidade da escalabilidade e disponibilidade
Vantagens e desvantagens
Vantagens
- Padronização de alguma features como logging e segurança
- Ajuda na governança de rede da companhia
- Ponto único de entrada na rede facilitando o gerenciamento
Desvantagens
- Adiciona complexidade na arquitetura
- Precisa de um cuidado extra, devido a disponibilidade
- Ferramenta que precisa de manutenção/atualização
Top comments (0)