PHP-FPM, (g)unicorn, Puma и uWSGI — будут больше не нужны

Архитектура

Доклад принят в программу конференции

Мнение Программного комитета о докладе

Разработчики на скриптовых языках годами жили с дефолтными и не самыми эффективными рантаймами. Сейчас ситуация начала меняться, и вот подтянулся и Angie, сделав своё эффективное решение. Потенциально оно может очень сильно повлиять на то, как мы запускаем свои приложения.

Целевая аудитория

DevOps-инженеры, системные администраторы, веб-разработчики и руководители соответствующих подразделений. Все, кто разрабатывает и запускает веб-приложения на языках PHP, Python или Ruby.

Тезисы

Одним из наиболее распространенных способов запуска веб-приложений на языках PHP, Python и Ruby является связка nginx и сервера приложений, которыми чаще всего выступают php-fpm, gunicorn, unicorn, uwsgi, puma и подобные или даже Apache в этой роли.

У такого способа есть ряд существенных недостатков:
* необходимость правильно настраивать и поддерживать работоспособность ещё одного компонента в инфраструктуре, а то и нескольких;
* ошибки сопряжения и отсутствие мониторинга со стороны nginx рабочих процессов приложения напрямую, что приводит в итоге к 502-504-ошибкам при возрастании нагрузки, которые частенько видят посетители;
* дополнительные накладные расходы на обмен данными между nginx и приложениями снижают производительность и масштабируемость.

Мы занимаемся внедрением возможности запуска процессов приложений непосредственно в nginx в рамках Angie — его главного обратно совместимого форка, разрабатываемого бывшей командой разработчиков nginx. При этом это будет простая и полноценная замена упомянутых выше связок с простой конфигурацией и без необходимости вносить какие-либо изменения в код приложений.

Поговорим про преимущества такого подхода и посмотрим на результаты бенчмарков, которые обещают быть интригующими.

Профессиональную деятельность начал в 2003 году в роли разработчика веб-сайтов. C 2011 по 2022 трудился в компании NGINX, Inc (c 2019 часть F5 Networks). За это время успел поработать практически над всеми подсистемами одноименного веб-сервера и его коммерческой версии. Разрабатывал модули протоколов SPDY и HTTP/2, а также механизм пулов потоков для асинхронного исполнения блокирующих и ресурсоемких операций. Принимал участие в работе над JavaScript-интерпретатором njs. Помимо реализации различной функциональности, немало времени посвятил оптимизации кода под Linux. Был одним из ключевых авторов сервера нового поколения NGINX Unit, разработку которого и возглавлял последние годы.

С 2022 года возглавляет отдел разработки компании ООО Веб-Сервер.

Web Server LLC

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

Видео

Другие доклады секции

Архитектура