В прошлом году мы с товарищем делали проект по созданию БАДов. Не буду вдаваться в подробности — но я из того проекта вышел, потому что до нормальных денег надо было ещё долго бежать, а у меня не было достаточных запасов, чтобы покрыть затраты на жизнь.
И вот мы тогда решали — продавать БАДы на маркетплейсах или строить свой интернет магазин. Я прорабатывал создание нашего магазина, начал с построения архитектуры.
Очень много думал и понял, что хорошая архитектура должна решать 3 задачи:
1) Легко масштабироваться. Чтобы мы могли быстро прикручивать дополнительные элементы. Например, сначала принимали заказы только через веб сайт, а потом прикрутили ещё и телеграм бота — при этом товары и остатки на обоих витринах синхронизированы.
2) Корректно собирать данные. Чтобы мы могли правильно учитывать и анализировать все что происходит с пользователями, товарами, каналами продаж и другими сущностями. Чтобы видеть все заказы у одного клиента, количество продаж по товарам, считать юнит-экономику по когортам, продажи по PnL, проводить RFM анализ.
3) Легко чиниться. Если один узел вышел из строя — мы должны быстро заметить его на другой с минимальными потерями. Например, доставляли через Яндекс, он начал сбоить из-за атак БПЛА — тут же заменили на доставку от СДЭК. Сайт на Битриксе упал — быстро перешли на Тильду.
Прикладываю картинку, как я проектировал нашу структуру. Потом я ходил с этой схемой по разным консультантам и обсуждал, насколько это адекватно или нет. Говорили: норм, рабочая схема!
Душный пост получился. Но если вы планируете строить ИТ систему и у вас есть запас времени на подумать, то учитывайте 3 свойства: масштабируемость, корректный сбор данных, легкая починка. У меня были кейсы, когда на продумывание системы времени не было. И потом приходилось тратить лишнее время и на масштаб, и на починку, и на аналитику.
#продукт #база