# 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](../../_images/news/shodstva-i-razlichiya-angie-i-nginx.png)![Angie vs. nginx](../../_images/news/shodstva-i-razlichiya-angie-i-nginx.png)

## **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 "incorporamos"
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](https://angie.software/angie/docs/), 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](https://angie.software/angie/docs/installation/oss_packages/#install-dynamicmodules-oss/) 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](https://github.com/Tongsuo-Project/Tongsuo/) até nos [recomendam](https://github.com/Tongsuo-Project/Tongsuo#典型应用/)).

## 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 com 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 com 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
  com 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 com 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 com 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!
