NGINX para APISIX – Redefinindo a Dinâmica do Gateway de Companhias Aéreas
January 24, 2024
Visão Geral
Sobre
Nomeada a companhia aérea 5 estrelas do mundo pela Skytrax, esta líder do setor opera com segurança há 30 anos, cobrindo um total de quase 1.900 rotas internacionais, incluindo transporte de passageiros regular, voos charter para retomada de trabalho e escola, e voos de passageiros na Ásia, Europa, África, América do Norte e Oceania, entre outros.
Como uma companhia aérea em rápido crescimento, esta líder do setor precisava de um gateway de API para facilitar processos eficientes de reserva de voos, integrar e conectar diferentes sistemas e serviços, e lidar com cenários de alta concorrência e dados financeiros e de risco.
Desafios
- O aumento dos microsserviços e implantações em contêineres dificulta o gerenciamento do crescente número de instâncias do NGINX e das diversas configurações de domínio.
- A coexistência de muitas versões do NGINX aumenta a complexidade de atualização, compilação e adaptação dos plugins.
- O gateway de API anterior só atendia às necessidades básicas desta líder do setor, mas não oferecia funcionalidades avançadas como circuit breaker, canary release, etc.
Resultados
- A configuração de múltiplos nós foi simplificada, melhorando significativamente a eficiência de desenvolvimento e reduzindo custos de gerenciamento graças ao recurso de recarregamento a quente do APISIX.
- A líder do setor aproveita o ecossistema inclusivo de plugins do APISIX para realizar funções mais avançadas, simplificando a atualização de plugins e sistemas.
- A atualização melhora a eficiência e a manutenção do gateway—uma mudança crucial em direção a um gerenciamento de configuração organizado, modular e reutilizável.
Contexto
Esta líder do setor vem utilizando o NGINX como seu gateway norte-sul por um período considerável. No entanto, apesar de atender eficazmente às suas necessidades de tráfego à medida que o negócio e o portfólio de produtos se expandiam, a empresa enfrentou pontos de dor crescentes em vários aspectos.
1. Múltiplas Instâncias e Domínios do NGINX
Dentro desta empresa, havia várias instâncias do NGINX e conjuntos de diferentes domínios, cuja complexidade aumentava a dificuldade de gerenciamento. O núcleo do NGINX está em seus arquivos de configuração. À medida que o número de instâncias do NGINX crescia, confiar apenas na cópia de arquivos via SCP para o gerenciamento de configurações tornava-se cada vez mais difícil. Especialmente com o uso generalizado de microsserviços e implantação em contêineres no backend, havia uma maior demanda por flexibilidade na configuração de proxy reverso, levando a um aumento significativo na carga de trabalho para consistência de configuração.
2. Várias Versões do NGINX e Atualizações Problemáticas de Plugins
Por razões históricas, a equipe estava utilizando várias versões do NGINX simultaneamente, juntamente com numerosos plugins do NGINX. Embora a atualização do NGINX em si não apresentasse desafios significativos, a dificuldade surgia ao atualizar, compilar e adaptar vários plugins. Muitos desses plugins não eram oficiais, tornando a solução de problemas durante a compilação desafiadora. Além disso, garantir a compatibilidade com as versões do NGINX não era uma certeza.
3. Falta de Padrões para Configurações do NGINX
A herança de sistemas de várias equipes resultou em uma infinidade de práticas de configuração do NGINX, mostrando diversas abordagens sem um padrão de configuração. A ausência de um padrão de configuração unificado destacou a diversidade nos métodos de implementação entre as equipes, evidenciando a necessidade de uma abordagem coesa e padronizada para as configurações do NGINX.
4. Funcionalidades Modernas de Gateway Insuficientes
Embora o NGINX atendesse eficientemente às demandas básicas de gateway norte-sul, como proxy reverso e balanceamento de carga, os requisitos dinâmicos de negócios da empresa exigiam funcionalidades avançadas. Implementar serviços como circuit breaker, controles de segurança e canary release tornou-se desafiador ao depender apenas do NGINX, levando à exploração de soluções mais robustas.
Seleção de Gateway para Necessidades de Negócios Precisas
Para enfrentar os desafios encontrados com o NGINX, esta líder do setor delineou meticulosamente três requisitos fundamentais para uma nova solução de gateway:
- Facilidade de Gerenciamento e Configuração: Eles precisam de uma solução que facilite o gerenciamento e a implantação unificada de configurações como rotas e serviços upstream em vários nós de gateway.
- Funcionalidades Mais Avançadas de Gateway de API: O novo gateway deve atender às necessidades modernas de negócios de gateway de API, incluindo circuit breaker, controles de segurança e canary release.
- Facilidade de Uso e Baixa Curva de Aprendizado: Considerando a redução de custos de gerenciamento, a equipe espera que a nova solução de gateway atenda à maioria das necessidades básicas por meio de configuração e métodos de baixo código sem esforço.
Após esclarecer as atualizações iterativas e os requisitos básicos para seu gateway norte-sul existente, a empresa pesquisou vários produtos populares no mercado e, finalmente, escolheu o APISIX como seu novo gateway.
Por que não o OpenResty
Durante a pesquisa, o OpenResty foi considerado primeiro, uma solução amplamente adotada por algumas empresas. Sua principal vantagem era a compatibilidade total dos arquivos de configuração com o NGINX. Migrar do NGINX para o OpenResty não foi tão difícil para a empresa, embora houvesse configurações de domínios complexos.
No entanto, em comparação com o Kong e o APISIX, a versão de código aberto do OpenResty carecia de plugins abrangentes e de um painel para configuração visual. Os usuários tinham que se envolver em codificação para atender a algumas funcionalidades básicas.
Por que não o Kong
A companhia aérea considerou o Kong como uma alternativa. Embora seus plugins padrão atendessem à maioria das necessidades, a interface visual (Dashboard) da versão de código aberto permaneceu inalterada por vários anos, levando a uma preferência por soluções com interfaces mais atualizadas e amigáveis.
Em testes de estresse, o APISIX superou o Kong, mostrando um desempenho impressionante—duas vezes melhor que o Kong sem plugins e até dez vezes melhor com os plugins de limitação de taxa e Prometheus ativados. Além disso, o APISIX, baseado no OpenResty, demonstrou excelentes capacidades de roteamento, aumentando a confiança da equipe.
Por que não o Envoy
Apesar das impressionantes funcionalidades do Envoy, a linguagem C++ e a curva de aprendizado mais íngreme, especialmente para a limitação da equipe técnica, levaram a equipe a decidir contra a escolha do Envoy como a solução de gateway preferida.
No final, a equipe técnica optou pelo APISIX como seu novo gateway devido à sua funcionalidade e desempenho reconhecidos.
Por que o APISIX se Destaca?
O APISIX se destacou em comparação com o Kong por duas razões principais.
-
Painel do APISIX
Com o Painel, a equipe técnica pode gerenciar convenientemente várias rotas e configurações de plugins. Notavelmente, o Painel do APISIX é uma parte de código aberto do projeto, garantindo atualizações contínuas em linha com o desenvolvimento do APISIX, proporcionando uma experiência de gerenciamento aprimorada.
-
Projeto de Código Aberto da Apache
Sendo um projeto de nível superior na Apache Software Foundation, o APISIX facilitou para os usuários encontrar documentação técnica relevante em comparação com o Kong. Ter o suporte da comunidade Apache forneceu assistência técnica confiável ao enfrentar desafios, tornando o APISIX uma escolha mais adequada para a companhia aérea.
Além disso, o APISIX aborda efetivamente os pontos de dor mencionados anteriormente em relação ao NGINX.
-
O APISIX armazena configurações no etcd, permitindo que os desenvolvedores gerenciem vários nós do APISIX para diferentes domínios com facilidade, implantando um único cluster etcd.
-
O APISIX vem com plugins comuns, incluindo verificações de saúde e outros plugins de monitoramento, eliminando preocupações com compatibilidade e atualizações semelhantes às enfrentadas com o NGINX.
-
O APISIX inclui vários plugins de segurança e controle de tráfego, permitindo facilmente funcionalidades como circuit breaker, controles de segurança, canary releases e muito mais.
No geral, o APISIX se destaca como o produto mais adequado para a equipe técnica.
Migrando do NGINX para o APISIX: Explorando Soluções Avançadas, mas Mais Simples
No NGINX, o gerenciamento de domínios e a implementação de funcionalidades são alcançados principalmente por meio de arquivos de configuração do NGINX. Embora ainda baseado no NGINX e no OpenResty, o APISIX adota uma abordagem completamente diferente, não utilizando mais arquivos de configuração do NGINX para gerenciar domínios e implementar funcionalidades.
Em vez disso, o APISIX configura rotas e upstreams com base em nomes de domínio e implementa várias funcionalidades adicionais nessas rotas por meio de plugins. O plugin CORS embutido do APISIX pode ser adotado para alcançar configurações entre regiões, eliminando a necessidade de convertê-las linha por linha.
Abaixo está uma comparação de código entre a configuração no NGINX e no APISIX.
# NGINX conf
add_header 'Access-Control-Allow-Origin' $corsHost;
add_header 'Access-Control-Allow-Methods' 'GET,POST,OPTIONS';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Accept,Authorization,appver';
if ($request_method = 'OPTIONS') {
return 204;
}
# APISIX plugins config
"cors": {
"allow_credential": true,
"allow_headers": "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Accept,Authorization,appver",
"allow_methods": "GET,POST,PUT,OPTIONS",
"allow_origins": "https://wap.test.com,http://wap.test.com,",
},
"response-rewrite": {
"status_code": 204,
"vars": [
[
"request_method",
"==",
"OPTIONS"
]
]
}
Ao comparar o NGINX e o APISIX, pode-se facilmente perceber que a configuração do NGINX pode parecer mais concisa, mas para indivíduos não familiarizados com o NGINX e o CORS, entender o significado subjacente pode não ser tão direto. Em contraste, o APISIX encapsula diferentes funcionalidades em plugins, tornando a configuração mais modular. Portanto, torna-se mais óbvio encontrar funcionalidades e entender as funções. Exemplos semelhantes de migração de configuração do NGINX para o APISIX existem para vários cenários, como configurar WebSocket no NGINX.
Conquistas
Gerenciamento Simplificado de Configuração de Múltiplos Nós
O APISIX melhora o armazenamento de configuração com o etcd, facilitando o gerenciamento de diversos nós do APISIX em vários domínios. Isso simplifica tarefas ao usar um único cluster etcd, garantindo controle efetivo sobre diferentes instâncias do APISIX com configurações específicas de domínio. Além disso, o método centralizado reduz a complexidade, promove um gerenciamento suave e aumenta a escalabilidade e eficiência do APISIX em vários cenários de domínio. Consequentemente, na companhia aérea, implantar um único cluster etcd é suficiente para supervisionar diferentes instâncias do APISIX vinculadas a configurações de domínio distintas.
Operações Simplificadas com Plugins do APISIX
O APISIX vem com plugins embutidos, como verificações de saúde comuns, semelhantes aos plugins frequentemente usados no NGINX. Essa funcionalidade elimina a necessidade de a companhia aérea se preocupar com problemas relacionados a atualizações e compatibilidade. A inclusão desses plugins no APISIX garante funcionalidade contínua e alivia preocupações associadas à atualização e manutenção da compatibilidade, proporcionando uma experiência sem complicações para a companhia aérea.
Além disso, no APISIX, funcionalidades como compartilhamento de recursos entre origens (CORS) e suporte a WebSocket podem ser implementadas de forma contínua usando plugins. Essa abordagem não apenas simplifica o processo de desenvolvimento, mas também contribui para uma resolução mais sofisticada e eficiente dos desafios da companhia aérea.
Estabeleceu um Gateway de API Abrangente
O APISIX vem equipado com vários plugins de segurança e controle de tráfego, facilitando a implementação fácil de limitação de serviço, medidas de segurança e lançamentos graduais. Isso capacita a companhia aérea a aproveitar uma gama mais ampla de funcionalidades básicas e avançadas. A adoção do APISIX se traduz em uma conquista significativa para a companhia aérea, permitindo maior confiabilidade do serviço, controles de segurança robustos e estratégias de implantação eficientes, como lançamentos graduais, contribuindo, em última análise, para uma capacidade operacional e desempenho elevados.
Reformulou Configurações Legadas em Módulos Reutilizáveis
Ao longo de todo o processo de atualização, a equipe técnica descobriu inúmeras configurações desatualizadas na configuração existente do NGINX, muitas das quais envolviam cópia e cola sem sentido. Essa atualização serviu como uma reformulação completa de todo o gateway norte-sul, focando especialmente nas funcionalidades fornecidas pelo APISIX, como o plugin_config. Essas funcionalidades facilitaram significativamente o gerenciamento modularizado e a reutilização de configurações no nível do gateway. A implementação do plugin_config e das capacidades relacionadas do APISIX não apenas simplificou o processo de configuração, mas também aumentou a eficiência e a manutenção geral do nosso gateway norte-sul. Essa atualização marcou uma mudança crucial em direção a uma abordagem de gerenciamento de configuração mais organizada, modular e reutilizável.
Resumo
Desde abril de 2023, quando esta líder do setor encontrou o APISIX pela primeira vez, até a migração bem-sucedida do NGINX para o APISIX no ambiente de produção em julho do mesmo ano, todo o processo de migração trouxe resultados satisfatórios.
Nos estágios iniciais da migração, a equipe técnica lidou com várias configurações históricas e levantou preocupações sobre se os plugins do APISIX poderiam replicar totalmente todas as funcionalidades do nosso NGINX existente. No entanto, o resultado final demonstrou que os plugins do APISIX foram mais do que capazes de atender a esse desafio.
Em resumo, o APISIX forneceu uma solução mais elegante e ajudou a líder do setor a avançar para uma nova fase técnica. Ele resolveu perfeitamente os vários pontos de dor que encontramos no NGINX, e seu rico conjunto de plugins permite que a companhia aérea atenda facilmente a várias novas demandas apresentadas pelos clientes.