Коллеги, поздравляю всех с Днем Победы!
По иронии этот текст был написан именно к 9 мая.
Полагаю, что сообществу будет интересен наш кейс, как мы пришли от хостинга к платформенным веб-решениям на Drupal.
Получилось “очень много букв”, но это про 5 лет работы с Drupal. Сложно написать одновременно кратко и емко.
Через терни к звездам...
Наша история началось аж в 2005, с хостинг-компании… Посчитав это направление интересным и перспективным мы с партнером вложились в свой первый бизнес.
Наивные, мы не понимали во что ввязались Следующие 2.5 года в качестве отдачи получали лишь только опыт.
При чем тут Drupal?
При том, что мы от незнания считали, что у нас есть выбор на чем делать себе проект. Мы прошли сложный пятилетний путь до Drupal.
Как и многие мы делали себе сайты на Joomla (Mambo), WP, Битрикс и в конце концов на Drupal. Пытались связать сайт с биллингом (чего только мы не использовали: WHMCS, Plesk, Billmanager и др.). Потом с 1С и другими решениями для автоматизации бизнес-процессов.
Наш сайт обрастал новым функционалом, были требования к SEO, к маркетингу, upsell, crossell и т.д. А ведь хостинг - это дешевая услуга, с низкой маржинальностью, поэтому было нужно еще больше клиентов и при этом не утонуть в операционке.
Ежедневные задачи: работа с тикетами, внутренними и клиентскими задачами, контроль качества работы сотрудников поддержки, обработка email, ведение и учет клиентов, работа с воронками, формирование финансовых отчетов, отправка email/sms-уведомлений и целевых рассылок… и еще куча всего.
У конкурентов были партнерки, продажа SSL, доменов, CMS-лицензий, услуги по администрированию, серверное железо и нам хотелось продавать это тоже. Это означало, что нам нужно еще более универсальное биллинг-решение.
Это далеко не полный список “must-have” для хостинговой инфраструктуры.
Арендовали кучу сервисов и пытались (< ключевое слово) их связать между собой, биллингом и сайтом. Про стабильность работы всей этой "системы" я промолчу. Вся структура была похожа один большой “костыль”. Да, мы знали все нюансы и косяки, предугадывали проблемы наперед. Но, назвать это комфортной работой было нельзя.
Еще раз повторюсь, чтобы хостинг окупался (речь не о прибыли) должно быть ОЧЕНЬ много клиентов. Технические риски росли по мере подключения нового функционала. Как масштабироваться с таким “вело-набором”? Очень большие риски.
Путь в никуда
Крупные конкуренты обладали ресурсами и работали на самописных решениях. У них были деньги на армию разработчиков, а у нас нет. Если бы мы наняли 3-4 разработчиков для написания сложного кастома, с нуля, то в случае, если кто-то из ниш решил бы уйти от нас - мы бы остались с кучей кода в котором вряд ли кто-то бы хотел разбираться. Пришлось бы писать новые костыли и повторить все круги ада. Этот путь проходили многие, мы знаем от коллег по веб-разработке и от клиентов.
Пришлось остановиться и хорошенько во всем разобраться. И вообще, больше ДУМАТЬ перед тем, как принимать решение и делать.
В наш “вело-набор” добавился сайт на Drupal. Мне нравилось то, можно было “накликать” новый функционал, при том получалось гибко и универсально. Сайт работал, развивался и мы все больше вникали в Drupal-принципы. Тогда я понял идею и перспективы. Я думал, что на Drupal можно создать решение для чего угодно.
“Безумству храбрых поем мы песню”
Прикинув возможности Drupal было предложено сделать все на нем, с нуля. Партнеру моя идея не понравилась Мы долго спорили, считали риски и в итоге не нашли консенсуса. Каждый пошел своей дорогой. Компанию перепродали крупному хостеру. А я остался с сотрудниками и решил все начать с нуля, а именно с создания комплексного решения на Drupal под новый хостинг-проект.
Для начала нужно было уменьшить количество интеграций (!) и связать все воедино. Очень хотелось стабильной и комфортной работы.
Целью - получить гибкую универсальную систему с централизованным управлением.
Для наших клиентов все должно было выглядеть как одно целое: сайт, личный кабинет, тикетница, формы и др. Требовалась единая среда, UI и принцип.
Для наших сотрудников все необходимое для работы должно было находиться в одном месте, без кучи учеток, вкладок, работать с одним интерфейсом. Управлять клиентами и услугами, выполнять маркетинговые задачи, создавать, редактировать и управлять любым контентом на сайте.
Для меня - целесообразность и перспективы минимум на 5-7 лет для текущего и нескольких новых проектов. Применить свой опыт работы с другими системами, чтобы учесть все по-максимуму (взять лучшее и исключить посредственное).
Вместе с командой разработчиков составили список необходимых нам решений с подробным описанием каждой функции.
Вот что получилось:
- Кросс-стандарты для front-end и back-end;
- Универсальный биллинг для “чего-угодно“ (взять лучшие решения у Plesk, WHMCS и др. и добавить в свое);
- Центральное управление хостинг-панелями из Drupal (ISPmanager, CPanel, SolusVM, Proxmox);
- Удобное и понятное отображение и управление товарами и услугами для клиентов;
- Регистрация и продление доменов, интерфейс управления DNS;
- Helpdesk (+тикетницу) и как минимум не хужче, чем это реализовано в WHMCS;
- CRM с системой уведомлений, воронками, канбаном, дэшбордами, realtime-аналитикой, группировкой клиентов по различным условиям, управлением задачами, учетом KPI сотрудников, интеграцией с 1С, трэкингом телефонии, обработкой email, сообщений из соц. сетей, мессенджеров и др.;
- Рекламные и персональные уведомительные рассылки;
- A/B тесты предложений на сайте;
- Сбор, хранение и управление данными о посетителях и клиентах (сейчас это модно называть "360 customers profile view");
- Личный кабинет: баланс (смешанный: для физ. и юр. лиц), бонусные баллы, нарастающие скидки и промо-коды;
- Партнерка (реферальные ссылки, промо-коды, суб-аккаунты, whitelabel);
- Онлайн-чат с возможностью приема оплат, выставлением счетов;
- Автоматика выставления счетов для юр. лиц (РФ) и формирования закрывающих документов;
- Простой учет и отображение доходов и расходов (в реальном времени);
- Менеджмент документов;
- Обучающие курсы для сотрудников и клиентов (в т.ч. с платным доступом);
- Интеграция эквайринга (прием платежей в РФ, Европе и США);
- Службы доставки (для физической доставки товаров);
- Собственные интеграции: DaData, Admitad, GA, Tagmanager, VoIP (UIS), Яндекс-сервисы и еще с десяток других;
- Маркетплейс товаров и услуг;
Мы начали разработку. Пропущу рассказ про новый опыт и “умывание кровью” на протяжении долгих месяцев, но мы знали, что все задуманное возможно. Даже несмотря на нашу небольшую команду.
Про время и деньги
Проект получился дорогой и долгий. Нужно было отбивать зарплаты и приходилось браться за некоторые клиентские проекты. Нам повезло запустить крупные ecommerce-сайты для нескольких известных брендов (Великобритания, Германия, Россия). Называть компании не буду (NDA), но уверен, что каждый читающий этот кейс что-то у них покупал
Кстати, задачи у наших клиентов были примерно похожи: от нас требовалось в максимально короткие сроки запустить достаточно сложный функционал с интеграциями 1C, SAP и кастомными корпоративными ERP. Наши универсальные наработки позволяли сократить сроки в 4, а то и 10 раз. Не скажу, что все было идеально, но на тот момент критичные задачи бизнеса решались. Искренне благодарен нашим клиентам за их веру и поддержку в нас в и Drupal!
Мы получили новый опыт в крупном профессиональном ecommerce, протестировали систему на масштабируемость, погоняли под высокими нагрузками и улучшили имеющийся функционал, а также разработали много нового. Несмотря на срочность разработок мы как-то умудрились делать все без “костылей” и “времянок”, но сильно рисковали сроками.
День победы над Drupal
Сейчас все хорошо. Мы реализовали все, что когда-то планировали. Протестировали систему на наших и на клиентских проектах. Система в боевом режиме, работает как часы. Разумеется highload.
Назвали детище "Drupal Flex" и во всю готовим его для публичного релиза. Пишем мануалы, оформляем сайт, доделываем всякую мелочевку.
Все функции изначально делались универсальными, поэтому система подходит для проектов различной направленности и сложности:
- интернет-магазины
- провайдеры услуг и сервисов
- маркетплейсы
- продажа digital-контента
- online-образование
Если кому интересно, вот некоторые скриншоты вида “под капотом”:
Список реализованных функций с описанием (не полный, еще пишем).
Разумеется, мы буду рад продемонстрировать систему всем желающим. Пишите мне в ЛС и я отправлю доступы к инстансу.
Выводы
Существует некая иллюзия “идеальной” CMS среди их огромного множества. Если нужно создать масштабируемое решение с перспективой развития на несколько лет, то выбор сильно сужается до фреймворков и Drupal. Да, кстати, Drupal – это не CMS. Drupal – это логический принцип.
Drupal сегодня наилучшим образом подходит для построения платформ. Под платформами я имею в виду узкоспециализированные (целевые) CMS, конструкторы, CRM, биллинги, сервисы (SAAS-модель), хелпдески и др.
Drupal хорошо подходит для быстрого запуска сложных веб-проектов.
Drupal отлично подходит для сопровождения групп сайтов (применяя кросс-стандарты).
Drupal сложен для профессионального использования. Профессиональный разработчик скорее всего предложит “написать свое”, чем разбираться в особенностях Drupal.
Drupal – дорогое решение для небольших и средних веб-проектов из-за отсутствия целенаправленных готовых решений. О бесплатных билдах речи не идет, они чаще не адаптированы под конкретные задачи и представляют собой сборку модулей с так себе продуманной архитектурой.
Конечным потребителям:
Для создания простеньких сайтов лучше выбрать Joomla, WP или даже конструкторы типа WIX, Squarespace, uKit, A5. А для очередного мелкого интернет-магазина лучше купить CS-Cart, InSales, 1С Битрикс, UMI или же перебиваться на OpenCart.
Разработчикам:
Любой желающий не сможет “запрыгнуть” в профессиональный Drupal не преобразовав свою систему мышления. Потребуется затратить много времени и усилий. Не мудрено, что несмотря на огромный потенциал Drupal, веб-разработчики часто выбирают другие системы, играя в короткую игру. Так проще и дешевле, но не перспективнее.
P.S.
Я не преследую цели давать какую-либо оценку Drupal или убеждать в (не)правильности выбора. Изложенная информация для тех, у кого есть интерес к Drupal или кто сравнивает его с другими системами. Кто думает над тем, стоит ли вкладывать свое время и усилия в изучение и разработку на этой платформе.
Drupal – это о долгосрочных перспективах.
Желаю, чтобы как можно больше компаний в России начали применять Drupal и на достойном уровне. Так как это делается во всем остальном мире.
Все в наших руках, если очень захотеть
И еще раз всех с Победой!
Комментарии
Спасибо, очень интересная статья! А какой друпал используете: 7 или 8? Используете ли для админки реактивные js-фреймворки и если нет, то собираетесь ли и почему?
Пожалуйста.
Через полтора года уже девятка выйдет)) А так по секрету могу сказать, что ядро восьмёрки уже в 2017 было обкатано. А что касается модулей - то всё больше разработчиков модулей отказываются от поддержки семёрки.
Но не в этом суть. Мне больше интересно вот что - у вас очень большой программный продукт, наверное под сотню тысяч строк кода. Не думали, что на восьмёрке засчёт структурированности всё это добро будет банально проще сопровождать? Просто стиль семёрки - это спагетти-код на 3000 строк в файле .module и столько же в инклюдах. Плюс многие хуки часто подразумевают дублирование кода. И когда на код-ревью прилетает коммит, где изменено 1000 строк в одном файле, то у ревьювера просто-напросто вытекут глаза. Плюс покрытие тестами и совместимость с современными фреймворками для тестирования.
У меня пара вопросов:
1) Есть ли планы рассказать о своем опыте на главном друпал-кемпе? Думаю, лично Дрису, да и другим участниками сообщества будет очень интересно узнать о вашем опыте.
2) В процессе решения задач наверняка кучу модулей написали. Есть ли чем поделиться с сообществом в плане контриба?
До главного друпал-кэмпа всего неделя осталась, между прочим))
Алексей, привет!) Молодец, что все же решил рассказать о своем проекте друпал-сообществу)
Какие планы дальше?
Будет продаваться или бесплатно выложишь (целиком или по модулям)?
з.ы. на промо-сайте говорится про искусственный интеллект. Уже есть что-нибудь готовое?