Проект для одного клиента превращается в продукт
Систему сделали под одну компанию, теперь её просят другие. Копии приложения придётся чинить поодиночке. Нужно ядро и слой настроек.
Multi-tenant SaaS — это один продукт, который обслуживает много компаний-клиентов из одной кодовой базы, а не копия приложения на каждого. Разделить данные клиентов — только начало: нужны ещё настройки без доработок, вход через каталог клиента, лимиты против «шумного соседа», подключение и отключение организации и ответы на опросник безопасности. Делаем такое ядро на заказ, начиная с обследования.
Обследование — от 200 000 ₽, 2–3 неделиИзоляцию клиентов проверяем тестом, а не обещаниемИсходный код в вашем репозитории с первого коммита
Систему сделали под одну компанию, теперь её просят другие. Копии приложения придётся чинить поодиночке. Нужно ядро и слой настроек.
Один хочет другое поле, второй другой порядок согласования, третий свой отчёт. Без правил, что настраивается, код превращается в набор исключений.
Где хранятся данные, как они отделены, есть ли вход через наш каталог, журнал и выгрузка. Ответ «не знаем» можно дать один раз.
Один клиент запустил тяжёлый отчёт, и у остальных всё замедлилось: ограничений на ресурсы нет.
Схемы хранения данных разобраны на странице разработки SaaS-платформы и в статье про мультиарендность. Здесь о том, что нужно кроме них.
Описание «клиент зарегистрировался и работает» занимает одну страницу. Остальные случаи занимают остальные.
У организации-клиента в системе есть состояние, и каждый переход между состояниями описан до разработки. Иначе при первой просрочке платежа кто-то идёт в базу и отключает доступ руками.
Состояния связаны с биллингом и тарифами: как это устроено, показывает разбор типовой задачи про тарифы и счета.
Граница между настройкой и доработкой записывается в договоре и в документации. Иначе её определяет самый настойчивый клиент.
Правило простое: всё, что отличается у клиентов, но укладывается в известные формы, живёт в данных. Всё, что требует новой логики, живёт в коде и доступно всем или никому. Практически это четыре слоя.
Если клиент платит за то, что в эти слои не укладывается, возможны два пути: функция становится частью продукта и получает флаг, либо это интеграция через API. Третий путь, ветка кода для одного клиента, превращает multi-tenant обратно в набор копий. Мы его не предлагаем.
Настройки проверяют так же, как код: у них есть версии, а откат настроек одной организации не затрагивает остальных.
Заготовка разговора об ограничениях. На ваших данных строки будут другими, вопросы те же.
Опросники у разных компаний различаются, но повторяются одни и те же темы. Юридические формулировки и сертификаты не входят в наши работы, мы даём технические меры.
У multi-tenant продукта два круга пользователей: клиенты и ваша команда. Админка для второго круга входит в первую версию. Сотрудник поддержки находит организацию, видит её состояние, лимиты и последние ошибки и при необходимости открывает продукт «от имени клиента». Каждый такой вход пишется в журнал с указанием сотрудника и причины, права на него выдаются отдельной ролью.
Обновления делаются с расчётом на то, что клиентов много, а окно простоя у каждого своё. Структура данных меняется в два шага: сначала добавляется новое поле, совместимое со старым кодом, затем код переходит на него, и только потом старое поле убирается. Новые возможности включаются флагом сначала для нескольких организаций. Для схемы «отдельная база на клиента» добавляются реестр баз и массовый запуск изменений, и эта трудоёмкость видна в оценке заранее.
Публичный API для клиентов проектируется с теми же ограничениями: ключ привязан к организации, версии не ломают чужие скрипты. Подробнее — в разборе публичного API SaaS-продукта и на странице API и бэкенда.
Цены — по тарифам. Цена платформы называется по итогам обследования, остановиться можно после любой ступени.
Кто клиенты, чем различаются, что настраивается, что спрашивают при закупке. На выходе схема изоляции, состав первой версии, вилка бюджета. Вычитается из первого этапа.
Когда нужен обмен с учётом, CRM или каталогами клиентов: схема обменов и матрица источников данных.
Главный сценарий для двух-трёх организаций без биллинга и без полного набора настроек.
Организации, роли, слой настроек, лимиты, тарифы и счёт, админка вашей команды, журнал. Идёт в тарифах как тяжёлый пилот.
Опытная эксплуатация на всех клиентах, нагрузочные испытания, регламент копий и удаления данных организации.
Мониторинг, обращения, разбор инцидентов и плановые доработки с пакета на 60 000 ₽. Сверх пакета — 5 000 ₽ в час.
Делим различия клиентов на настройки и функции продукта, собираем вопросы закупки, выбираем схему изоляции, описываем состояния организации.
Сначала тест «клиент A не видит клиента B» и модель прав, потом первые экраны. Тест остаётся в сборке навсегда.
Организации, роли, настройки, лимиты, админка. Раз в две недели показываем версию на тестовом стенде.
Прогон прав из-под каждой роли, проверка лимитов, восстановление одной организации из копии и удаление её данных.
Подключаем одну-две организации, смотрим журнал, ошибки и обращения, затем расширяем круг.
Новые возможности включаются флагами и идут этапами с отдельной приёмкой. Объём работ в месяц записан в договоре.
Если клиенты и партнёры смотрят на вашу информацию и оформляют заявки, это личный кабинет или B2B-портал: одна организация-владелец, много внешних пользователей. Если вы продаёте доступ к продукту компаниям, у каждой из которых свои пользователи, настройки, тариф и данные, нужен multi-tenant SaaS.
Общее описание платформы и состав MVP — на странице разработки SaaS-платформы; как сузить первую версию до главного сценария, — на странице разработки SaaS MVP. Устройство такой системы показывает разбор типовой задачи многоарендная B2B SaaS-платформа. Про ИИ-функции в продукте — отдельная статья.
Три схемы изоляции, тесты «клиент A не видит клиента B» и способы сменить схему позже.
Цена по ступеням, четыре фактора вилки и признаки плохой оценки.
Как вычеркнуть из первой версии лишнее и не потерять главный сценарий.
Сорок минут созвона: что за продукт, кто клиенты, чем они различаются и какие требования уже прозвучали. По итогам скажем, с какой ступени начинать и в какую вилку это укладывается.
Обычный веб-сервис обслуживает одну организацию или открытую аудиторию. В multi-tenant продукте одна кодовая база обслуживает много компаний, у каждой свои данные, пользователи, настройки и тариф. Отсюда изоляция данных, слой настроек, лимиты ресурсов и жизненный цикл организации.
Чаще всего общую схему с идентификатором организации в каждой таблице и политиками на уровне строк в базе: она дешевле в эксплуатации. Отдельную схему или базу берут для клиентов с особыми требованиями. Выбор делаем на обследовании по вашим клиентам, подробнее в статье про мультиарендность.
Обследование — 200 000 ₽ за один-два процесса или 350 000 ₽, если платформа связана с несколькими системами. Первая версия — 400 000–1 200 000 ₽ за 2–3 месяца, вывод в эксплуатацию — от 1 500 000 ₽ этапами по 300 000–700 000 ₽, сопровождение — от 20 000 ₽ в месяц. Цена платформы называется по итогам обследования, обследование вычитается из первого этапа.
Часто можно, но не всегда выгодно. На обследовании смотрим, есть ли в коде разделение данных по организациям и права на сервере. Если нет, переделка ядра может стоить как новая версия. Покажем оба варианта с вилками, выбор за вами.
Автоматическим тестом в сборке: он создаёт две организации и пробует открыть данные второй из-под первой через интерфейс, API, файлы и фоновые задачи. Перед релизом идёт отдельный прогон из-под каждой роли. Это проверка кода и конфигурации, а не пентест боевой системы.
Да, по протоколам OIDC и SAML, роли соотносятся с группами каталога. Подключение каждого клиента требует настройки с его стороны и тестовой среды, это идёт в сроки отдельной строкой.
Код принадлежит вам и лежит в вашем репозитории с первого коммита. Платформа работает на ваших серверах или у выбранного вами хостера. Персональные данные граждан России обычно должны храниться на серверах в России.
Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.