Сходства и различия 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 для разных сценариев использования и экономит ресурсы;
внедрили активные проверки работоспособности проксируемых серверов, уменьшающие вероятность отправки реального запроса на неработающий сервер; это снижает задержки при обработке запросов и повышает качество сервиса для конечных пользователей;
создали возможность сегментировать прокси-кэш, тем самым более эффективно задействуя все ресурсы сервера.
Настраиваемость#
Еще одна область, в которой мы хотим добиться улучшений, — это гибкость и удобство настройки веб-сервера. Мы:
добавили для групп проксируемых