Одним из наиболее распространенных способов запуска веб-приложений на языках PHP, Python и Ruby — является связка nginx и сервера приложений, которыми чаще всего выступают php-fpm, gunicorn, unicorn, uwsgi, puma и подобные или даже Apache в этой роли.
У такого способа есть ряд существенных недостатков:
• необходимость правильно настраивать и поддерживать работоспособность ещё одного компонента в инфраструктуре, а то и нескольких;
• ошибки сопряжения и отсутствие мониторинга со стороны nginx рабочих процессов приложения напрямую, что приводит в итоге к 502-504 ошибкам при возрастании нагрузки, которые частенько видят посетители;
• дополнительные накладные расходы на обмен данными между nginx и приложениями — снижают производительность и масштабируемость.
Мы занимаемся внедрением возможности запуска процессов приложений непосредственно в nginx в рамках Angie — его главного обратно совместимого форка, разрабатываемого бывшей командой разработчиков nginx. При этом это будет простая и полноценная замена упомянутых выше связок с простой конфигурацией и без необходимости вносить какие-либо изменения в код приложений.
Поговорим про преимущества такого подхода и посмотрим на результаты бенчмарков, которые обещают быть интригующими.