EN
Блог · Feature flags · 2025

Забудьте о локальных if-ах: как централизованные feature flags упрощают жизнь

Фича-флаг — это пара «ключ → значение», которая решает, активна ли возможность. Почему локальные флаги в конфиге ломаются на масштабе и что дает централизованный подход.

Фича-флаг — это, по сути, пара «ключ → значение» (чаще всего булево), которая определяет, активна ли возможность в приложении. В коде это выглядит как обычное условие: если флаг включен — выполняется новая логика, если выключен — работает старое поведение. С помощью флагов можно прятать незавершенные фичи за условием и постепенно раскатывать их на аудиторию.

На первых порах флаги почти всегда делают «локально» — переменной окружения, константой или параметром в конфиге приложения. В маленьком проекте это честно работает и ничего лучше не нужно. Проблемы начинаются на масштабе команды и множества окружений.

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

Централизованная платформа управления флагами (например, Unleash) убирает именно эти боли. Флаги живут в одном месте с веб-интерфейсом; значения меняются в рантайме без единого деплоя; есть стратегии выката, таргетинг по атрибутам пользователя и полная история изменений с автором и временем.

Технически это устроено так: приложение подключает SDK, который периодически подтягивает конфигурацию флагов и вычисляет их значение локально — быстро и без похода в сеть на каждый запрос. Разработчик в коде просто спрашивает «включен ли флаг X для этого пользователя?», а вся логика раскатки (кому, сколько процентов, по каким правилам) живет вне кода и меняется без релиза.

Отдельная тема — гигиена флагов. Централизованный подход не только упрощает включение, но и делает видимым устаревшее: платформа подсказывает «мертвые» флаги, которые давно на 100% и только засоряют код. Правило простое: у каждого флага есть владелец и предполагаемый срок жизни.

Полную версию с примерами кода и разбором стратегий я разобрал в статье на Хабре — ссылка ниже.

Читать на Хабре