advanced

Feature flags

Используйте release, experiment, permission и operational flags с ownership, планами cleanup, safe defaults и monitoring.

Feature flags разделяют deployment и release: код в dark, включение для когорт, эксперименты или kill switches. Зрелый процесс — ownership, safe defaults, monitoring, rollback behavior и сроки cleanup — не вечное ветвление в коде.

| Тип flag | Типичное use | |----------|--------------| | Release | Постепенный rollout нового UX | | Experiment | A/B с metric guardrails | | Permission | Entitlement или internal-only | | Operational | Kill switch при incidents |

					if (flags.checkoutV2(user)) {
  return renderCheckoutV2(order);
}
return renderCheckoutV1(order);
// Owner: payments-team; remove by 2025-Q3; metric: checkout_error_rate
				

На интервью: lifecycle flag — create, default off, dashboards, стадии rollout, owner, ticket на удаление. Contrast с вечными `if (false)`.

Типовые ошибки: нет owner; stale flags; client-only flags для security; enable без rollback plan.

Компромисс — гибкость rollout против сложности кода и долга flag inventory.

Чеклист:

  • Owner и дата удаления на flag.
  • Safe default (обычно off для risky paths).
  • Key metrics при rollout.
  • Удалить flag и dead code после adoption.