Хостинг Node.js

10.02.20257 minute(s)

Если вы пишите на ноде (Node.js), но никак не можете найти удобный и недорогой российский хостинг для своих приложений, то эта статья специально для вас.

Что такое Node.js

Node.js это технология, которая позволяет запускать JavaScript код на сервере. Благодаря возможности ассинхронного запуска операций, Node.js превзошла, после своего появления, многие существующие на тот момент технологии по скорости обработки большого количества одновременных запросов и продолжает удерживать достойные позиции и по сей день.

Как развивается размещение Node.js

Первое время, после появления Node.js, было практически невозможно найти хостинг, на котором можно было бы разместить свои Node.js приложения. Нужно было арендовать выделенный сервер, устанавливать на него необходимые зависимости, следить за безопасностью системы и много ещё за чем.

Выделенный сервер это не хостинг

Способ размещения приложений на выделенном сервере нельзя назвать хостингом. Так как хостинг не подразумевает выделение отдельного IPv4 адреса для каждой услуги, а обеспечивает доступ к сервисам клиента через маршрутизацию по хосту (домену). Всвязи с этим и заметно отличающаяся цена, потому что аренда IPv4 адреса далеко не бесплатная услуга и если вести речь о минимальном сервере с 512 МБ ОЗУ то цена IP адреса может составлять приблизительно половину от общей стоимости.

Контейнеры как стандарт для серверов

Плюс, помимо того, чтобы обеспечить переносимость приложения, то есть возможность для не сложного “переезда” на другой сервер, в современном мире, широко используются контейнерные технологии. Для того, чтобы обеспечить необходимые зависимости на сервере, нужен всего один типовой файл, который всё это описывает, вместо того чтобы поддерживать текстовые инструкции для каждой ОС. А сами приложения изначально создаются под работу в контейнере на продакшене, чтобы их можно было гарантировано быстро запустить везде. Для этого приходилось арендовать сервер и устанавливать туда Docker с плагином compose, но тогда этот сервер имеет ограничение по минимальным ресурсам hardware гораздо выше чем хотелось бы. И если речь идёт о небольшом приложении, то может получиться нерациональное расходование средств.

Облачные сервисы из России

На момент написания статьи, из-за санкций в отношении России, многие сервисы предоставляющие такие услуги недоступны для российских пользователей из-за ограничений банков по международным платежам. Всвязи с этим, российские разработчики ПО вынуждены переходить на использование выделенных серверов, так как отечественные альтернативы зарубежных аналогов облачных сервисов ещё находятся на стадии активного развития, и пока не могут удовлетворить все ожидания искушённого клиента.

Какое решение выбрать

В связи с этим, мною было принято решение разработать российский облачный сервис, который позволял бы удобно и выгодно размещать Node.js приложения. Сейчас наш сервис “Контейнерный хостинг” предлагает удобный функционал для запуска ваших Node.js приложений.

Почему именно conhos

Мы уделяем много внимания удобству использования, так как считаем, что на данном этапе, это ключевая причина отказа от использования облачного сервиса. Удобство обычно связано с простотой и для простоты мы разработали консольную утилиту, которая, если говорить простыми словами, отправляет файл конфигурации (аналог docker-compose.yml) на сервер, а там из него уже создаётся реальный конфиг и запускается проект.

Удобство единого файла конфигурации

Эта тема не нова и консольные утилиты есть у многих, однако мы не стали изобретать велосипед и придумывать в браузере новый способ создания проектов. А лишь сделали удобный функционал для редактирования всё того же файла, и запуск проекта работает через ту же утилиту, только она запускается на сервере по команде пользователя с сайта.

Таким образом, пользователь получает стандартизованный подход к организации своих проектов, без жесткой привязки к одному конкретному сервису, как имеет место быть, у тех облачных сервисов где нельзя всего сделать из одного файла, а приходится что-то создавать в веб интерфейсе или запускать дополнительные команды в консоли. Подход “единого файла” позволяет, в случае необходимости, легко перейти на другой контейнерный сервис или, к примеру, на выделенный сервер с Docker.

Как запустить Node.js на хостинге

Для запуска вашего приложения на нашем сервисе есть два разных способа.

  • Запуск из консоли с устройства
  • Запуск из браузера

Хотя и в том и в другом случае, вы работаете с одним и тем же файлом конфигурации, однако и в том и в другом случае есть некоторые ограничения, связанные со средой исполнения.

Запуск из консоли

Для этого метода, потребуется установить консольную утилиту. И для удобства работы с файлом конфигурации, дополнительно, расширение для VSCode kolserdav.conhos-vscode.

Используя консольную утилиту, можно загружать файлы не только из Git репозитория, но и непосредственно с устройства

А также потребуется авторизоваться через взаимодействие с браузером.

Запуск проекта из браузера

Если проект расположен в Git репозитории, то его возможно запустить из браузера, даже с мобильного устройства. А также получить почти весь функционал консольной утилиты, в частности подключение к консоли контейнера и просмотр логов сервиса.

Если проект не в Git репозитории, запустить из браузера его не получиться.

Мы не стали придумывать способы загружать файлы проекта архивом через браузер. Так как в современном мире так никто не поступает, потому что это неудобно.

Отслеживание работы приложений

Независимо от того каким образом запущен проект, для него создаются специальные, защищённые от доступа посторонним, страницы. На них можно отслеживать активность сервисов поминутно и посекундно в режиме реального времени, а также видеть статистику обращений к сервису из интернета на странице Awstats.

Использование ресурсов сервисом

Отдельного внимания заслуживает отслеживание использования ресурсов конкретным сервисом. Используя функционал Docker предоставляется отчет об использовании таких параметров как:

  • ОЗУ (доступно/использовано)
  • Процессор (процент использования)
  • Сеть (загрузка, отправка)
  • Диск (чтение, запись)

Такие данные позволяют наглядно видеть сколько ресурсов использует приложение Nodejs в каждом контейнере. Это позволяет, лучше планировать расходы, отключая не нужные сервисы или уменьшая их размер, не затрагивая работу других сервисов проекта.

В отличие от контейнерного хостинга, для масштабирования выделенного сервера требуется перезагрузка.

Цены на node хостинг

Если сравнивать цены на сервера и на контейнеры, то приходишь к выводу, что стоит примерно одинаково. Это так, ведь ресурсы выделяются те же самые по объему. Однако, при одинаковой цене, хостинг будет дешевле, потому что он не расходует ресурсы на работу ядра ОС, а используеь ядро ОС хостера, что оставляет больше ресурсов на работу приложения при той же цене.

Ещё одним плюсом хостинга, в плане ценовой политики. Является то, что отсутствие расходов на работу ядра системы позволяет запускать контейнеры с памятью 64МБ, чего было бы недостаточно для запуска современной ОС, однако для работы не нагруженной Node.js программы этого достаточно.

Базы данных и брокеры сообщений для Node

Веб серверы написанные на Node.js это обычно комплексные программные решения, которые взаимодействуют по сети с другими сервисами, такими как базы данных, брокеры сообщений, системы кеширования. В этом отношении, сервис предоставляет поддержку списка популярных и востребованных инструментов таких как Postgres, MySQL, MariaDB, Redis, Mongo, RabbitMQ.

Список поддерживаемых сервисов может быть расширен в любой момент

А также имеется набор сервисов администрирования, такие как PgAdmin, PhpMyAdmin, Mongo Express, Adminer, FTP. Которые можно включать только при необходимости, чтобы не расходовать средства зря. На выделенном сервере так не получится, потому что даже если отключить не обязательную на каждый день панель управления, то предусмотренные для её работы ресурсы всё равно придется оплачивать.

Стабильность и отказоустойчивость

Лучший способ избежать проблем со стабильностью и отказоустойчивостью это полагаться на максимально стандартизированные решения. Всвязи с этим, лучшим выбором, будет использование официального образа контейнера поставляемого сообществом разработчиков Node.js, чем собирать собственный образ, если для этого нет весской причины. Тогда сила сообщества работает более эффективно для проекта.

Кибербезопасность

При использовании хостинга, как говорилось ранее, сервисы клиентов не смотрят наружу по IP адресам. Что значительно снижает уровень потенциальных угроз связанных с работой Node.js приложения на хостинге.

Внутри серверов хостинг сервисов проекты клиентов работают в изолированных друг от друга локальных сетях. Сети контейнеров изолированы и от рабочих сетей хост системы.

Конфиденциальность

Существует мнение, что с точки зрения конфиденциальности хостинг менее предпочтителен чем выделенный сервер, по причине того, что к виртуальным машинам клиентов администраторы сервиса не могут получить доступ, а к файлам хостинга могут.

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

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

Подведение итогов

Таким образом, если вы искали удобный и выгодный хостинг nodejs, вы его нашли прямо сейчас, переходите по ссылке и получите стартовы бонус на баланс счёта, чтобы как следует испытать наш сервис перед тем как вы начнёте его использовать для размещения своих проектов в интернете.

Хостинг Node.js