White-Label AI платформа: мультитенантность и кастомизация

Запускаете продукт для многих клиентов, а доступы, данные и тарифы до сих пор настраиваются вручную? Мы проектируем и внедряем white-label AI платформы под ключ: единый контур с изоляцией арендаторов, гибкой кастомизацией и понятной передачей вашей команде. Ручные операции сокращаются в разы, а новый арендатор подключается за часы, а не недели.
Часто задаваемые вопросы

White-label AI платформа: где ломается мультитенантность

Мультитенантная White-Label AI платформа обещает понятную экономику: одна кодовая база, один контур обновлений, много клиентов под собственными брендами. Ломается такая схема не на моделях, а на границах между арендаторами — и обычно в четырёх предсказуемых местах.

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

Второе — ручная выдача доступов: роли, ключи, лимиты и квоты заводятся человеком по чек-листу. Время вывода нового арендатора растёт от дней к неделям, и там же растёт цена ошибки в правах: лишняя роль у подрядчика клиента не отзывается месяцами.

Третье — расползание кастомных сборок. «Сделайте кнопку иначе» превращается в отдельную ветку, обновление ядра проверяется по каждому арендатору вручную, и изоляция арендаторов заканчивается вместе с ней. Четвёртое — наблюдаемость: метрики, логи и лимиты общие, поэтому инцидент у одного клиента выглядит как деградация у всех. Разбираем, как эти точки отказа SaaS-схемы закрываются архитектурно.

Что даёт мультитенантный контур: измеримые метрики после запуска

Разрозненные инсталляции под каждого заказчика дают предсказуемую цену: новая копия ядра, свои миграции, своя ветка поддержки. Время вывода арендатора измеряется неделями, а исправление, найденное у одного клиента, переносится руками в остальные контуры — отсюда и класс отказов из-за расхождения версий, и рост нагрузки на поддержку.

Метрика внедрения До После
Время вывода арендатора недели: копия ядра, миграции, своя ветка дни: изоляция, квоты и роли — декларативно
Класс отказов правка одного контура расходится с остальными ядро одно, расхождение версий исключено
Нагрузка на поддержку ручные действия по каждому клиенту обновление ядра один раз для всех
Изоляция нагрузки всплеск у одного тормозит соседей квоты держат потребителя в его границах

Эффект даёт разделение на общее ядро и тонкие переопределения арендатора: лимиты, права, маршруты и переключатели живут как конфигурация, а не как отдельная ветка кода. Контур разворачивается на Kubernetes — пространство имён, квоты и сетевые политики на арендатора, поэтому данные и ресурсы не пересекаются, а обновление ядра проходит один раз.

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

Варианты изоляции арендаторов: общий, сегментный, выделенный

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

Размен прямой: чем сильнее изоляция, тем выше свобода кастомизации — и тем больше контуров приходится обновлять, тестировать и сопровождать по отдельности.

Вариант Когда подходит Ограничения подхода
Общий контур Массовый сегмент, различия укладываются в настройки, роли и права Общая ветка: доработка под одного арендатора идёт в конфигурацию, а не в код; требования к обособлению данных закрыть нельзя
Сегментный контур Группы арендаторов с близкой логикой: отрасли, регионы, уровни обслуживания Веток становится несколько: обновление раскатывается волнами, часть изменений дублируется между сегментами
Выделенный контур Арендатор с требованиями к обособлению, своим набором интеграций и своим темпом релизов Отдельный экземпляр и отдельная ветка: обновления, регресс и мониторинг — самостоятельная работа, перенос доработок в общее ядро синхронизируется вручную

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

Этапы внедрения: от разбора данных до передачи платформы

Внедрение идёт последовательными шагами, и каждый заканчивается артефактом, по которому видно: можно двигаться дальше или нужно менять схему. Настройку ролей мы не начинаем, пока не описаны границы арендаторов — иначе изоляцию приходится переделывать уже на живой нагрузке.

  1. Аудит данных. Разбираем источники, сущности и то, что сейчас помечено владельцем неявно. На выходе — карта данных: что можно объединять, а что нельзя смешивать ни при каких условиях.
  2. Проектирование схемы арендаторов. Выбираем разделение — отдельная база, отдельная схема или общий контур с обязательным ключом арендатора. Решение фиксируем в схеме, а не в коде приложения: политику можно менять без переписывания логики.
  3. Роли и лимиты. Разграничиваем доступ администратора, оператора и конечного пользователя, задаём квоты на запросы, объём хранения и число арендаторов. Лимиты живут на уровне платформы — один клиент не влияет на остальных.
  4. Проверка изоляции. Прогоняем сценарии, где арендатор пытается достать чужие данные через запросы, отчёты, экспорт и поиск. Отдельно смотрим фоновые задачи, промежуточные хранилища и выгрузки — там утечки встречаются чаще всего.
  5. Опытная эксплуатация. Подключаем одного-двух клиентов на реальных задачах и снимаем метрики: время ответа, доля отказов, поведение платформы при росте числа арендаторов.
  6. Передача платформы. Отдаём конфигурации, схему арендаторов, политики доступа, порядок подключения нового клиента и выпуска обновлений, обучаем вашу команду на вашем же контуре.

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

Пакет передачи: конфигурации, схемы, политики доступа, регламенты

Пакет передачи — не архив с файлами, а комплект, по которому платформу можно поднять и вести без нас. В него входит всё, что определяет поведение системы: конфигурации, схемы данных, политики доступа и регламенты. Комплектность проверяем на приёмке: разворачиваем окружение по документам и сверяем результат с эталонным.

  • Рабочие конфигурации — параметры контуров разработки, тестирования и промышленного, лимиты по арендаторам, настройки очередей и приоритетов запросов.
  • Схемы маршрутизации — как запрос доходит до модели, где включаются модерация и логирование, какой резервный путь работает при отказе основного.
  • Схемы данных — структура хранения, связи между арендаторами, правила изоляции, сроки и порядок хранения истории.
  • Политики доступа — роли и области видимости, разделение прав администратора платформы и администратора арендатора, порядок выдачи и отзыва ключей.
  • Регламенты эксплуатации — обновление моделей, порядок отката, реакция на деградацию качества ответов, плановые работы и уведомления.
  • Документация — архитектура, точки интеграции, инструкции для поддержки, матрица ответственности между командами.
  • Наборы проверок — тестовые сценарии и критерии приёмки, по которым вы сами подтверждаете работоспособность после изменений.

Отдаём всё в редактируемом виде и с версионированием: правки вносятся без нас и не ломают совместимость.

Кейс: как сервис убрал ручную выдачу доступов арендаторам

Что было до перехода

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

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

Что изменили и что показали замеры

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

Метрики до и после на опытной эксплуатации: из 40+ контуров перевели 15, срок выдачи доступа сократился с двух дней до 5–7 минут, доля запросов, закрытых самообслуживанием, — 92%, поток обращений в поддержку упал с 40 до 7–9 в неделю, доступы с избыточными правами — с 12% до 0,8%, подключение нового арендатора — 15 минут вместо одного-двух дней.

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

Чем отличается мультитенантность от копий развёртывания?

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

Уровень изоляции выбирается осознанно: общая база с разграничением доступа по строкам, отдельная схема на клиента или отдельное хранилище. Первые два варианта дают плотную упаковку и общие справочники, третий — физическую изоляцию там, где её требует политика заказчика. Копии дают такую изоляцию сразу, но за неё платят дублированием инфраструктуры и логики.

Скорость обновлений — главное расхождение. В едином контуре исправление или новая возможность выкатываются одним релизом и доезжают до всех клиентов синхронно, откат тоже один. При копиях каждое изменение превращается в столько миграций, сколько развёртываний: версии расходятся, часть заказчиков остаётся на старой сборке, а диагностика инцидента требует обхода стендов.

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

Рабочая схема для white-label платформы — единый контур с разграничением как основа, а выделенное развёртывание только для клиентов с жёсткими требованиями к изоляции данных.

Технические сомнения: изоляция данных, тарификация, обновления

Инженерные возражения по white-label платформе сводятся к трём: не утекут ли данные между арендаторами, как считается потребление, как кастомизация уживается с общими релизами. Разбираем по порядку.

Как проверяется изоляция данных между арендаторами?

Каждая запись помечена ключом арендатора, доступ ограничен ролями базы и политиками row-level security — приложение не вернёт чужие строки. Файлы и векторы лежат в отдельных пространствах хранилища со своими ключами шифрования. Изоляцию подтверждаем тестами: проверка читает данные одного арендатора под учёткой другого и должна получить отказ.

Как настраиваются лимиты и тарификация арендаторов?

Учёт идёт на входном шлюзе: запросы, токены, время работы модели и объём хранилища считаются с меткой арендатора. Мягкая квота предупреждает, жёсткая ограничивает — один арендатор не выест общий пул. Счета строятся на тех же счётчиках, поэтому тарификация и лимиты не расходятся.

Не ломает ли кастомизация общие обновления?

Ядро и клиентские доработки разделены: изменения живут в слое расширений и конфигурациях, а не в общей кодовой базе. Обновление ядра выкатывается канареечно по арендаторам, миграции версионируются, откат — на предыдущий релиз. Конфликт доработки с ядром виден на сборке, а не у заказчика.

Обсудим задачу: соберём схему арендаторов под ваш продукт

Чтобы обсудить задачу предметно и не угадывать архитектуру, нам нужны вводные по продукту: как устроена ваша модель продаж, сколько независимых клиентов планируется в первый год и чем они отличаются друг от друга. С этим набором мы за один созвон снимем неопределённости и вернёмся со схемой арендаторов, планом этапов и оценкой работ — без промежуточных «уточним позже».

Что стоит подготовить к разговору:

  • Перечень сценариев арендаторов: какие роли внутри каждого, что они видят и что им запрещено.
  • Требования к изоляции: данные и настройки каждого клиента не пересекаются, при этом общая логика продукта остаётся одной.
  • Список кастомизаций: брендирование, домены, письма, отчёты, пороги и правила, которые клиент меняет сам.
  • Модель тарифов и ограничений: какие лимиты включаются на уровне арендатора, а какие — на уровне пользователя.
  • Точки интеграции: внешние системы, обмен данными, требования по доступам и разграничению прав.
  • Прогноз нагрузки и роста: сколько арендаторов добавится за квартал и как это отражается на инфраструктуре.
  • Ограничения по срокам запуска и того, что уже работает и не должно сломаться.

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

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1543
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1374
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142