Blog

  • Docker хостинг

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

    Здравствуйте, добро пожаловать в блог компании Контейнерный хостинг. Меня зовут Сергей Кольмиллер, я создатель данного сервиса. В этой статье я расскажу про хостинг Docker контейнеров. Для чего это нужно, как это использовать и какие услуги мы можем предложить вам для размещения ваших контейнеров в сети.

    Что такое докер хостинг

    Docker хостинг или хостинг докер контейнеров это такой сервис в интернете, который может в автоматическом режиме, то есть без участия менеджера или администратора, запустить, по запросу пользователя, докер контейнер. А также, при необходимости, тоже в автоматическом режиме, настроить доступ к этому контейнеру из сети, по доменному имени, и предоставить сертификат шифрования для обеспечения безопасного соединения. От обычного хостинга хостинг docker контейнеров отличается тем, что в обычном хостинге как правило имеется один или несколько поддерживаемых типов сервисов, в то время как в докер хостинге практически нет ограничений на типы сервисов, которые пользователь может запустить. Хостер предоставляет пользователю возможность запускать контейнеры, а пользователь может запустить в этих контейнерах практически что угодно.

    Чем докер хостинг отличается от выделенного сервера

    В докер хостинге, в отличие от выделенного сервера VDS/VPS другой уровень абстракции операционной системы. В выделенном сервере операционная система предоставляемая клиенту отделена от операционной системы хоста гипервизором, то есть ядро операционной системы хоста и виртуальных машин работают в разных процессах. При докер контейнеризации, хотя пользователь получает внешнее сходство с отдельной операционной системой, на самом деле ОС внутри контейнера использует то же ядро ОС, что и хост-система, но друг от друга соседние контейнеры разделены специальными механизмами, такими как namespaces и cgroups.

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

    Виртуальная машина Докер контейнер
    Ядро ОСВыделенное Общее
    Системные вызовыДоступны всеНекоторые недоступны
    Постоянное хранилищеИмеетсяНет (только через подключение томов)
    Доступ извнеПо выделенному IP адресуПо доменному имени
    Потребление ресурсовОпеационная система и запущенные приложенияТолько запущенные приложения

    Как видите из данной таблицы, виртуальная машина имеет больше свободы в плане системных вызовов (специальные запросы к ядру ОС), а также по части настройки доступа извне. Также виртуальная машина имеет постоянное хранилище, это значит, что между перезапусками ОС все изменения в файлах сохраняются.

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

    Благодаря этому, можно запустить больше разных образов ОС за счёт переиспользования одной операционной системы приложениями запущенными из разных образов операционных систем.

    Преимущества Докер хостинга

    1. Легковесность: Контейнеры Docker используют ядро хост-операционной системы, что делает их значительно более легковесными по сравнению с виртуальными машинами, которые требуют полного экземпляра операционной системы. Это позволяет запускать больше контейнеров на одном хосте, чем виртуальных машин.
    2. Портативность: Контейнеры Docker могут быть легко перемещены между различными средами (например, локальная машина, облако, серверы), так как они содержат все необходимые зависимости и конфигурации.
    3. Управление зависимостями: Docker позволяет упаковывать приложения и их зависимости в один контейнер, что устраняет проблемы с несовместимостью и конфликтами версий.

    Портативность и управление зависимостями

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

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

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

    В Докер контейнере таких костылей нет, потому что каждое приложение запущено в отдельном образе ОС с минимальным набором зависимостей.

    Докер на виртуальной машине

    Чтобы получить все преимущества от использования Докер контейнеров нужно арендовать виртуальную машину с установленным Docker или просто виртуальную машину и самому установить туда Docker. Однако, если нужно запустить всего одно небольшое приложение, то такой подход может оказаться расточительным. Потому что, во первых, вы будете оплачивать работу ядра ОС, а во вторых, установить Докер на минимальную виртуальную машину не получится, так как для нормальной работы Докеру необходимо не менее 2ГБ ОЗУ. Таким образом, чтобы запустить сервис, которому нужно каких нибудь 256МБ памяти придется оплачивать в восемь раз больше.

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

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

    Файл docker-compose.yaml

    Прт работе с Docker обычно все используют настройку в docker-compose.yaml файле, это позволяет хранить инфраструктуру как код. Но можно ли использовать этот файл в хостинге докер контейнеров?

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

    • Не отправляет файлы по сети: компос файл ожидает запуска докер на локальной машине.
    • Не монтирует тома по сети: volumes не могут быть смонтированы как обычно.
    • Порты могут быть зарыты: указанные в компос файле порты могут быть заняты или закрыты на сервисе.

    Поэтому непосредственного использования готового docker-compose.yaml файла на docker хостинге быть не может. Однако мы в Контейнерном хостинге постарались и аналогичный файл конфигурации у нас максимально похож на файл компос с оговорками которые описаны выше. Полная информация о файле содержится в документации.

  • Альтернатива Heroku

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

    Введение

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

    Что можно считать “альтернативой Heroku”

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

    Откровенно говоря, на тот момент практически невозможно было найти альтернативу, которая была бы достаточно простой, чтобы с ней можно было разобраться “за вечер”, и при этом была бесплатной.

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

    Аналог heroku

    Чтобы облачный сервис мог называть себя “аналогом heroku”, у него должны быть такие же преимущества, которые даёт сервис Herku:

    • Простота развертывания приложений
    • Бесплатные домены, создаваемые автоматически
    • Бесплатный SSL сертификат, создаваемый автоматически

    Это самые важные преимущества, которые позволили Heroku привлечь своих первых пользователей.

    Простота развертывания, достигается благодаря консольной утилите т.н. “heroku cli”, .которая устанавливается через “npm” и служит основным рычагом управления сервисами в сети, на основе простого “интерфейса” который представляет из себя yaml файл, где в декларативном порядке описана вся инфраструктура сервиса. Такой способ настройки облачного приложения имеет огромное преимущество в том, что однажды его правильно настроив, его можно переносить в другие приложения в качестве образца. И запускать аналогичные приложения в сети не делая дополнительных настроек в браузере или через командную строку.

    Бесплатные домены и бесплатные SSL сертификаты, это то что нужно, когда необходимо быстро запустить сервис, и чтобы он обязательно работал через https, а арендовать домен и настраивать сертификат нет необходимости. Особенно это актуально при прототипировании приложения.

    Работа Heroku в России

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

    На момент написания этой статьи, у Heroku нет тарифов менее 5 долларов в месяц.

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

    Альтернатива Heroku в России

    После того, как Heroku перестала быть актуальной для пользователей из России, многие компании принялись разрабатывать аналоги heroku, которые были бы доступны всем пользователям в России. В интернете можно найти не мало статей посвященных этому. В этой же статье я расскажу о нашем сервисе, который называется Контейнерный хостинг и является альтернативой heroku, для пользователей из России.

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

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

    В чем контейнерный хостинг лучше хероку

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

    Современные “аналоги heroku” могут показывать неплохие результаты, если сравнивать их и хероку, когда она была в таком же возрасте. Тогда несомненно можно было бы много назвать преимуществ. Но для того времени, даже в том состоянии, heroku была крутым инструментом.

    Сейчас, мы можно сказать, идём по их стопам. Пытаясь удовлетворить потребность пользователей в удобном и доступном сервисе для запуска приложений в сети. А уже со временем, возможно, в чём-то станем не хуже Heroku.

    Что можно запустить в аналоге хероку

    В контейнерном хостинге, как в heroku, можно также запустить и сайт и телеграм бот. Например создаём проект с двумя сервисами, в одном база данных Postgres, а в другом Python. Запускаем на пайтоне Telegram bot, и приложение связывается с ботом по сети и общается с базой данных по локальной сети. Это простой пример и он даже не требует создания домена и сертификата, потому что клиенты отправляют запросы к боту Телеграм, а не напрямую к сервису, который этим ботом управляет.

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

    Главное преимущество альтернатив Heroku

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

    Учитывая этот момент, мы в контейнерном хостинге сразу установили максимально выгодную цену. Мы рассчитали её исходя из того, что это минимально допустимая цена, при которой мы можем сохранять рост. А для пользователей получается, это один из самых недорогих сервисов, на котором можно запускать свои приложения, получая бонусом Nginx и Awstats как на обычном хостинге.

    Например, чтобы разместить крошечный сервис, которому для работы достаточно 64 МБ ОЗУ можно запустить сервис с минимальным размером nano, стоимость которого, на момент написания статьи, составляет всего 20 рублей или 0.03 рубля в час.

    Коэффициент рассчёта цен, возможно изменится в будущем, с учётом инфляции. Но мы всё равно будем ориентироваться на рынок, чтобы всегда оставаться максимально выгодным предложением.

    А оставаясь в выгодном сегменте цен, мы как никто другой, сможем называть себя “аналогом heroku”. Ведь, как нам запомнился heroku, это не только удобно, но и выгодно!

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

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

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

    Заключение

    Сервис Контейнерный хостинг, создается именно для тех людей, кто ищет альтернативу Heroku. Уже сейчас вы можете начать пользоваться им, тем самым поддержав нас на дальнейшее развитие, чтобы ещё на один аналог heroku стало больше. И тогда в мире будет больше альтернатив хорошим инструментам, а когда есть выбор – это всегда хорошо!

  • Хостинг Node.js

    Если вы пишите на ноде (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, вы его нашли прямо сейчас, переходите по ссылке и получите стартовы бонус на баланс счёта, чтобы как следует испытать наш сервис перед тем как вы начнёте его использовать для размещения своих проектов в интернете.

  • Первый пост

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