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