Назад | Перейти на главную страницу

Запуск приложения NodeJS 24x7

У меня есть веб-приложение nodejs, которое подключается в качестве клиента к веб-сокету и отправляет мне push-уведомления всякий раз, когда происходят определенные события. Он также имеет функции для отправки запросов в REST API на основе информации, полученной из того же веб-узла.

До сих пор я запускал это приложение локально и постоянно держал свой ноутбук включенным. Но скоро я собираюсь путешествовать, так что держать ноутбук на 24x7 больше не вариант.

Что я могу сделать, чтобы я мог запускать это приложение 24 часа в сутки, 7 дней в неделю (поскольку оно должно быть постоянно подключено к веб-сокету), не оставляя свой ноутбук работающим?

Единственный вариант, о котором я могу думать, - это запускать приложение локально в Digital Ocean Droplet, а затем RDP в капле, когда мне нужно его использовать. Таким образом, он работает 24 часа в сутки, 7 дней в неделю, и я могу получить к нему доступ, когда захочу, по протоколу RDP в капле. Единственное, что меня беспокоит, это то, будут ли более дешевые капли достаточно мощными, чтобы позволить мне использовать RDP в них и использовать приложение без задержек.

Доступ к этому приложению через Интернет не требуется. Было бы лучше объединить его как приложение Electron и затем запустить на удаленном сервере, чем просто запустить его на 127.0.0.1?

Цените ваш вклад.

Спасибо!

Да, в таких случаях запуск программы на сервере - это примерно то, что вы делаете.

Могу порекомендовать Non-Sucking Service Manager (https://nssm.cc/), чтобы программа продолжала работать.

Что касается того, чтобы заставить его хорошо работать на дешевом экземпляре сервера: превращение его в приложение Electron добавит пару сотен мегабайт раздутости и полностью новую среду выполнения в вашу программу.

Если рентабельность важна, можете ли вы взаимодействовать с веб-приложением, используя только команды HTTP GET и POST, а не запускать локальный веб-браузер на сервере? Если ваша программа не требует для работы графического интерфейса пользователя, существуют жизнеспособные альтернативы запуску полнофункционального сервера Windows с поддержкой рабочего стола, который может немного снизить эксплуатационные расходы:

  • Если вы не боитесь командной строки Windows или Powershell, вы можете избавиться от лишних проблем, запустив установку Windows Server Core. Если ваш облачный провайдер поддерживает использование последних версий Windows, у вас даже есть встроенная поддержка ssh, поэтому вам не нужно подключать RDP к серверу (хотя, по моему опыту, у вас есть другие проблемы, если этот протокол слишком медленный, чтобы его можно было использовать).
  • Альтернативой может быть вообще не запускать Windows. Это может сэкономить вам еще немного накладных расходов даже по сравнению с Windows Server Core.

(Если вы все же решите разрешить RDP, примите меры, разрешающие доступ только через VPN или, самое большее, только с определенных известных IP-адресов. Это не тот протокол, который был разработан для безопасной передачи в Интернет.)