Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em uma arquitetura de microsserviços, um cliente pode interagir com mais de um serviço front-end. Diante disso, como um cliente sabe quais endpoints deve chamar? O que acontece quando novos serviços são introduzidos ou os serviços existentes são refatorados? Como os serviços lidam com terminação SSL, TLS mútua, autenticação e outras preocupações? Um gateway de API pode ajudar a resolver esses desafios.
Baixe um arquivo do Visio dessa arquitetura.
O que é um gateway de API?
Um gateway de API fornece um ponto de entrada centralizado para gerenciar interações entre clientes e serviços de aplicativo. Ele atua como um proxy reverso e roteia solicitações de clientes para os serviços apropriados. Ele também pode executar várias tarefas transversais, como autenticação, terminação de SSL, TLS mútuo e limitação de requisições.
Por que usar um gateway de API?
Um gateway de API simplifica a comunicação, aprimora as interações do cliente e centraliza o gerenciamento de responsabilidades comuns no nível do serviço. Ele atua como um intermediário e impede a exposição direta dos serviços de aplicativo aos clientes. Sem um gateway de API, os clientes devem se comunicar diretamente com serviços de aplicativos individuais, o que pode introduzir os seguintes desafios:
código do cliente complexo: isso pode resultar em código de cliente complexo. Os clientes devem monitorar vários endpoints e lidar com falhas com resiliência.
acoplamento apertado: ele cria acoplamento entre o cliente e o back-end. Os clientes precisam entender a decomposição de serviços individuais, complicando a manutenção e a refatoração do serviço.
maior latência: uma única operação pode exigir chamadas para vários serviços. O resultado pode ser várias viagens de ida e volta de rede entre o cliente e o servidor, adicionando latência significativa.
Tratamento redundante de preocupações: cada serviço voltado para o público deve lidar com preocupações como autenticação, SSL e limitação de taxa de cliente.
limitações do protocolo : os serviços devem expor um protocolo amigável ao cliente, como HTTP ou WebSocket. Essa exposição limita opções de protocolos de comunicação.
Superfície de ataque expandida: endpoints públicos aumentam a superfície de ataque e exigem reforço de segurança.
Como usar um gateway de API
Um gateway de API pode ser adaptado aos requisitos do aplicativo usando padrões de design específicos. Esses padrões de projeto abordam funcionalidades essenciais, como roteamento, agregação de solicitações e aspectos transversais:
Roteamento de gateway. Você pode usar um gateway de API como um proxy reverso para rotear solicitações de cliente para diferentes serviços de aplicativo. O gateway de API usa o roteamento de camada 7 e fornece um único ponto de extremidade para os clientes usarem. Use o roteamento de gateway de API quando quiser desacoplar clientes dos serviços de aplicativo.
Agregação de gateway. Você pode usar o gateway de API para agregar várias solicitações de cliente em uma única solicitação. Use esse padrão quando uma única operação exigir chamadas para vários serviços de aplicativo. Na agregação de API, o cliente envia uma solicitação para o gateway de API. Em seguida, o gateway de API roteia solicitações para os vários serviços necessários para as operações. Por fim, o gateway de API agrega os resultados e os envia de volta ao cliente. A agregação ajuda a reduzir a conversa entre o cliente e os serviços de aplicativo.
Descarregamento do gateway. Você pode usar um gateway de API para fornecer funcionalidades transversais, para que os serviços individuais não precisem implementá-las. Pode ser útil consolidar as funcionalidades transversais em um só lugar, em vez de deixar cada serviço responsável por isso. Aqui estão exemplos de funcionalidade que você pode descarregar em um gateway de API:
- Terminação SSL
- TLS mútuo
- Autenticação
- Lista de permissões de IP ou lista de blocos
- Limitação de taxa do cliente (throttling)
- Lista de permissões de IP ou lista de bloqueios
- Limitação do cliente
- Registro e monitoramento
- Cache de respostas
- Firewall do aplicativo Web
- Compressão GZIP
- Manutenção de conteúdo estático
Opções de gateway de API
Aqui estão algumas opções para implementar um gateway de API em seu aplicativo.
servidor proxy reverso. Nginx e HAProxy são ofertas de proxy reverso de software livre. Eles dão suporte a recursos como balanceamento de carga, terminação SSL e roteamento de camada 7. Eles têm versões gratuitas e edições pagas que fornecem recursos extras e opções de suporte. Esses produtos são maduros com conjuntos de recursos avançados, alto desempenho e extensível.
Gateway de ingresso da malha de serviços. Se você já utiliza uma malha de serviço, o próprio gateway de entrada da malha pode ser um candidato para o gateway da API. Usá-lo significa que o tráfego norte-sul entra imediatamente no plano de dados da malha e passa a contar com o mesmo mTLS, a mesma identidade da carga de trabalho, a mesma política de autorização e a mesma telemetria que o tráfego leste-oeste. Para o AKS, o complemento de malha de serviço baseado em Istio é a opção gerenciada com suporte e inclui um gateway de entrada do Istio gerenciado. Linkerd e Consul são alternativas não gerenciadas.
Os gateways de ingresso da malha normalmente têm capacidades mais limitadas do que os gateways de API dedicados para WAF (firewall de aplicativo web), oferta de APIs como produto, transformação de solicitações e roteamento global; portanto, use-os em conjunto com ou substitua-os por Application Gateway, Front Door ou API Management quando esses recursos forem necessários.
Gateway de Aplicativo do Azure. O Gateway de Aplicativo é um serviço de balanceamento de carga gerenciado. Ele fornece roteamento de camada 7, terminação SSL e um WAF (firewall de aplicações web).
Azure Front Door. O Azure Front Door é uma CDN (rede de distribuição de conteúdo). Ele usa PoPs globais e locais para fornecer acesso rápido, confiável e seguro ao conteúdo web estático e dinâmico das suas aplicações em todo o mundo.
Gerenciamento de API do Azure. O Gerenciamento de API é uma solução gerenciada para publicar APIs para clientes externos e internos. Ele fornece recursos para gerenciar APIs voltadas para o público, incluindo limitação de taxa, restrições de IP e autenticação usando a ID do Microsoft Entra ou outros provedores de identidade. O Gerenciamento de API não executa nenhum balanceamento de carga, portanto, você deve usá-lo com um balanceador de carga, como o Gateway de Aplicativo do Azure ou um proxy reverso. Para obter mais informações, consulte API Management com Gateway de Aplicativo do Azure.
Escolha uma tecnologia de gateway de API
Ao selecionar um gateway de API, considere os seguintes fatores:
Dê suporte a todos os requisitos. Escolha um gateway de API que dê suporte aos recursos necessários. Todas as opções anteriores do gateway de API dão suporte ao roteamento de camada 7. Mas o suporte para outros recursos, como autenticação, limitação de taxa e encerramento de SSL, pode variar. Avalie se um único gateway atende às suas necessidades ou se vários gateways são necessários.
Prefira soluções nativas. Use soluções nativas de gateway de API e ingress fornecidas pela sua plataforma, como Aplicativos de Contêiner do Azure e AKS, sempre que essas soluções atenderem aos seus requisitos de segurança e controle. Use apenas um gateway personalizado se as opções internas não tiverem a flexibilidade necessária. Soluções personalizadas exigem um modelo de governança, como o GitOps, para gerenciar seu ciclo de vida efetivamente.
Escolha o modelo de implantação correto. Use serviços gerenciados como o Gateway de Aplicativo do Azure e o Gerenciamento de API do Azure para reduzir a sobrecarga operacional. Se você usar proxies reversos de uso geral ou balanceadores de carga, implante-os de uma maneira que se alinhe à sua arquitetura. Você pode implantar gateways de API de uso geral em máquinas virtuais dedicadas ou em um cluster do AKS, em suas ofertas de Ingress Controller. Para isolar o gateway de API da carga de trabalho, você pode implantá-los fora do cluster, mas essa implantação aumenta a complexidade de gerenciamento.
Gerenciar alterações. Ao atualizar os serviços ou adicionar novos, talvez seja necessário atualizar as regras de roteamento do gateway. Implemente processos ou fluxos de trabalho para gerenciar regras de roteamento ao adicionar ou modificar serviços, certificados SSL, listas de permissões de IP e configurações de segurança. Utilize ferramentas de infraestrutura como código e automação para simplificar o gerenciamento do gateway de API.
Próximas etapas
Artigos anteriores exploravam as interfaces entre microsserviços e entre microsserviços e aplicativos cliente. Essas interfaces tratam cada serviço como uma unidade autocontida e opaca. Um princípio crítico da arquitetura de microsserviços é que os serviços nunca devem expor detalhes internos sobre como gerenciam dados. Essa abordagem tem implicações significativas para manter a integridade e a consistência dos dados, que é o assunto do próximo artigo.
considerações sobre dados para microsserviços