# Сходства и различия Angie и nginx

*25.08.2023*

Как проект Angie и продукт Angie PRO соотносятся со своим предшественником,
nginx, и его коммерческой версией NGINX Plus.

![Angie в сравнении с nginx](../../_images/news/shodstva-i-razlichiya-angie-i-nginx.png)![Angie в сравнении с nginx](../../_images/news/shodstva-i-razlichiya-angie-i-nginx.png)

## **Введение**

Сегодня поговорим на тему, которая вызывает оживление у всех, кто знакомится с
нашим проектом, — то, как проект Angie и продукт Angie PRO соотносятся со своим
предшественником, nginx, и его коммерческой версией NGINX Plus. Читая публикации
в российском сегменте Интернета, мы видим, что эти вопросы до сих пор активно
обсуждаются; постараемся пролить свет на все, что порождает особый интерес.

TL;DR: нет, мы не просто переклеили шильдик.

## Как Angie относится к nginx

С самого начала Angie позиционируется как ответвление nginx. Это понятие (англ.
"fork", не стоит путать с "branch" — веткой кода) является, пожалуй,
одним из краеугольных камней открытого программного обеспечения. С другой
стороны, оно же нередко сопровождается непониманием и кривотолками.

Ответвление возникает, когда на основе проекта с открытым исходным кодом
начинается работа над новым проектом, целиком или частично заимствующим код
предшественника. Само заимствование вряд ли должно вызывать вопросы: именно для
этого создатели изначально делают код открытым. Как говорил классик, "Пусть
расцветают сто цветов, пусть соперничают сто школ".

Новый проект зачастую не связан с предшественником напрямую: над ним работают
другие люди, и у них собственное видение будущего. Естественно, нередко
ответвление создают бывшие участники проекта, покинувшие команду. Еще один
типичный случай — развитие открытого проекта с участием коммерческой компании:
достаточно вспомнить хотя бы такой пример, как MariaDB.

При этом ответвление не является статичной копией — если код предшественника
развивается, то улучшения и добавления в нем регулярно просачиваются и в новый
проект. Именно это происходит в Angie: выпуская очередную версию, мы
"затягиваем" в нее изменения (нередко существенные), произошедшие в открытой
версии nginx.

Наконец, отметим, что в Angie нет кода NGINX Plus, закрытой коммерческой версии
nginx; более того, у нас нет цели сделать наш платный веб-сервер, [Angie PRO](https://angie.software/angie/docs/), стопроцентной функциональной копией NGINX
Plus. Как говорил другой классик, "Мы пойдем другим путем".

## Как Angie (импорто)замещает nginx

Angie может выступать полноценной подменой открытой версии nginx, предоставляя
те же возможности, что и соответствующий выпуск предшественника (о собственных
возможностях — чуть ниже).

При этом, помимо привычных операционных систем и вычислительных архитектур,
Angie сознательно ориентируется на платформы, для которых "официальный"
nginx будет собираться еще нескоро: это такие сертифицированные в России ОС, как
ALT Linux, Astra Linux SE и РЕД ОС, а также процессоры "Байкал" и
"Эльбрус".

Еще одно отличие состоит в нашем подходе к сторонним модулям. Одним из
преимуществ, обеспечивших в свое время популярность nginx, является расширяемая
архитектура — кто угодно может написать модуль, реализующий новую полезную
функциональность, и свободно выложить его в открытый доступ.

Со временем в Интернете сформировалась целая экосистема таких сторонних модулей;
правда, заниматься их сборкой пользователям приходилось самим. Мы решили
упростить их жизнь и ведем единообразную сборку [готовых пакетов](https://angie.software/angie/docs/installation/oss_packages/#install-dynamicmodules-oss/) для целого ряда
таких модулей в своих репозиториях, используя свой опыт и знания.

## Как Angie (импорто)улучшает nginx

По меркам программной отрасли, проект nginx создавался достаточно давно. За это
время у пользователей накопилось множество пожеланий, которые мы стараемся
учесть, развивая Angie в соответствии с потребностями современной динамичной
ИТ-инфраструктуры; говоря проще, нам важны скорость, простота настройки и
удобство мониторинга. Кроме того, мы стремимся поддерживать актуальные для нас
стандарты.

## Стандарты и сертификация

Мы адаптируемся к тем условиям, в которых работаем. За время существования
проекта мы:

- локализовали разработку в России и вошли в Единый реестр российских программ
  для электронных вычислительных машин и баз данных;
- начали активную работу по поддержке шифрования в соответствии с ГОСТ;
- внедрили поддержку ряда используемых в Китае стандартов шифрования (а авторы
  библиотеки [Tongsuo](https://github.com/Tongsuo-Project/Tongsuo/) даже
  [рекомендуют](https://github.com/Tongsuo-Project/Tongsuo#典型应用/)
  нас).

## Скорость

Следующий фактор, на который мы обращаем внимание в своей работе, — ускорение
работы самого веб-сервера за счет устранения лишних задержек, а также быстрая
адаптация к меняющимся рабочим условиям. Мы:

- добавили API-интерфейс динамической конфигурации и средства адаптивной
  DNS-адресации, что помогает обойти конструктивные ограничения предшественника
  и быстрее менять настройки без перерасхода ресурсов;
- реализовали механизм привязки пользовательских сессий к проксируемому серверу,
  что расширяет применимость Angie для разных сценариев использования и экономит
  ресурсы;
- внедрили активные проверки работоспособности проксируемых серверов,
  уменьшающие вероятность отправки реального запроса на неработающий сервер; это
  снижает задержки при обработке запросов и повышает качество сервиса для
  конечных пользователей;
- создали возможность сегментировать прокси-кэш, тем самым более эффективно
  задействуя все ресурсы сервера.

## Настраиваемость

Еще одна область, в которой мы хотим добиться улучшений, — это гибкость и
удобство настройки веб-сервера. Мы:

- добавили для групп проксируемых серверов упомянутый выше API-интерфейс
  динамической конфигурации, который упрощает интеграцию Angie с современной
  ИТ-инфраструктурой, а также настройки, позволяющие динамически адаптироваться
  к изменениям в DNS-адресации;
- предоставили ряд других настроек, менее масштабных, но весьма полезных.

## Наблюдаемость

Наконец, важным для нас аспектом развития Angie является мониторинг состояния
самого веб-сервера и проксируемых серверов. Мы:

- реализовали в API-интерфейсе возможность получения базовой информации о
  веб-сервере, а также статистики по всем основным аспектам его
  функционирования в популярных современных форматах;
- внедрили уже упомянутые активные проверки проксируемых серверов,
  самостоятельно следящие за их работоспособностью;
- добавили семейство настроек для сбора статистики по сессиям передачи данных и
  запросам разрешения адресов.

## Итоги

Мы кратко рассказали о том, в чем состоят особенности Angie, а также перечислили
основные приоритеты для дальнейшего развития проекта; о наших планах на будущее,
а также о нашей версии Ingress Controller, мы подробнее расскажем отдельно.
Надеемся, что теперь сходства и различия Angie и nginx будут вызывать меньше
вопросов. Спасибо, что вы с нами!
