Semelhanças e Diferenças Entre Angie e nginx#
Como o projeto Angie e o produto Angie PRO se relacionam com seu predecessor, nginx, e sua versão comercial NGINX Plus.


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!