DOU Проектор: BrainyCP — бесплатная панель управления сервером/хостингом
В рубрике DOU Проектор все желающие могут презентовать свой продукт (как стартап, так и ламповый pet-проект). Если вам есть о чем рассказать — приглашаем поучаствовать. Если нет — возможно, серия вдохновит на создание собственного made in Ukraine продукта. Вопросы и заявки на участие присылайте на Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра. .
Привет, я Евгений Шнайдер, мне 26 лет, с детства увлекался программированием, в старших классах создал сайт, посвященный смартфонам, тогда еще под Symbian 9 (пик посещаемости составил 25 000 посетителей в день). Для этого сайта нужен был хостинг, с тех пор хостингом и занимаюсь.
Не по наслышке знаю трудности, с которыми сталкиваются новички при переходе на выделенный сервер. Поэтому и решил со своими единомышленниками создать хостинг-панель BrainyCP. Хочу, чтобы у пользователей был качественный и бесплатный продукт для управления сервером.
Идея
Уже давно занимаясь хостингом, более 8 лет, у нас, как хостеров и как клиентов хостинга, всегда была необходимость в управлении выделенным или виртуальным сервером или хостингом. Сейчас, кстати, более распространена тенденция, когда берут VPS, где арендатор не зависит «от соседей» и полностью может его настраивать под свои нужды, делить мощность уже под свои проекты (если, скажем, это веб-разработка для отдельных клиентов). Всегда нужно ПО, которое поможет все это правильно настраивать и управлять.
Мы проанализировали и оценили функционал/интерфейс платных и бесплатных решений. И в каждом было что-то не то, что-то было неудобно, чего-то не хватало. Причем это касается платных панелей управления, а о бесплатных даже говорить не приходится.
У бесплатных есть лишь самый необходимый базовый функционал и «бесплатность», у платных — функционал шире, но не каждый пользователь выделенного сервера готов платить за лицензию программы, которая стоит больше, чем аренда самого сервера.
Пользователю арендованного сервера так или иначе нужно его настраивать, независимо от того — это опытный админ или новичок. Лучше всего, чтобы большая часть необходимого любому пользователю функционала настраивалась на сервере автоматически, несколькими кликами.
Мы решили разработать свою версию бесплатной хостинг-панели, которая бы учитывала недостатки других решений. По функционалу наша панель управления значительно шире в сравнении с уже существующими бесплатными аналогами и может сравниться с платными решениями.
Реализация
Так как software разработка сама по себе не основной наш профиль, то мы определили, какой результат хотим достичь, и сразу начали писать, бросившись в омут с головой. В этом была ошибка. Дело в том, что хоть мы и представили себе архитектуру нашего проекта, но одно дело, когда мы себе представляем результат, другое дело — поставить задачу программистам.
Пару слов о команде. Наша команда проекта состоит из 5 программистов (постоянных членов команды) и 2 приглашенных, и еще в команде некоторое время работал дизайнер. Мы все — программисты, и учились на программистов, и даже начинали заниматься веб-программированием в свое время.
Я считаю, что программист — это творческая профессия в рамках поставленной задачи, но с важной оговоркой: если не указывать «где строить» — строитель построит хорошую стену, но не в том месте. Даже поставив задачу программисту, он ее начинает делать так, как он видит, а не так, как предполагает структура проекта. Поэтому на этапе коммуникации было потрачено значительное время на приведение нашего общения к некому своему общему «языку проекта», и уже после этого работа над нашим стартапом пошла более гладко.
Самым трудным было то, что называется сделать «движок программы»: ту твердую базу, на которую уже как на фундамент можно было добавлять нужные строения — модули. Были написаны базовые классы и методы для работы с сервером, а также заведены необходимые переменные окружения, которые используются в каждом модуле. Например — имя текущего пользователя, его тариф, группа, ограничения и т. д. Также были подключены смарт-шаблоны. Когда это сделано — каждый последующий модуль становится гораздо легче писать, так как все необходимые инструменты уже автоматически написаны, и можно работать только в рамках функционала самого модуля, не задумываясь, как реализовать ту или иную функцию.
Неверно принятые, на первый взгляд, мелкие решения еще на этапе создания основы дали бы не те результаты в будущем. Поэтому сначала постоянно приходилось исправлять-исправлять-исправлять — то со стороны back-end, то со стороны front-end. К тому же мы замахнулись сразу на широкий функционал, который постоянно приходилось отлаживать. Все это сильно увеличило время разработки. Так как в программе все модули взаимосвязаны, и любые мелочные изменения влекут за собой изменения во всех частях программы. Например, модуль хост-аккаунта должен использовать и модуль базы данных, и модуль веб-сервера и т. д.
Было еще много задач на стыке программирования и дизайна. Например, запуск фоновых процессов на сервере. Пользователь хочет запустить процесс — установка MySQL на сервер. Этот процесс занимает около 10 минут. Но РНР не дает следить за этим процессом в реальном времени, и программа после запуска может сразу сказать «OK», а сам процесс будет завершаться в фоновом режиме или же РНР (панель) будет ждать пока процесс выполнится. В таком случае пользователь не будет понимать, что происходит и будет нажимать на все кнопки, перезагружать сервер и т. д. В результате у нас получилось, что после запуска задачи пользователь видит весь процесс установки, и панель показывает, на каком этапе процесс. Задача не была очень сложной, но мы с ней повозились.
В работе над проектом мне помог мой многолетний опыт хостера — я представляю, какие могут быть сложности и у рядового пользователя сервера, и у администратора хостинг-компании на поддержке. Поэтому мы изначально планировали, что наша программа будет универсальной для использования самыми разными группами пользователей.
Например, некоторые панели нужно устанавливать на чистый сервер без пользователей и сайтов, что очень неудобно, если на сервере уже есть данные, пользователи и др., наш продукт ставится на уже работающий виртуальный сервер, без всяких условий, в 3 клика.
Также постоянно возникали архитектурные задачи — например, хранение переменных: где они должны храниться? где должны храниться временные переменные? Теперь все эти настройки сохраняются в четкую структуру.
Мы можем дать нашу панель любому программисту, и он сможет, опираясь на нашу документацию: а) изменить существующие модули, так как ему хочется. Например, уже сейчас любой пользователь сможет полностью переделать представление панели, как ему нравится; б) используя нашу же документацию, дописать нужные только ему (или компании) модули. Например, захочет он какой-то свой антивирус добавить в нашу панель — пожалуйста, и другие желания сможет воплотить на базе нашей панели. Именно по этой причине для разработки был выбран язык PHP как самый распространенный.
Изначально я планировал, что разработка нашего продукта займет 3 месяца и еще 3 месяца на откатку, прямо вот чтобы уже был продакт-релиз, тут я тоже жестоко ошибся :) В итоге процесс разработки занял 1,5 года, но я рад, что инициировал этот проект, очень много для себя открыл и многому научился: и как руководитель проектов, и как ИТ-архитектор, и как программист.
Я считаю, мы сделали классный продукт. Вы можете взять любой раздел по управлению хостингом и сравнить, что доступно в нашей панели и что доступно в бесплатных хостинг-панелях. Вы увидите большую разницу: в бесплатной панели —
Какие выводы я сделал
Вертикальный уровень (архитектура) проекта и горизонтальный уровень проекта влияют друг на друга очень плотно. Любая кажущаяся сейчас мелочь может обернуться большой проблемой в будущем. Лучше долго думать над структурой, затем сделать малую часть, но идеально, и затем наращивать функционал. Так как увеличение проекта в разных плоскостях влечет взаимосвязи, о которых ты и не догадывался.
Программисты есть под любую задачу — их стоит искать. При поиске столкнулись с тем, что большая часть украинских программистов заточены под иностранные заказы с большими валютными бюджетами, и аппетиты на зарплаты огромны. Но наш проект — это стартап, много денег у нас не было ни тогда, ни сейчас. Монетизации стартапа нет, да и рано о ней даже думать — нужно, чтобы продукт был обкатан не только нами, но и пользователи дали обратную связь. К нашей чести хочу сказать, что мы только один раз за все время поменяли двух приглашенных программистов. Расстались мы с ними мирно, так как важно не только начать с кем-то дело, но и в нормальных отношениях расстаться. Один сошел с дистанции ввиду большой нагрузки, а второй как-то уперся в тупик — писал такой код, в который затем сложно было смотреть всем, не только нам, но и ему самому :) И это еще раз доказывает, что какой бы хороший программист ни был, на начальном этапе над ним нужно «висеть» и смотреть, что он и как делает, или же потом придется постоянно переделывать. Для нас было сложно найти программистов, которых помимо денег заинтересует еще и сама идея нашего проекта, именно тех, которые «самые-самые» под проект. Таких людей нам удалось найти, поэтому всегда есть те, кто подойдет именно для вашего стартапа.
Какие бы я книги не прочитал по руководству проектами и по разработке программных продуктов — в любом проекте будет то, о чем никогда не пишут в книгах. Не потому, что могут скрывать информацию, а просто потому, что это отдельный проект, даже если что-то подобное много раз делали, не говоря уже о стартапе. Создание чего-то нового — это как творение своего отдельного мира, со своим языком, социумом и микросоциумом. Во время этого проекта я особенно ярко почувствовал правоту Нассима Талеба, что за любой информацией, за любым сообщением нужно стараться увидеть «о чем не говорят». Говоря по-философски: за любым знанием скрывается незнание, так как рассказать обо всем до мелочей невозможно. Именно этому анализу «невидимой» части проекта всегда нужно уделять особое внимание.
Результаты
Наша панель BrainyCP улучшает удобство пользования и администрирования хостинг-услугами как для рядовых пользователей, так и для хостинг-компаний. Уменьшает риск потери данных пользователей, в разы уменьшает нагрузку на техподдержку хостеров и дает более широкую доступность (за счет интуитивного удобства) использования серверов для всех желающих.
С помощью BrainyCP сокращается время настройки даже у опытного админа сервера до 90 %. Наше программное обеспечение сразу создает все необходимое «окружение» для любого сервера, который может быть использован для самых разных задач. Например, в любом сервере будет необходим: веб-сервер, база данных MySQL, почтовый домен, сервисы почты, почтовые ящики, PHP. Все что нужно для работы уже есть в нашем решении сразу, при установке пользователем. Это не говоря уже о многом другом, что у нас устанавливается или активизируется в один клик: сертификаты, приложения СМS, файловый менеджер, FTP-сервер, SHH-сервер, антивирус и многое другое, что доступно сразу и не требует никаких дополнительных плагинов. Из коробки, автоматически, ставится антивирус на сервер, удобно настраиваются бекапы, есть возможность сделать/вернуть бекап, снепшоты и многие другие возможности, которые на данный момент доступны только в платных решениях.
Кроме этого в BrainyCP реализован расширенный функционал для реселлинга хостинга, для администрирования групп пользователей и многие другие функции интересные для хостеров.
Наша панель позволяет мониторить многое: от критических частей технической инфраструктуры самого хостера — какой-то жесткий диск сбоит и требует замены, до разноуровневой (горизонтальной и вертикальной) статистики — сколько пользователей сейчас активны, что и как они используют, не дедосят ли кого, у кого-то из пользователей что-то не работает, кто-то подхватил вирус и его сайт нужно чистить, да и, что греха таить, пользователи бывают разные: иногда кто-то начинает спам рассылать, кто-то еще «всякое разное» делать, и если у хостера даже 100 клиентов — без удобного мониторинга с системой оповещения не обойтись.
На данном этапе хотим получить широкую обратную связь, чтобы улучшить свой продукт, а в будущем планируем перегнать по функционалу существующие и платные панели управления, так как возможности нашего продукта уже значительно выше всех существующих бесплатных. Панель BrainyCP уже доступна, есть демо, можете заходить, скачивать, пробовать и писать нам, как и что улучшить. Продукт полностью бесплатный.
Наша цель — создать и поддерживать удобное и доступное всем программное обеспечение для управления сервером и хостинг-услугами.