Интервью с Валентином Бартеневым: как бывшие сотрудники Nginx разрабатывают отечественный веб-сервер Angie
Уже больше года в информационном пространстве появляется компания «Веб-Сервер», разрабатывающая отечественный открытый веб-сервер Angie и его коммерческую версию Angie PRO. Информационная служба Хабра пообщалась с руководителем отдела разработки «Веб-Сервера» Валентином Бартеневым. Узнали историю компании, детали разработки, планы по развитию и готовы поделиться этим.
Как появилась компания «Веб-Сервер», и понимание, что такая компания с таким продуктом нужна на рынке?
Компания «Веб-Сервер» появилась в первую очередь благодаря инженерам, которые на протяжении последних 10 лет занимались поддержкой и разработкой веб-сервера nginx. Практически все мы выходцы из компании Nginx, которая с 2019 года принадлежит компании F5. И фактически мы просто сменили вывеску и продолжили заниматься тем, чем и занимались раньше в компании Nginx, но только уже под другим названием.
Ваш основной продукт — это движок Angie. Можно чуть подробнее рассказать про него: что это и зачем нужно на рынке?
Ну, как я уже упоминал, что все мы выходцы из компании Nginx. Если коротко, то Angie это то, чем фактически должен был стать nginx — это ответвление кодовой базы nginx, развиваемое его бывшими разработчиками, только уже под новым именем. В рамках нашего форка мы непрерывно улучшаем возможности веб-сервера, добавляем новые функции и позволяем пользователям легко мигрировать с nginx на наш веб-сервер, получая за счет этого дополнительную функциональность, которая касается отказоустойчивости, масштабируемости и мониторинга.
К примеру, есть какая-то компания, которая использует nginx. Зачем ей переходить на Angie? Зачем совершать миграцию, если и так все работает?
На текущий момент Angie полностью совместим с последними версиями nginx. То есть для компании, которая потенциально рассматривает такой переход, это практически ничего не будет стоить. Но для пользователя ключевым отличием является то, что, сделав такой переход, компания получает новые возможности.
Во-первых, это мониторинг. У Angie есть интерфейс мониторинга, который позволяет в реальном времени собирать огромное количество всевозможных метрик статистики о работе веб-сервера в удобных форматах JSON и Prometheus. Статистика очень важна для понимания того, как функционирует веб-сервер, какие пиковые нагрузки, совершается ли DDoS-атака на сервер. Это всё нужно для масштабирования и безопасности.
Очень важно отслеживать, как растёт нагрузка, насколько вообще сервер справляется с текущими задачами. И у нас для этого, помимо всего прочего, есть красивый веб-интерфейс (Angie Console Light), который позволяет все эти метрики наглядно отобразить. С их помощью инженер может быстро получить всю нужную информацию и начальству не стыдно показать.
Во-вторых, у нас более развитый функционал балансировки нагрузки, есть и привязка сессий, динамическое обновление списка проксируемых серверов из DNS, поддержка SRV-записей.
В-третьих, конфигурация может быть упрощена за счет того, что в Angie, например, можно объединять несколько локейшенов (директивы «location») в один и не дублировать конфигурацию. Мы в целом заботимся о том, чтобы упростить жизнь нашим пользователям и сделать обслуживание сервера легче.
Кому перечисленной функциональности на текущий момент окажется недостаточно, у нас в репозиториях с Angie собирается огромное количество всевозможных сторонних модулей. К nginx зачастую приходится либо собирать сторонние модули самостоятельно, либо пользоваться теми, что доступны в дистрибутиве. У нас же все эти сторонние модули уже представлены в виде готовых пакетов, которые устанавливаются на огромное количество операционных систем. Если и этого окажется мало, то у нас есть коммерческая версия Angie PRO. В ней в два раза больше возможностей из коробки и есть техническая поддержка этого продукта.
В nginx недавно появилась возможность разрабатывать сторонние модули на Rust. Есть ли что-то такое в Angie или, может быть, планируется?
Если данный инструментарий будет пользоваться спросом и популярностью, то мы, безусловно, рассмотрим такую возможность и для нашего веб-сервера. Но пока есть большие сомнения в том, что будет заметно хоть какое-то развитие и его судьба достаточно туманна.
Во-первых, сам инструментарий очень сырой. Даже если зайти на его GitHub-страницу, то можно увидеть, что он не предназначен для использования в проде и больше похож на некий концепт. Во-вторых, идеология использования самого языка Rust предполагает фокус на безопасности при написании программ, но вот тут такой момент, что сам интерфейс nginx в эксплуатации достаточно небезопасный. При использовании его с Rust получается, что никаких особых преимуществ у разработчика нет, поскольку он всё равно вынужден иметь дело с небезопасными внутренними интерфейсами веб-сервера. Как результат, если он начнёт писать модули на Rust, то он просто получит зоопарк языков. Чтобы разобраться с таким модулем и его поддерживать, пользователю нужно будет очень хорошо знать как сам Rust, так и внутреннее устройство nginx.
Другой момент, почему в принципе такой инструментарий появился. Нужно отметить, что если посмотреть на разработчиков этого инструментария, то можно увидеть, что они не являются коммиттерами nginx. Я предполагаю, что это какая-то внутренняя идея F5, которая предложена в качестве эксперимента, скорее всего, популяризаторами языка Rust. У них не много понимания проблем, которые испытывают разработчики сторонних модулей для nginx.
Мы эти проблемы очень хорошо понимаем, потому что в nginx исторически так сложилось, что нет в принципе такого безопасного, стабильного и надёжного интерфейса, который можно было бы использовать для написания модулей. С тем интерфейсом, который есть, делать это очень сложно. Поэтому мы рассматриваем такие варианты, как предоставить пользователям возможность расширять функциональность веб-сервера, используя какие-то уже более стабильные и надёжные интерфейсы.
В этом смысле мы смотрим активно на применение WASM, поскольку, как нам кажется, это достаточно неплохой и перспективный инструмент. Во-первых, на выходе получатся достаточно стабильные и безопасные модули. Во-вторых, их не придется переписывать при выходе новых версий.
На каком технологическом стеке написан Angie, что используется из того, чего нет в nginx?
Angie унаследовал архитектуру nginx. Это веб-сервер, написанный на языке СИ, имеется несколько процессов, которые работают асинхронно. В этом смысле мы тоже стараемся сохранять обратную совместимость. Чтобы все сторонние модули, которые за долгие годы были созданы сообществом nginx, точно так же работали и с Angie. Поэтому в этом смысле у нас минимум каких-то инноваций. То есть это всё по-прежнему: старый добрый nginx только с новыми возможностями.
Можно чуть подробнее рассказать про разницу между Angie и Angie PRO? Какая разница между продуктами кроме той, что у Angie открытый код?
Да, всё верно, у Angie свободный код и распространяется он по той же лицензии, что и nginx — BSD. Лицензия упрощённая, и состоит всего из двух пунктов. Angie PRO — это наш коммерческий продукт, куда добавлена дополнительная функциональность, интересная прежде всего большим компаниям.
В неё входит управление группами проксируемых серверов через API-интерфейс, активные проверки состояния проксируемых серверов, сегментирование HTTP-кэша ответов, привязка клиентских соединений позволяет проксировать NTLM авторизацию. Мониторинг времени ответа проксируемых серверов и балансировка с учетом наименьшего среднего времени ответа. Ну, а кроме того, Angie Pro у нас находится в реестре отечественного ПО и для компаний, для которых важно именно использовать технологии, которые внесены в реестр отечественного ПО — это также является поводом рассматривать Angie в качестве своего основного решения для развертывания веб-сервиса.
Есть ли какие-то особенности при разработке продукта, который должен пройти сертификацию и в итоге попасть в единый реестр ПО? Есть ли какие-то требования, которые кардинально отличаются от разработки любого другого коммерческого продукта?
Я не большой специалист именно по требованиям. Могу сказать, что с точки зрения команды разработчиков и самого процесса разработки каких-то сложностей или отличий с этим не возникло. То есть это всё решается на другом уровне и чаще всего не затрагивает самих разработчиков. По крайней мере, в нашем случае и в нашем конкретном проекте.
С точки зрения включения Angie PRO в единый реестр российского ПО — все требования для включения в реестр выполняются, в том числе разработка, модификация продукта осуществляются на территории России, средства хранения исходного кода также на серверах, размещенных в России, техническая поддержка также оказывается специалистами, находящимися на территории России.
Angie из коробки работает на отечественных дистрибутивах Linux. Есть ли какие-то особенности при разработке под них или разработка под Ubuntu ничем не отличается от разработки под любой другой дистрибутив, который был выпущен в России?
В целом так, за тем исключением, что мы проходили сертификацию на работоспособность на конкретных отечественных дистрибутивах. Ребята запускали, тестировали, проверяли, что всё работает. Возможно, что для Ubuntu тоже есть какая-то сертификация, просто она не столь актуальна. А так да, специфических особенностей нет.
Насколько большая команда работает над Angie и над Angie PRO?
Могу сказать, что команда Angie совершенно точно не меньше команды, которая работает и работала в лучшие годы над nginx. Это порядка 10 высококвалифицированных инженеров с опытом работы в десятки лет. Команда nginx всегда была очень компактной. Если вы знаете историю nginx, то до 2011 года его писал всего один человек — это Игорь Сысоев.
Какое будущее в целом есть у Angie, что можно ожидать, какие есть планы на развитие, если можно поделиться для наших читателей.
Прежде всего я думаю, что Angie ждет светлое и долгое будущее. Безусловно, останавливаться на достигнутом мы не намерены. Мы быстро развивающаяся компания с большими планами. Постоянно расширяем команду, ищем новые таланты, которые готовы присоединиться к нашему коллективу, так что приходите к нам, если хотите работать над Angie.
В ближайшем будущем стоит ожидать новых версий с новой функциональностью. Прямо сейчас находится в разработке поддержка протокола HTTP/3 в сторону бэкэнда. Как вы знаете, не так давно в nginx появилась поддержка HTTP/3 с серверной стороны. Теперь мы сделали полностью проксирование HTTP/3 на бэкэнд. Причем это будет работать в таком режиме, что неважно, какой протокол пришел на одной стороне — все будет трансформироваться. К примеру, клиенты смогут подключаться к серверу по HTTP/1, 2, 3, а далее на бэкэнде всё будет проксироваться по HTTP/3. Такая функция у нас появится уже до конца этого года.
Также мы сейчас работаем над встроенной возможностью автоматического перевыпуска сертификатов по протоколу ACME. Всегда настройка HTTPS-криптографии, установка сертификатов и ключей вызывает у пользователей большие сложности. Плюс, если это делать с какими-то бесплатными сервисами типа Let’s Encrypt, то требуется дополнительно ставить «демона» (daemon), который будет автоматически эти сертификаты обновлять и запрашивать. У нас эта функциональность будет встроена с максимально простой настройкой.
Кроме того, в ближайшее время появится ограничение скорости отдачи по битрейту mp4. Если, к примеру, у вас сервис, который раздает видеоконтент, то с помощью этого можно будет ограничить нагрузку на серверы. Также появится очередь балансировки и возможность работы с протоколом MQTT. Это наши планы на ближайшее время.
Планируется ли выход на какие-то другие рынки, кроме российского, и в перспективе может ли Angie PRO как коммерческий продукт составить конкуренцию другим популярным решениям?
Да, безусловно. Мы с самого начала не зацикливаемся на локальном рынке. Angie — это продукт международный, поэтому мы присутствуем на GitHub и ведём документацию на русском и английском языках. Возможно, в будущем появятся ещё какие-то языки. Также все коммит-логи ведём на английском языке.
Уже сейчас есть определённое сотрудничество с Китаем на азиатском рынке. Мы поддерживаем библиотеку китайской криптографии. Из-за этого заметно, что к нам есть интерес и поток пользователей из Китая, который дальше будет только расширяться. Безусловно, политическая ситуация будет меняться и, возможно, в будущем нам придётся конкурировать с другими решениями на западном рынке. К тому времени мы будем к этому готовы, предоставляя для своих пользователей оптимальный продукт.