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

25.08.2023

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

Angie в сравнении с nginx Angie в сравнении с nginx

Введение#

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

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

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

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

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

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

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

Наконец, отметим, что в Angie нет кода NGINX Plus, закрытой коммерческой версии nginx; более того, у нас нет цели сделать наш платный веб-сервер, Angie PRO, стопроцентной функциональной копией NGINX Plus. Как говорил другой классик, "Мы пойдем другим путем".

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

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

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

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

Со временем в Интернете сформировалась целая экосистема таких сторонних модулей; правда, заниматься их сборкой пользователям приходилось самим. Мы решили упростить их жизнь и ведем единообразную сборку готовых пакетов для целого ряда таких модулей в своих репозиториях, используя свой опыт и знания.

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

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

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

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

  • локализовали разработку в России и вошли в Единый реестр российских программ для электронных вычислительных машин и баз данных;

  • начали активную работу по поддержке шифрования в соответствии с ГОСТ;

  • внедрили поддержку ряда используемых в Китае стандартов шифрования (а авторы библиотеки Tongsuo даже рекомендуют нас).

Скорость#

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

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

  • реализовали механизм привязки пользовательских сессий к проксируемому серверу, что расширяет применимость Angie для разных сценариев использования и экономит ресурсы;

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

  • создали возможность сегментировать прокси-кэш, тем самым более эффективно задействуя все ресурсы сервера.

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

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

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

  • предоставили ряд других настроек, менее масштабных, но весьма полезных.

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

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

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

  • внедрили уже упомянутые активные проверки проксируемых серверов, самостоятельно следящие за их работоспособностью;

  • добавили семейство настроек для сбора статистики по сессиям передачи данных и запросам разрешения адресов.

Итоги#

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