Сходства и различия Angie и nginx#
Как проект Angie и продукт Angie PRO соотносятся со своим предшественником, nginx, и его коммерческой версией NGINX Plus.
Введение#
Сегодня поговорим на тему, которая вызывает оживление у всех, кто знакомится с нашим проектом, — то, как проект 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 будут вызывать меньше вопросов. Спасибо, что вы с нами!