Em uma arquitetura de microsserviços, um cliente pode interagir com mais de um serviço front-end. Dado esse fato, como um cliente sabe quais pontos de extremidade 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.
diagrama
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 de corte cruzado, como autenticação, terminação SSL, TLS mútua e limitação de taxa.
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 acompanhar vários pontos de extremidade e lidar com falhas de forma resiliente.
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: pontos de extremidade públicos aumentam a superfície de ataque potencial e exigem proteção.
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 design abordam a funcionalidade de chave, como roteamento, agregação de solicitação e preocupações de corte cruzado:
de roteamento do 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.
de agregação do 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.
de descarregamento do Gateway de. Você pode usar um gateway de API para fornecer funcionalidade de corte cruzado, para que os serviços individuais não precisem fornecê-lo. Pode ser útil consolidar a funcionalidade de corte cruzado em um só lugar, em vez de tornar cada serviço responsável. Aqui estão exemplos de funcionalidade que você pode descarregar em um gateway de API:
- Terminação SSL
- TLS mútuos
- Autenticação
- Lista de permissões de IP ou lista de bloqueios
- Limitação da taxa do cliente (limitação)
- Registro em log e monitoramento
- Cache de resposta
- Firewall do aplicativo Web
- Compactaçã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.
controlador de entrada de malha de serviço. Se você usar uma malha de serviço, avalie os recursos do controlador de entrada específicos para essa malha de serviço. Verifique se há complementos compatíveis com AKS, como Istio e Open Service Mesh. Procure projetos de software livre de terceiros, como Linkerd ou Consul Connect. Por exemplo, o controlador de entrada istio dá suporte ao roteamento da camada 7, redirecionamentos HTTP, novas tentativas e outros recursos.
do Gateway de Aplicativo do Azure. O Gateway de Aplicativo é um serviço de balanceamento de carga gerenciado. Ele fornece o roteamento de camada 7, a terminação SSL e um WAF (firewall de aplicativo Web).
do Azure Front Door. O Azure Front Door é uma CDN (rede de distribuição de conteúdo). Ele usa pops (pontos de presença globais e locais) para fornecer acesso rápido, confiável e seguro ao conteúdo da Web estático e dinâmico de seus aplicativos globalmente.
de 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 informações, consulte Gerenciamento de API com o Gateway de Aplicativo do Azure.
Escolher 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 ofertas internas. Use soluções internas de gateway de API e entrada fornecidas por sua plataforma, como Aplicativos de Contêiner do Azure e AKS, sempre que 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 dentro de um cluster do AKS em suas ofertas do Controlador de Entrada. 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. Use ferramentas de infraestrutura como código e automação para simplificar o gerenciamento de 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 opaca autocontida. 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
Recursos relacionados
- APIs de design de para microsserviços
- Criar uma arquitetura de microsserviços
- Usando a análise de domínio para modelar microsserviços
- de avaliação e preparação de microsserviços