Alternativa ao NGINX que facilita sua vida: Apache APISIX
September 15, 2022
A API é uma parte essencial do mundo digital, e o gateway de API assume a pesada responsabilidade de proteger sua segurança e estabilidade como o primeiro portão da API. Muitos engenheiros de software e equipes usaram o NGINX antes, mas ficaram frustrados com os gargalos e restrições do NGINX. Existe uma alternativa melhor?
Uma ótima alternativa ao NGINX é o Apache APISIX, mas o que é o Apache APISIX?
O que é o Apache APISIX
Apache APISIX é um gateway de API de alto desempenho, dinâmico e de tráfego total. As quatro características notáveis do Apache APISIX:
- A propriedade Apache: APISIX é de código aberto e também é um projeto de alto nível da Apache Software Foundation. É impossível modificar a licença de código aberto no meio do caminho, como fizeram o ElasticSearch e o MongoDB. Como o APISIX pertence à Apache Software Foundation (ASF), ele não é mais um projeto de uma empresa ou de um indivíduo.
- Alto desempenho: APISIX é desenvolvido com base no OpenResty (uma distribuição do NGINX), então o APISIX também herda o poder do próprio NGINX.
- Dinâmico: Se o NGINX fornece uma arquitetura subjacente robusta, o OpenResty adiciona mais possibilidades ao NGINX, permitindo o uso de Lua para controlar o comportamento do NGINX. E o APISIX, com sua flexibilidade e forte conexão com outros sistemas, torna-se um gateway de API totalmente dinâmico.
- Em tempo real: APISIX armazena a configuração no etcd. Essa vantagem é que as mudanças de configuração podem ser monitoradas e obtidas em tempo real através da API RESTful do etcd, porque o etcd em si é um banco de dados KV distribuído, que também é usado pelo Kubernetes para armazenar a configuração. O NGINX usa arquivos estáticos para armazenar a configuração, e se a configuração for atualizada, o tempo para recarregar o NGINX será muito longo.
Apache APISIX vs NGINX
Como mencionamos que o APISIX é desenvolvido com base no NGINX, você pode perguntar: qual é a diferença entre o APISIX e o NGINX?
A primeira coisa a notar é que a comparação entre APISIX e NGINX não é uma comparação direta. Afinal, o NGINX é um proxy leve, e o APISIX se concentra em tornar as funções do produto mais maduras. Além disso, ele tem mais recursos porque o APISIX é redesenvolvido com base no NGINX.
Se você está usando o NGINX como um gateway, as duas vantagens a seguir do APISIX lhe darão uma sensação mais profunda.
Configuração mais flexível
Em comparação com os arquivos de configuração do NGINX, o APISIX oferece várias maneiras de configurar. Por exemplo:
- Você pode configurar o APISIX via API HTTP. A configuração será escrita no etcd e, em seguida, sincronizada para cada nó pelo etcd;
- Você pode fazer isso com o APISIX Dashboard. No APISIX Dashboard, a visualização gráfica ajudará você a configurar de forma mais clara;
- Se você não quiser usar métodos de armazenamento com estado, como o etcd, pode usar arquivos estáticos como o K8s. O APISIX também suporta obter configurações individuais de arquivos YAML locais;
- Se você implantar o APISIX no K8s, pode usar o APISIX Ingress Controller para obter a configuração emitida pelo CRD;
- Se você implantar o APISIX como o plano de dados do Istio, também pode obter a configuração emitida pelo Istio identificando o xDS.
Melhor extensibilidade
Embora o NGINX também tenha introduzido o NJS para alcançar controle dinâmico, ele não é tão ideal quanto a extensibilidade do APISIX.
Como o APISIX pode ser estendido com LuaJIT, ele também suporta o Plugin Runner fora do processo para executar plugins externos escritos em linguagens como Go, Java, Python, Node.js, etc.
Além disso, a partir do APISIX 2.11, você pode executar o plugin Wasm. Com essa função, você pode escrever plugins no APISIX em Rust, TinyGo e outras linguagens e, em seguida, compilá-los em código Wasm para rodar no APISIX.
Configurar plugins Wasm e plugins Lua no APISIX mostra quase nenhuma diferença em termos de funcionalidade. Como resultado, ele pode alcançar desempenho semelhante à implementação nativa do Lua e alcançar a eficiência de desenvolvimento de linguagens de alto nível.
Quais são os principais benefícios do Apache APISIX
As vantagens descritas acima são bastante boas, mas não são as mais críticas do APISIX. A maior vantagem do APISIX é sua rede de ecossistema interligada com muitos projetos.
- No nível de autenticação, o APISIX suporta protocolos como OIDC e LDAP. Ao mesmo tempo, pode ser integrado com vários serviços ou frameworks de autenticação, como Keycloak, Casdoor, Casbin, OPA, etc.
- No nível de observabilidade, o APISIX suporta a conexão com várias ferramentas de log, como Clickhouse, Datadog, Splunk, Apache Kafka, Apache RocketMQ, etc. Ele também pode expor métricas ricas através do Prometheus para suportar vários sistemas de rastreamento, como OpenTracing, OpenTelemetry e Apache Skywalking.
- No nível de descoberta de serviços, o APISIX não apenas suporta obter endereços upstream do Nacos, Eureka, Consul e Zookeeper, mas também do DNS (seja através de registros A/AAAA ou SRV). Além disso, se você usar o APISIX como um K8s Ingress Controller, pode obter a configuração correspondente do recurso Ingress (o APISIX suporta a especificação da API Gateway do K8s).
O APISIX atual ainda está em fase de desenvolvimento rápido. Com o tempo, o APISIX será integrado a mais e mais projetos, abrindo mais possibilidades de cooperação e simplificando muito o trabalho de integração com sistemas existentes.
Se o serviço que você deseja conectar não estiver no ecossistema de plugins do APISIX, você pode usar diretamente os plugins existentes para desenvolvimento personalizado, alcançando funções mais específicas para o seu negócio.
Qual Gateway de API você deve escolher
Claro, para escolher um gateway adequado, você também precisa considerar sua situação real de negócios.
Se você já está usando o NGINX como um proxy na frente de aplicativos de negócios, e alguma lógica é colocada no NGINX, então o APISIX será sua melhor escolha. Como o APISIX é desenvolvido com base no NGINX, você pode migrar suavemente o NGINX para o APISIX com base em suas necessidades.
Se você nunca usou um gateway e deseja escolher um projeto de gateway de API de código aberto adequado com base na situação da sua equipe, então você precisa se concentrar nos seguintes aspectos:
- Se a frequência de atualizações é boa o suficiente. Você pode escolher um projeto de Gateway de API bem mantido observando a atividade de cada projeto, porque ninguém quer escolher um projeto que está em declínio. Você pode ter uma noção da atividade do projeto através do gráfico Contributor Over Time.
- Se as funções do projeto são completas. Se o gateway selecionado não puder atender às necessidades atuais e futuras da equipe, e porque o projeto adiciona ao trabalho de desenvolvimento (como gerenciamento de configuração, integração com serviços internos), considere cuidadosamente.
- Se alguns dos indicadores técnicos complexos do projeto têm um bom desempenho, digamos, se QPS, latência e uso de memória atendem aos requisitos de negócios. Geralmente, é desafiador fazer uma otimização disruptiva de um gateway. Portanto, se um gateway não puder atender a esses indicadores complexos, será difícil fazer avanços, não importa como seja iterado posteriormente.
- Se há mão de obra e tempo suficientes na equipe para aprender e manter o Gateway de API. Afinal, a tomada de decisão técnica não é uma atividade puramente técnica.
Claro, se você já usou outros gateways de API, mas o gateway não atende ao cenário de negócios atual, então você pode usar o Apache APISIX como uma de suas opções.
Como migrar do NGINX para o Apache APISIX
Você é sábio se chegou até aqui e decidiu substituir seu NGINX existente pelo APISIX!
Mas antes de migrar, você precisa revisar alguns dos recursos do produto que possui ou está usando. Geralmente, esses recursos podem ser divididos em três categorias:
- Substituição direta. O APISIX permite que os usuários usem a configuração do NGINX diretamente, então a maioria das configurações globais do NGINX pode ser reutilizada pelo APISIX. Quanto à configuração no nível do aplicativo, ela pode ser substituída pelas Rotas do APISIX;
- Requer ajustes, como mudanças nas métricas;
- Requer desenvolvimento adicional
Após concluir o desenvolvimento necessário, você gradualmente substituiria o NGINX pelo APISIX em cenários reais de negócios. Durante o processo de migração suave, você precisa considerar as três perguntas a seguir:
- Como encaminhar as solicitações do cliente para o APISIX?
- Como colocar a configuração equivalente no APISIX e no NGINX?
- Como lidar com as métricas expostas pelo APISIX e pelo NGINX?
Você deve considerar as três perguntas acima e seu ambiente de aplicação real. Finalmente, não se esqueça de preparar o "plano de reversão para bugs" com antecedência.
Através deste artigo, acredito que você entendeu o poder do Apache APISIX. Vamos tentar usar o Apache APISIX como seu gateway de API!