Por que você escolheria o Apache APISIX em vez do NGINX ou Kong?

API7.ai

July 30, 2022

Products

O gateway de API é um componente importante da infraestrutura na era da computação em nuvem nativa. Existem dois critérios comuns para avaliar um gateway de API: quão dinâmico ele é e quão madura é sua observabilidade. Muitas empresas costumavam usar Nginx ou Kong como seu gateway de API, mas depois migraram para o Apache APISIX. Como um gateway de API nascido para a era da nuvem nativa, o Apache APISIX realmente resolve muitos pontos problemáticos para as empresas em várias dimensões. Agora você pode estar se perguntando: por quê?

Limitações do NGINX e do Kong

Na era dos serviços monolíticos, o NGINX podia lidar com a maioria dos cenários. Já na era da nuvem nativa, o NGINX tem duas desvantagens devido à sua arquitetura:

  • O NGINX não suporta gerenciamento de cluster. Quase todas as empresas têm seu próprio sistema de gerenciamento de configuração do NGINX. Embora os sistemas sejam semelhantes, não há uma solução unificada.
  • O NGINX não suporta recarregamento dinâmico de configurações. Se o usuário modificar a configuração do NGINX, será necessário recarregar o NGINX. Além disso, no Kubernetes, os serviços mudam com frequência. Portanto, se o NGINX for usado para lidar com o tráfego, será necessário reiniciar o serviço com frequência, o que é inaceitável para as empresas.

O Kong resolve as desvantagens do NGINX, mas traz novas limitações:

  • O Kong precisa depender de um banco de dados PostgreSQL ou Cassandra, o que torna a arquitetura do Kong muito inchada e traz uma limitação de alta disponibilidade para a empresa. Se o banco de dados falhar, todo o gateway de API falha.
  • O roteamento do Kong usa busca por travessia. Quando há mais de mil rotas no gateway, seu desempenho cai drasticamente.

O APISIX resolve todas as limitações acima e se torna o melhor gateway de API na era da nuvem nativa.

Vantagens do Apache APISIX

Arquitetura bem projetada

Primeiro, o Apache APISIX tem uma arquitetura excelente. A nuvem nativa, como tendência tecnológica atual, mudará a arquitetura técnica das empresas tradicionais. Muitos aplicativos estão migrando para microsserviços e conteinerização. O APISIX seguiu a tendência tecnológica desde o início:

image

Como mostrado na figura acima, à esquerda e à direita estão o Plano de Dados (Data Plane) e o Plano de Controle (Control Plane) do APISIX:

  • Plano de Dados: Baseado na biblioteca de rede do NGINX (sem usar o roteamento, configuração estática e módulos C do NGINX), ele usa Lua e NGINX para controlar dinamicamente o tráfego de solicitações;
  • Plano de Controle: Os administradores podem operar o etcd por meio da API RESTful integrada. Com a ajuda do mecanismo de Watch do etcd, o APISIX pode sincronizar a configuração para cada nó em milissegundos.

Para atualizar dados, o Kong usa o método de polling do banco de dados; pode levar de 5 a 10 segundos para obter a configuração mais recente, enquanto o APISIX alcança o mesmo monitorando as mudanças de configuração do etcd, o que pode controlar o tempo em milissegundos.

Como tanto o APISIX quanto o etcd suportam implantação de múltiplas instâncias, não há ponto único de falha.

Ecossistema rico

A figura abaixo mostra o mapa do ecossistema do APISIX. A partir desta figura, podemos ver que o APISIX suporta protocolos de camada 7, incluindo HTTP(S), HTTP2, Dubbo, o protocolo IoT MQTT, entre outros. Além disso, o APISIX suporta protocolos de camada 4, como TCP/UDP.

A parte direita da figura contém alguns serviços de código aberto ou SaaS, como Apache SkyWalking, Prometheus, HashiCorp Vault, etc. Na parte inferior da figura estão os ambientes de sistema operacional mais comuns, provedores de nuvem e ambientes de hardware. Como software de código aberto, o APISIX também pode ser executado em servidores ARM64.

image

O APISIX não apenas suporta muitos protocolos e sistemas operacionais, mas também suporta plugins de programação em várias linguagens. Quando foi lançado, o APISIX só suportava o uso da linguagem Lua para escrever plugins. Nesse caso, os desenvolvedores precisavam dominar a stack de tecnologia relacionada ao Lua e ao NGINX. No entanto, Lua e NGINX são tecnologias relativamente nichadas, conhecidas por poucos desenvolvedores. Portanto, habilitamos o desenvolvimento de plugins no APISIX com várias linguagens e oficialmente suportamos linguagens como Java, Golang, Node.js e Python.

image

Comunidade ativa

A figura abaixo é a curva de crescimento de contribuidores, onde o eixo horizontal representa a linha do tempo e o eixo vertical representa o número total de contribuidores. Podemos ver que os dois projetos, Apache APISIX e Kong, são relativamente mais ativos. O Apache APISIX manteve uma excelente taxa de crescimento desde o primeiro dia e está crescendo rapidamente a uma taxa próxima ao dobro do Kong. Em julho de 2022, o número de contribuidores do APISIX ultrapassou o do Kong, o que mostra a popularidade do APISIX. Claro, existem muitas outras maneiras de avaliar a atividade de um projeto, como o número de issues ativos por mês, o número total de PRs, etc. A boa notícia é que o APISIX também é imbatível nesses aspectos.

image

Infraestrutura de proxy unificada

A partir da figura abaixo, acredito que você já entendeu o objetivo do APISIX: unificar a infraestrutura de proxy.

image

Como o núcleo do APISIX é um serviço de proxy de alto desempenho, ele não vincula nenhuma propriedade de ambiente. Portanto, quando evolui para produtos como Ingress e Service Mesh, você não precisa alterar a estrutura interna do APISIX. A seguir, apresentaremos passo a passo como o APISIX suporta esses cenários.

Balanceamento de carga e gateway de API

O primeiro é para cenários tradicionais de LB e gateway de API. Como o APISIX é implementado com base no NGINX + LuaJIT, ele possui recursos de alto desempenho e segurança, além de suportar o carregamento dinâmico de certificados SSL, otimização de handshake SSL e outras funcionalidades. Em termos de balanceamento de carga, o APISIX também se sai melhor. A migração do NGINX para o APISIX não degrada o desempenho, mas melhora a eficiência de gerenciamento trazida por recursos como gerenciamento unificado.

Gateway de Microsserviços

O APISIX permite que você escreva plugins de extensão em várias linguagens, o que pode resolver o principal problema enfrentado pelos gateways de API de microsserviços leste-oeste - como gerenciar de forma unificada em ambientes heterogêneos. O APISIX também suporta descoberta de serviços como Nacos, etcd e Eureka, além de métodos DNS padrão, o que pode substituir completamente gateways de API de microsserviços como Zuul, Spring Cloud Gateway e Dubbo.

Kubernetes Ingress

Atualmente, o projeto oficial do Kubernetes Ingress Controller do K8s é desenvolvido principalmente com base no arquivo de configuração do NGINX, portanto, é um pouco insuficiente em capacidade de roteamento e modo de carregamento e tem algumas limitações óbvias. Por exemplo, ao adicionar ou modificar qualquer API, é necessário reiniciar o serviço para concluir a atualização da nova configuração do NGINX. Reiniciar o serviço tem um grande impacto no tráfego online.

O APISIX Ingress Controller resolve perfeitamente todas as limitações mencionadas acima: ele suporta recarregamento totalmente dinâmico. Ao mesmo tempo, ele herda todas as vantagens do APISIX e também suporta o CRD nativo do Kubernetes, o que facilita a migração dos usuários.

image

Service Mesh

Nos próximos cinco a dez anos, a arquitetura de service mesh baseada no modelo de nuvem nativa começará a emergir. O APISIX também começou a se posicionar nessa área antecipadamente. Após muita pesquisa e análise técnica, o APISIX passou a suportar o protocolo xDS. O APISIX Mesh nasceu, e o APISIX também tem seu lugar no campo de service mesh.

image

Resumo

Já se passaram três anos desde o primeiro dia em que o Apache APISIX foi lançado como código aberto. A comunidade altamente ativa e os estudos de caso provaram que o APISIX é o gateway de API perfeito para a era da nuvem nativa. Ao ler este artigo, acredito que você tenha uma compreensão mais abrangente do APISIX.

Se você tiver alguma dúvida, pode deixar uma mensagem no GitHub issue; os contribuidores da comunidade responderão rapidamente; é claro, você também pode entrar no canal do APISIX no Slack e na lista de e-mails; consulte Join Us.

Share article link