Semelhanças e Diferenças Entre Angie e nginx#

25.08.2023

Como o projeto Angie e o produto Angie PRO se relacionam com seu predecessor, nginx, e sua versão comercial NGINX Plus.

Angie vs. nginx Angie vs. nginx

Introdução#

Hoje discutiremos um tópico que desperta o interesse de todos que estão conhecendo nosso projeto — como o projeto Angie e o produto Angie PRO se relacionam com seu predecessor, nginx, e sua versão comercial NGINX Plus. Lendo publicações no segmento russo da Internet, vemos que essas questões ainda são ativamente discutidas; tentaremos esclarecer tudo que gera interesse particular.

TL;DR: não, nós não apenas mudamos o rótulo.

Como o Angie se Relaciona com o nginx#

Desde o início, o Angie foi posicionado como um fork do nginx. Este conceito (não deve ser confundido com "branch" — uma ramificação de código) é talvez uma das pedras angulares do software de código aberto. Por outro lado, frequentemente é acompanhado por mal-entendidos e interpretações equivocadas.

Um fork ocorre quando um novo projeto começa baseado em um projeto de código aberto, emprestando total ou parcialmente código de seu predecessor. O empréstimo em si dificilmente deveria gerar questionamentos: é precisamente por isso que os criadores inicialmente tornam o código aberto. Como disse um clássico, "Deixe cem flores florescerem, deixe cem escolas de pensamento competirem."

O novo projeto frequentemente não está diretamente relacionado ao seu predecessor: é trabalhado por pessoas diferentes, e elas têm sua própria visão para o futuro. Naturalmente, forks são frequentemente criados por ex-participantes do projeto que deixaram a equipe. Outro caso típico é o desenvolvimento de um projeto aberto com o envolvimento de uma empresa comercial: basta pensar em um exemplo como MariaDB.

Ao mesmo tempo, um fork não é uma cópia estática — se o código do predecessor está evoluindo, melhorias e adições regularmente filtram para o novo projeto também. Isso é exatamente o que acontece no Angie: a cada novo lançamento, nós "puxamos" mudanças (frequentemente significativas) que ocorreram na versão aberta do nginx.

Finalmente, notamos que o Angie não contém nenhum código do NGINX Plus, a versão comercial fechada do nginx; além disso, não visamos fazer nosso servidor web pago, Angie PRO, uma cópia funcional cem por cento do NGINX Plus. Como disse outro clássico, "Seguiremos um caminho diferente."

Como o Angie Substitui o nginx#

O Angie pode servir como um substituto completo para a versão aberta do nginx, fornecendo as mesmas capacidades que o lançamento correspondente de seu predecessor (mais sobre nossas próprias capacidades abaixo).

Ao mesmo tempo, além de sistemas operacionais familiares e arquiteturas de computação, o Angie conscientemente visa plataformas para as quais o nginx "oficial" não será compilado por um tempo: estas incluem sistemas operacionais certificados na Rússia, como ALT Linux, Astra Linux SE e RED OS, bem como processadores "Baikal" e "Elbrus".

Outra diferença está em nossa abordagem para módulos de terceiros. Uma das vantagens que garantiu a popularidade do nginx foi sua arquitetura extensível — qualquer um pode escrever um módulo que implementa nova funcionalidade útil e livremente publicá-lo para acesso aberto.

Com o tempo, um ecossistema inteiro de tais módulos de terceiros se formou na Internet; no entanto, os usuários tinham que montá-los eles mesmos. Decidimos simplificar suas vidas e manter uma montagem uniforme de pacotes prontos para vários desses módulos em nossos repositórios, utilizando nossa experiência e conhecimento.

Como o Angie Melhora o nginx#

Pelos padrões da indústria de software, o projeto nginx foi criado há bastante tempo. Durante esse tempo, os usuários acumularam numerosas solicitações que nos esforçamos para considerar enquanto desenvolvemos o Angie de acordo com as necessidades da moderna infraestrutura de TI dinâmica; simplesmente, valorizamos velocidade, facilidade de configuração e conveniência de monitoramento. Adicionalmente, visamos apoiar padrões que são atuais e relevantes para nós.

Padrões e Certificação#

Nos adaptamos às condições nas quais operamos. Durante a existência do projeto, nós:

  • localizamos o desenvolvimento na Rússia e entramos no Registro Unificado de Software Russo para Máquinas de Computação Eletrônica e Bancos de Dados;

  • iniciamos trabalho ativo para apoiar criptografia de acordo com GOST;

  • implementamos suporte para vários padrões de criptografia usados na China (e os autores da biblioteca Tongsuo até nos recomendam).

Velocidade#

Outro fator ao qual prestamos atenção em nosso trabalho é acelerar o próprio servidor web eliminando atrasos desnecessários, bem como adaptando-se rapidamente a condições de trabalho em mudança. Nós:

  • adicionamos uma API de configuração dinâmica e ferramentas de endereçamento DNS adaptativo, que ajudam a contornar as limitações estruturais do predecessor e alterar configurações mais rapidamente sem uso excessivo de recursos;

  • implementamos um mecanismo para vincular sessões de usuário ao servidor proxy, que expande a aplicabilidade do Angie para diferentes cenários de uso e economiza recursos;

  • introduzimos verificações ativas de saúde para servidores proxy, reduzindo a probabilidade de enviar uma solicitação real para um servidor que não está funcionando; isso diminui atrasos no processamento de solicitações e melhora a qualidade do serviço para usuários finais;

  • criamos a capacidade de segmentar o cache proxy, utilizando assim mais efetivamente todos os recursos do servidor.

Configurabilidade#

Outra área onde visamos alcançar melhorias é a flexibilidade e facilidade de configurar o servidor web. Nós:

  • adicionamos a API de configuração dinâmica mencionada anteriormente para grupos de servidores proxy, que simplifica a integração do Angie com infraestrutura de TI moderna, bem como configurações que permitem adaptação dinâmica a mudanças no endereçamento DNS;

  • fornecemos várias outras configurações, menos extensas mas bastante úteis.

Observabilidade#

Finalmente, um aspecto importante do desenvolvimento do Angie para nós é monitorar o estado tanto do próprio servidor web quanto dos servidores proxy. Nós:

  • implementamos na API a capacidade de recuperar informações básicas sobre o servidor web, bem como estatísticas sobre todos os aspectos-chave de sua operação em formatos modernos populares;

  • introduzimos as verificações ativas de saúde mencionadas anteriormente para servidores proxy, que monitoram autonomamente seu status operacional;

  • adicionamos uma família de configurações para coletar estatísticas sobre sessões de transferência de dados e solicitações de resolução de endereços.

Conclusão#

Delineamos brevemente o que torna o Angie distintivo e listamos as principais prioridades para o desenvolvimento futuro do projeto; forneceremos mais detalhes sobre nossos planos futuros, bem como nossa versão do Ingress Controller, separadamente. Esperamos que agora as semelhanças e diferenças entre Angie e nginx gerem menos questionamentos. Obrigado por estarem conosco!