Кейс экосистемы MACRO: как перестать MVP и начать Enterprise

MACRO сейчас – это экосистема цифровых инструментов для строительных компаний. У нас 9 своих IT продуктов и ряд интегрированных партнерских. Наши флагманы — MacroCRM и MacroERP, готовые отраслевые решения. У нас более 120 корпоративных клиентов по всей стране и мы удваиваем наши показатели третий год подряд. Систему пишут всего 10 разработчиков (включая одного UX дизайнера). Постараюсь раскрыть, насколько это возможно, каким образом нам это удается.

И представлюсь, Артем Бреславский, один из собственников компании и разработчик первой версии системы. Именно с меня, собственно, все и началось ;)
И представлюсь, Артем Бреславский, один из собственников компании и разработчик первой версии системы. Именно с меня, собственно, все и началось ;)

В начале был сайт

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

Шел 2012 год. Время было суровое: касдев, спринт, TDD – неизвестные термины из параллельной вселенной. Был только бэклог и продакшн, а между ними энтузиаст-разработчик (он же продакт). Требования к системе и ее компонентам менялись несколько раз в неделю, по мере того, как рождалось понимание оптимальной структуры работы программы. В такой «agile-по-плохому» ситуации перед платформой системы ставились довольно простые задачи: возможность быстро наращивать и изменять бизнес-логику, экспериментировать, при это оставаясь стабильно работающим, архитектурно-устойчивым и защищенным продуктом.

С 2012 по 2016 год мы разрабатывали базовые компоненты будущей платформы MACRO, тестировали гипотезы (через 5 лет мы узнали что это называется HADI-циклы: )), пробовали новые технологии, писали и переписывали код.

Ядро системы представляет собой MVC-архитектуру. Движок на PHP собственной разработки, заточенный на гибкость и производительность. Routing базируется на расположении контроллеров аналогично сегментам запрошенного пути, что очень серьезно ускоряет разработку и позволяет быстро дебажить код. MySQL полностью удовлетворял все текущие и будущие требования проекта к СУБД. Sphinx решил все вопросы, связанные с ошеломительно быстрым и точным поиском данных, и что немаловажно – быструю адаптацию конфигурации к изменяющейся структуре данных. Фронт состоял из Jquery, JqueryUI + масса плагинов, предоставляющих возможность быстро верстать адекватно (на тот момент) выглядящие интерфейсы.

Таким параметрами могут «похвастаться» половина существующих на тот момент PHP фреймворков и большинство самописных CRM.

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

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

Система изначально разрабатывалась как SaaS продукт для риэлтеров, но первый якорный клиент достаточно быстро вырос из риэлтора в застройщика, что потребовало смены курса и для самой системы.

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

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

Кейс экосистемы MACRO: как перестать MVP и начать Enterprise

Наш путь тернист и славен

Мы начали нанимать разработчиков только с конца 2016 года, когда достаточно подрос доход с абонентской платы от клиентов.

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

Подстроили под свои нужды задачник в MacroCRM (в будущем получивший название MacroPlan), добавили в него учет отработанных часов, настроили процедуру тестирования и приемки работ, контроля загрузки разработчиков. Связали задачник с git репозиторием для автоматического формирования названия веток в соответствии с id и названием задачи. Задачник служит одновременно бэк-логом, оперативным планом работы и системой коллективной работы как для разработчиков, так и для других сотрудников – техподдержки, проджектов, продактов, руководства.

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

Установили внутренний мониторинг узких участков системы на Telegram-botа, который помимо этого сообщает в специальной группе о слитых в мастер-ветку пулл-реквестов по конкретным задачам, мониторит узкие участки в системе, информирует об обновлении серверов.

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

Одновременно с развитием системы разработки шло развитие самой системы. Внедрили дополнительно к софт-очереди в базе данных, hard-очередь на RabbitMQ.

Написали API для встройки виджетов в сторонние сайты (как собственно и сами виджеты: каталог недвижимости, агентский кабинет, клиентский кабинет). Написали отдельный суб-продукт — тендерную площадку, работающий по API в связке с MacroERP. Написали отдельный суб-продукт – MacroBank – систему коммуникации банка и застройщика в рамках проектного финансирования для ведущего банка страны.

Разработали свой UI-стиль и начали планомерный перевод на него всех интерфейсов, с одновременным их переводом на Vue (JqueryUI был полностью заменен на Bootstrap еще в 2017 году).

Оглядываясь назад, есть понимание большой проделанной работы, но вместе с тем предстоит еще множество улучшений как процесса разработки, так и архитектуры самой системы. Это и TDD, CI/CD, открытое API, микросервисная архитектура в определенных компонентах системы, и т.д. и т.п. Однако, внедрение этих инструментов уже началось и это только вопрос времени.

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

99
11 комментариев

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

Ответить

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

Ответить

Ждём продолжения. Что дальше, IPO? Вселенское господство?😉

Ответить

Примерно в таком порядке, да)

Ответить

Очень интерная статья, жду продолжения!

Ответить

Если не секрет, насколько большая у вас уже клиентская база? И как вам удаётся так умело ее наращивать? 🤔

Ответить

Такой и должен быть хороший сервис, чтобы клиент думал, что оно все само так работает😁

Ответить