Elasticweb — самый демократичный виртуальный хостинг

0118a4f620584cbf8092ac8348483354.jpg

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

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

Тарификация


14d60e4950244e6b818f5393832f1730.png

Месячное обслуживание n-ого количества сайтов с общей посещаемостью 1000 человек в сутки может стоить ~30 рублей в месяц и меньше. Сориентироваться по стоимости содержания ваших проектов поможет наш калькулятор.
d34ab7bd25294e8799f0dc457ca24a56.jpg

Хостинг


PHP версии 5.6 с Opcache. По умолчанию на каждом сервере установлены Git, Composer, Drush, wpcli, антивирус и брандмауэр. А самое пикантное это то, что в качестве веб-сервера используется Nginx. Безусловно, в этом есть как плюсы, так и минусы, но дабы не создать очередной холивар на тему “Apache vs Nginx”, я не буду заострять внимание на факторах данного выбора. По понятным причинам .htaccess файлы работать не будут, поэтому мы написали и автоматизировали выбор конфигураций для наиболее распространенных CMS и фреймворков: Wordpress 4, Drupal 7-8, Yii, Joomla 2-3, Octobercms, OpenCart 1.5, ZenCart 1.5, CMS Made Simple, KodiCMS, MaxSite CMS, MODx Revolution, Zend Framework, Symfony, Laravel, Codeigniter, Kohana, phpBB3, MediaWiki, Asgard CMS. Также мы работаем над созданием полноценного редактора конфигураций Nginx с интерактивными подсказками и автодополнениями. А на данный момент готовы абсолютно за бесплатно помочь каждому в переносе существующего проекта на Elasticweb.

Сервер статистики


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

Мы мониторим все процессы системы, будь то активность веб-сервера, активность в командной строке или работа интерпретатора. Доктрина системы статистики — любое взаимодействие с сервером должно быть учтено ( CPU %, RAM Memory usage, IO operations, Disk usage, Web bandwidth, MySQL bandwidth). Иными словами, учитывается даже открытая SSH сессия.

Демон написан на Python, с использованием библиотек daemon, psutil, pwd, os, time, requests, json, datetime, MySQLdb, threading, re, platform, а для аналаза трафика используется сторонний модуль nginx-module-vts.

Панель управления


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

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

Мы написали демон на Python для прослушки комманд, которые передаются от панели управления в формате JSON. Сама панель написана на PHP. Нам было важно получить начальную архитектуру и минимальный набор базовых функций, поэтому мы отказались от больших фреймворков вроде Symfony или Zend и за основу взяли Codeigniter 3 + HMVC ( для создания модулей ).

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

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

Система оплаты


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

Апофеоз


Первая мысль об Elasticweb пришла совершенно случайно в обычном разговоре про железо, сервера, облачные технологии и хостинги. Разработка длилась почти 3 месяца в свободное от основной работы время. Еще месяц мы потратили на тестирование продукта и вот подошло время к одному из самых важных и значимых для нас тестов — пройти через мнение хабравчан.

77d078b625a54b9b85fa9141e0db61bd.pngc18101a81a664a73b6a6fb62ff76fd2b.pnge3745891b3ae44f2bcb45a54fe1b6de0.png

Спасибо всем за внимание. С нетерпением будем ждать от вас критики, вопросов и предложений.

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

© Habrahabr.ru