Второй бренд платформы
Изолированный инстанс под отдельного заказчика
Запущен в 2026
Единственный разработчик: изоляция инстанса, аудит, выкат
Задача
Тот же продукт нужен другому организатору: свой бренд, свои сотрудники, свои деньги. Плюс требование аудита — по любому действию видно, кто и что изменил.
Решение
Изоляция на уровне инстанса, а не общей схемы: отдельная база, свой Gunicorn на своём порту, свои конфигурации Nginx, systemd и PM2. Всё брендозависимое вынесено в настройки в базе плюс management-команда ребрендинга, поэтому выкат нового бренда — воспроизводимая процедура, а не правки руками по всему репозиторию. Сверху единый журнал действий: UUID-ключ, категория, действие, важность, модель и id объекта, старое и новое значение в JSONB, IP, user-agent, метод и путь запроса, индексы под выборку и архивация периода в файл.
Почему так
Два организатора — это два юрлица с разными деньгами. Изоляция по строкам в общей базе держится на дисциплине: один забытый фильтр в queryset — и чужие продажи видно. Я осознанно разменял удобство деплоя на гарантию изоляции. Единый журнал вместо отдельного лога в каждом модуле — чтобы у аудита был один запрос, один индекс и один формат diff-а.
Результат
Второй бренд поднят на том же коде и отработал сезон продаж, процедура выката задокументирована и повторяема. Заказчик под NDA — название не раскрываю, архитектуру разберу на созвоне.