Я написав додаток Node.js, я хочу запустити його на одній з наших виробничих машин. Це здається досить поширеним запитом, але я не можу знайти адекватного рішення. Чи немає встановлених рішень для розгортання виробничих програм Node.js?
Додаток простий (<100 LOC), але повинен бути дуже ефективним, надійним і міг працювати безперервно роками без перезапуску. Він буде запускатися на великому сайті, з десятками підключень / секунду. (додаток не використовується як веб-сервер, він має лише JSON API)
Ось підходи, які я розглядав, але я все ще не впевнений у цьому:
Використання фреймворку (наприклад, Express)
Оскільки додаток повинен бути високопродуктивним і настільки простим, я хочу уникати додавання роздуття у вигляді фреймворку.
Запуск сервера з nohup
Основна проблема тут полягає в обробці винятків, ми (очевидно) не хочемо, щоб весь сервер вийшов із ладу через виняток. З того, що я розумію, обгортання всієї програми вtry {} catch {}
цикл не допоможе, оскільки інтерпретатор Javascript залишається в непередбачуваному стані після виключення. Це правильно?
Використовуючи щось на зразок назавжди
Я встановив Forever на нашій машині FreeBSD, і це було дуже глючно. Це призвело до появи нескінченних процесів, які не можна було вбити назавжди. Довелося бігатиkill -9
щоб повернути свою машину, і я не надто впевнений у тому, що запускаю виробничу програму на Forever. Також здається, що Upstart (подібний інструмент, але більш загальний) не працюватиме на FreeBSD.
Розміщені рішення (наприклад, Heroku, Rackspace, Amazon EC2 тощо)
Це, мабуть, найпростіше рішення, але ми вже маємо серйозне обладнання для решти наших веб-серверів. З фінансових міркувань це не має сенсу.
Напевно, має бути якесь усталене рішення цього? Мені чогось не вистачає?