Очень долго метался сегодня между темами, о которых хочу написать. В итоге взгляд упал на nginx unit. О нем и пойдет речь.
Прочитать о проекте подробнее можно тут - https://unit.nginx.org. Но я все же не удержусь и вставлю пару сухих слов. Зато своих. Nginx unit представляет из себя сервер приложений, который можно динамически настраивать через API. На данный момент он поддерживает запуск php, python, ruby, golang и perl кода.
Идея проекта очень простая - научиться запускать приложения, написанные на основных языках с помощью единого интерфейса. Если раньше мы ставили unicorn/puma для ruby, fpm для php, uwsgi для python'а, то теперь это все можно заменить на единый nginx unit.
Зачем - пока не особо понятно. Тем более, если учесть, что все юникорны и прочие прекрасно пакуются в докер и особо ничего не требуют. Дополнительным "против" для меня является попытка объять необъятное. Попытка сделать комбайн, который будет запускать все подряд. Unix way мне явно ближе. Каждое приложение должно отвечать только за свою конкретную зону. Юникорн за руби, а fpm за php. Опять же - перед nginx unit на данный момент требуется ставить nginx, потому что сам юнит не умеет терминировать ssl, да и зачем ему это.
Из плюсов отмечу открытый API, которого нет в бесплатном nginx. Благодаря этому вы можете одним росчерком curl'а поднять параллельно второе приложение (с обновленным кодом) и потом бесшовно переключить весь трафик на него. Раньше приходилось возиться с haproxy и просить его выкинуть из балансировки ноду. Или извращаться кто как умеет. Юникорны и прочие, кстати, умеют делать это из коробки (я про USR2 и graceful reload). Так что плюс такой себе.
Но я никак не могу не отметить, что проект запускает команда, которая развивает и поддерживает nginx. Я им полностью доверяю и, возможно, они смогут удивить всех нас и сделать реально крутой application сервер, который мы сможем использовать повсеместно, не думаю о том что внутри. И забыть наконец про специализированные решения. Поживем - увидим.