Rollout, Feature Flags И Release Safety
Назначение
Документ задает правила безопасного выпуска изменений через dark launch, gradual rollout, scoped enablement, kill switch и rollback/forward-fix. Любой flag, влияющий на деньги, security, permissions, auditability, tenant isolation или критичные интеграции, считается risky flag.
Типы Feature Flags
| Тип | Назначение | TTL | Approval |
|---|---|---|---|
| Release flag | Разделить deploy и enablement | До завершения rollout, максимум 30 дней | Service owner |
| Ops flag | Операционное переключение режима, лимитов, throttling, маршрута интеграции | Пока действует operational policy | Ops owner + service owner |
| Experiment flag | UX или workflow experiment без critical side effects | По плану эксперимента | Product/process owner |
| Permission flag | Временное включение capability до фиксации в policy catalog | До миграции в постоянную модель | Security owner |
| Risky flag | Критичный runtime path | Минимальный срок, review каждые 7 дней | Domain owner + Security/Finance where applicable |
| Kill switch | Быстрое отключение side effect path | Постоянно доступен | Pre-approved owner group |
Правила Хранения И Оценки
- Flag key имеет формат
<domain>.<capability>.<decision>. - Значение flag является typed model; arbitrary
jsonзапрещен. - Evaluation context содержит только bounded поля.
- Secrets, credentials и raw payloads не передаются в flag context.
- Для risky flag обязателен documented fallback behavior.
- Для high-impact operations активное значение flag фиксируется в audit или release evidence.
Dark Launch
Dark launch используется, когда код должен быть deployed без пользовательского эффекта.
- Код deployed с disabled release flag.
- Read-only shadow path может выполнять проверку или расчет без side effects.
- Shadow result сравнивается с текущим поведением через bounded metrics.
- Threshold breach останавливает rollout.
- Shadow path не публикует events и не меняет source of truth.
Gradual Rollout
| Stage | Scope | Gate |
|---|---|---|
internal | Internal tenant or test environment | Smoke tests, dashboards green |
canary-1 | 1% traffic or one low-risk tenant | Error/latency/business delta |
canary-10 | 10% traffic | SLO burn within threshold |
selected-scope | Selected tenants, regions or org units | Ops approval and support readiness |
full | 100% enabled | Release owner approval |
Kill Switch
Kill switch обязателен для:
- critical write paths;
- irreversible exports;
- privileged approvals;
- risky external integrations;
- high-volume background processing;
- security-sensitive policy changes.
Rollback И Forward-Fix
| Ситуация | Предпочтительное Действие |
|---|---|
| UI defect without data corruption | Disable flag or rollback frontend |
| API errors after canary | Stop rollout, disable flag, inspect traces |
| Invariant risk | Kill switch, freeze flow, reconcile, approve resume |
| Bad migration without data loss | Forward-fix with compatibility |
| Dependency degradation | Switch route or degraded mode through approved ops flag |
| Contract issue | Stop producers/consumers per runbook, deploy compatible version |
Rollback не должен удалять audit, evidence, financial records или event history.
Release Safety Checklist
- CI gates passed;
- release package содержит changed APIs/events/models/permissions/flags;
- dashboards и alerts готовы;
- risky flags имеют owner, expiry и cleanup task;
- migrations имеют compatibility plan;
- support/ops знают impact и scope;
- для critical changes подготовлен evidence package.
Обратные ссылки
Автоссылки: где используется этот документ.
- ci-cd.md (1): CI/CD Notes
- backend-shared-standards-index.md (1): Backend Shared Standards Index