wl·solution
Гайды · Эксплуатация
4 мин чтенияобновлено 2026-06-30

Suspend / Resume тенанта: что происходит на самом деле

Что меняется в БД и на VPS клиента при заморозке тенанта, что переживает suspend, как откатить через resume, что попадает в audit_log.

Suspend — это управленческое действие: оператор временно отключает доступ к тенанту, не уничтожая ничего на стороне VPS. Чаще всего используется при просрочке оплаты или жалобах, когда нужно поставить клиента на паузу, но не сносить данные.

Реализация в api/internal/admin/handlers.go (suspend/resume) и api/internal/deployments/transition.go. Каждое такое действие пишется в audit_events.

Что меняется в БД

deployments.status переходит running → suspended (resume — обратно). На уровне Postgres это просто колонка, без записей в job_runs — действие синхронное.

В audit_events пишется entry: action=deploy.suspend (или deploy.resume), entity_type=deployment, entity_id=<uuid>, actor=admin, detail={reason}.

Что меняется на VPS клиента

Сейчас suspend не выключает контейнеры на VPS — данные и БД остаются на месте, домен продолжает резолвиться. Эффект достигается на уровне reverse-proxy/login: cabinet и API-эндпоинты, защищённые middleware deployments.RequireActive, отдают 423 Locked клиенту тенанта.

Это сознательный компромисс: мы не хотим терять состояние ради 30-секундного резюме после оплаты. Если нужен жёсткий cut-off (например, по требованию законодателя), используется отдельный flow — terminate, который добавляется в roadmap.

Что переживает suspend

  • База данных тенанта (Postgres на VPS)
  • Файлы /opt/app/* и docker-volumes
  • Кастомные домены — записи остаются, Caddy продолжает обслуживать /health
  • Бэкапы в /opt/backups
  • Очередь deploy.update — не ставится новых апдейтов, пока suspended

Resume и почему он быстрый

POST /admin/deployments/<id>/resume — статус возвращается в running, middleware снимает блок, клиент тенанта попадает в кабинет на следующий же запрос. Никаких docker pull, никаких миграций — потому что на VPS ничего не трогали.

Связанные гайды

Хотите развернуть свой тенант на wl-installer?

Аренда: 5 минут от заказа до боевого URL. Покупка с исходниками: 1–5 рабочих дней.