Por que os Microservices precisam de um API Gateway?

Xiaolan Cheng

February 17, 2023

Ecosystem

O que são microsserviços

A arquitetura de microsserviços, geralmente referida como microsserviços, é um tipo de arquitetura usada para desenvolver aplicações. Com microsserviços, grandes aplicações podem ser divididas em múltiplos componentes independentes, cada um com suas próprias responsabilidades. Ao processar uma solicitação do usuário, uma aplicação baseada em microsserviços pode chamar muitos microsserviços internos para gerar sua resposta em conjunto. Os microsserviços são um resultado do desenvolvimento da internet, e o rápido crescimento da internet fez com que a arquitetura dos sistemas mudasse constantemente.

No geral, a arquitetura dos sistemas evoluiu aproximadamente de arquitetura monolítica para arquitetura SOA e, finalmente, para arquitetura de microsserviços. A progressão específica e os prós/contras de cada arquitetura são descritos na tabela abaixo.

Tipo de ArquiteturaDescriçãoVantagensDesvantagens
Arquitetura de Aplicação MonolíticaEmpacota todo o código funcional em um único serviço.1. Arquitetura simples com baixo custo de desenvolvimento e manutenção do projeto.Acoplar todos os módulos é benéfico para desenvolver e manter pequenos projetos, mas pode criar problemas para grandes projetos, incluindo
1. Os módulos do projeto estão muito acoplados, e um problema de desempenho em um módulo pode fazer com que todo o projeto fique indisponível;
2. O projeto precisa de melhor escalabilidade.
Arquitetura SOAO termo significa "arquitetura orientada a serviços", que geralmente envolve múltiplos serviços.
Um serviço normalmente existe de forma independente em um processo do sistema operacional, e a comunicação entre serviços é alcançada por meio de dependências ou mecanismos de comunicação,
No final, fornece uma série de funções.
1. Integração de sistemas: Do ponto de vista sistêmico, resolve problemas de comunicação entre sistemas empresariais, transformando suas conexões de rede anteriormente desordenadas e não estruturadas em uma configuração gerenciada e estruturada em estrela.
2. Sistema orientado a serviços: Do ponto de vista funcional, abstrai a lógica de negócios em serviços reutilizáveis e combináveis e usa orquestração de serviços para alcançar a rápida reconstrução de processos de negócios.
3. Negócios orientados a serviços: Do ponto de vista da empresa, abstrai as funções da empresa em serviços reutilizáveis e combináveis.
1. Centralizar serviços cria dependências entre eles, e uma falha em um serviço pode desencadear uma falha em cascata em outros serviços.
2. As dependências e relações de invocação entre serviços são complexas, tornando o teste e a implantação difíceis.
Arquitetura de MicrosserviçosMicrosserviços são a sublimação da SOA. Um dos principais focos da arquitetura de microsserviços é "a necessidade de componentizar e serviçar completamente o negócio",
O sistema de negócios original será dividido em múltiplas partes que podem ser desenvolvidas, projetadas e implantadas de forma independente.
Essas partes serão executadas como pequenas aplicações independentes. Cada aplicação colaborará e se comunicará com as outras para alcançar integração e interatividade, que é a essência de uma arquitetura de microsserviços.
1. Descentralização;
2. Componentização alcançada por meio de serviços;
3. Divisão de serviços e equipes de desenvolvimento com base em capacidades de negócios;
4. Infraestrutura automatizada (DevOps, implantação automatizada).
1. O custo de desenvolvimento é relativamente alto;
2. Causa problemas de tolerância a falhas para serviços;
3. Causa problemas de consistência de dados;
4. Envolve transações distribuídas

Portanto, os microsserviços são um resultado inevitável do desenvolvimento da internet, e a arquitetura de sistemas de muitas empresas tradicionais está gradualmente se tornando orientada a microsserviços.

No entanto, com o desenvolvimento dos negócios na internet, o número de APIs também está aumentando dramaticamente, e gateways para gerenciamento unificado de APIs também enfrentarão desafios. Escolher um gateway de API mais robusto pode efetivamente melhorar as capacidades do sistema em monitoramento, recuperação de desastres, autenticação e limitação de taxa.

O que é um gateway de API?

O gateway de API fornece uma interface unificada para interações entre clientes e sistemas de serviços e serve como um ponto central para gerenciar solicitações e respostas. Escolher um gateway de API adequado pode simplificar o desenvolvimento e melhorar a eficiência da operação e gerenciamento do sistema.

Em uma arquitetura de microsserviços, um gateway de API serve como uma solução para o design do sistema, integrando vários microsserviços de diferentes módulos e coordenando serviços de forma unificada.

Como um aspecto de acesso ao sistema, o gateway de API fornece um ponto de entrada unificado para clientes, oculta os detalhes de implementação da arquitetura do sistema e torna os microsserviços mais amigáveis ao usuário. Ele também integra algumas funcionalidades comuns, como autenticação, limitação de taxa e circuit breaker para evitar o desenvolvimento individual de cada microsserviço, melhorar a eficiência e padronizar o sistema, como autenticação de identidade, monitoramento, balanceamento de carga, limitação de taxa, degradação e detecção de aplicações.

Por que os microsserviços precisam de um gateway de API?

Gateway de API em microsserviços

Como mostrado no diagrama acima, o gateway de API serve como uma camada intermediária entre o cliente e os microsserviços. Ele pode fornecer microsserviços para o exterior em um endereço unificado e rotear o tráfego para os nós de serviço corretos dentro do cluster interno com base em regras apropriadas.

Sem um gateway de API, as entradas e saídas do tráfego não são unificadas, e o cliente precisa saber as informações de acesso de todos os serviços. O significado dos microsserviços não existirá. Portanto, um gateway de microsserviços é necessário para uma arquitetura de microsserviços. Além disso, o gateway de API desempenha um papel vital na observabilidade do sistema, autenticação de identidade, estabilidade e descoberta de serviços.

Desafios enfrentados pelos microsserviços

O gateway de microsserviços deve primeiro ter capacidades de roteamento de API. À medida que o número de microsserviços aumenta, o número de APIs também aumenta. O gateway também pode ser usado como um filtro de tráfego em cenários específicos para fornecer certas funcionalidades opcionais. Portanto, demandas mais altas são colocadas no gateway de API de microsserviços, como:

  • Observabilidade: No passado, a solução de problemas em aplicações monolíticas era frequentemente feita verificando logs em busca de mensagens de erro e pilhas de exceção. No entanto, em uma arquitetura de microsserviços com muitos serviços, o diagnóstico de problemas se torna muito difícil. Portanto, como monitorar a operação dos microsserviços e fornecer alertas rápidos quando ocorrem anomalias representa um grande desafio para os desenvolvedores.
  • Autenticação e Autorização: Em uma arquitetura de microsserviços, uma aplicação é dividida em várias microaplicações, que precisam autenticar o acesso e estar cientes do usuário atual e suas permissões. O método de autenticação na arquitetura de aplicação monolítica não é adequado, especialmente quando o acesso não é apenas de um navegador, mas também de outras chamadas de serviços. Em uma arquitetura de microsserviços, vários cenários de autenticação devem ser considerados, incluindo acesso de aplicações externas, autenticação de usuário-serviço e autenticação de serviço-serviço.
  • Estabilidade do sistema: Se o número de solicitações exceder a capacidade de processamento de um microsserviço, ele pode sobrecarregar o serviço, causando até um efeito cascata que afeta a estabilidade geral do sistema.
  • Descoberta de serviços: O gerenciamento descentralizado de microsserviços também apresenta desafios para a implementação de balanceamento de carga.

Soluções

O gateway de API, como a ponte intermediária entre o cliente e o servidor, fornece um mecanismo de gerenciamento unificado para o sistema de microsserviços. Além das funções básicas, como distribuição de solicitações, gerenciamento de API e roteamento condicional, ele também inclui autenticação de identidade, monitoramento e alerta, análise de rastreamento, balanceamento de carga, limitação de taxa, isolamento e circuit breaker.

Autenticação de identidade: O diagrama a seguir ilustra como os microsserviços são unidos com um gateway de API para autenticação de identidade, onde todas as solicitações passam pelo gateway, efetivamente ocultando os microsserviços.

Autenticação de gateway de API em microsserviços

Monitoramento e Alerta/Análise de Rastreamento:

Como o intermediário entre o cliente e o servidor, o gateway de API é um excelente veículo para monitorar microsserviços.

A principal responsabilidade da função de monitoramento do gateway de API é detectar anomalias de conexão entre o gateway e os servidores de back-end em tempo hábil. Os usuários podem visualizar informações de log, informações de monitoramento, rastreamento, etc. na plataforma de monitoramento para a API. Além disso, quaisquer anomalias que surjam no host serão automaticamente relatadas ao painel de controle. Gateways específicos podem emitir alertas duplos para o cliente e o servidor.

Diagrama de Monitoramento e Análise de Rastreamento

Limitação de taxa, isolamento e circuit breaker:

À medida que a escala dos negócios na internet continua a aumentar, a concorrência dos sistemas também aumenta. Múltiplos serviços são frequentemente chamados uns pelos outros, e um link central pode chamar até dez serviços. Se o RT (tempo de resposta) de um determinado serviço aumentar drasticamente e os serviços upstream continuarem a solicitar, ocorrerá um ciclo vicioso. Quanto mais upstream esperando por resultados, mais serviços upstream serão bloqueados, e todo o processo acabará se tornando inutilizável, levando a uma avalanche de serviços.

Portanto, é necessário regular e gerenciar o tráfego de entrada. O diagrama a seguir mostra como os sistemas de microsserviços combinam gateways de API para realizar limitação de taxa, isolamento e circuit breaker.

Limitação de taxa, isolamento e circuit breaker

Seleção de gateways principais

Muitas implementações de gateways de código aberto estão disponíveis em microsserviços, incluindo NGINX, Kong, Apache APISIX e Envoy. Para a pilha de tecnologia Java, há opções como Netflix Zuul, Spring Cloud Gateway, Soul, etc. Mas você pode se perguntar, "Por que escolher o Apache APISIX em vez do NGINX e Kong?"

Aqui está uma breve comparação.

GatewayPontos de dorVantagens
NGINX1. É necessário recarregar para que as alterações na configuração entrem em vigor, o que não consegue acompanhar o progresso das tecnologias nativas da nuvem.1. Aplicações antigas;
2. Estável, confiável e testado pelo tempo;
3. Alto desempenho
Apache APISIX1. A documentação não é rica ou clara o suficiente e precisa de melhorias.1. Projeto de Nível Superior da Apache Foundation;
2. A arquitetura técnica está mais alinhada com os princípios nativos da nuvem;
3. Excelente desempenho;
4. Ecossistema rico;
5. Além de suportar plugins de desenvolvimento em Lua, também suporta plugins de linguagem para Java, Go, Python, Node e outros.
Kong1. O uso padrão de bancos de dados PostgreSQL ou Cassandra torna toda a arquitetura muito inchada e pode trazer problemas de alta disponibilidade;
2. O roteamento usa um algoritmo de busca por travessia, o que pode levar a uma diminuição significativa no desempenho quando há mais de mil rotas no gateway;
3. Algumas funcionalidades importantes exigem pagamento;
1. O pioneiro dos gateways de API de código aberto com uma grande base de usuários;
2. O desempenho atende às necessidades da maioria dos usuários;
3. Ecossistema rico;
4. Suporta desenvolvimento de plugins em Lua e Go;
Envoy1. É desenvolvido em C++, o que dificulta o desenvolvimento secundário;
2. Além de desenvolver filtros com C++, também suporta WASM e Lua.
1. O projeto graduado da CNCF é mais adequado para cenários de malha de serviços e suporta a implantação de arquiteturas de várias linguagens;
Spring Cloud Gateway1. Embora a comunidade Spring seja madura, há falta de recursos para o Gateway.1. O gateway fornece uma riqueza de funcionalidades prontas para uso, que podem ser usadas por meio de configuração do SpringBoot ou chamadas codificadas manualmente;
2. O framework Spring é altamente extensível com forte escalabilidade, fácil configuração e boa manutenção;
3. A comunidade Spring é madura;
4. Fácil de usar;
5. Conveniente para a pilha de tecnologia Java.

Resumo

À medida que o mundo da internet continua a se desenvolver, as empresas evoluem rapidamente, levando a mudanças constantes na arquitetura dos sistemas. A arquitetura de microsserviços tem sido amplamente adotada por muitas empresas.

À medida que a quantidade de dados e APIs dos microsserviços aumenta, é crucial escolher um excelente gateway de API para o gerenciamento de alto tráfego.

Este artigo compara gateways de API comuns, destacando suas respectivas vantagens e desvantagens. Se você está no processo de seleção de uma tecnologia de gateway de API, enfrentando problemas de desempenho em seu sistema de microsserviços ou procurando construir um sistema de microsserviços eficiente e estável, este artigo visa fornecer algumas ideias úteis.

Tags: