Фича-флаг — это, по сути, пара «ключ → значение» (чаще всего булево), которая определяет, активна ли возможность в приложении. В коде это выглядит как обычное условие: если флаг включен — выполняется новая логика, если выключен — работает старое поведение. С помощью флагов можно прятать незавершенные фичи за условием и постепенно раскатывать их на аудиторию.
На первых порах флаги почти всегда делают «локально» — переменной окружения, константой или параметром в конфиге приложения. В маленьком проекте это честно работает и ничего лучше не нужно. Проблемы начинаются на масштабе команды и множества окружений.
Во-первых, чтобы поменять значение локального флага, обычно нужен новый деплой. Возможность «покрутить тумблер на лету» теряется — а вместе с ней и половина смысла флагов. Во-вторых, появляется рассинхрон: в проде фича включена через одну конфигурацию, в тестовой сборке — выключена по умолчанию, и тестировщики вручную приводят одно к другому. В-третьих, никто не знает полной картины: какие флаги вообще есть, кто и когда их трогал и какие давно пора удалить.
Централизованная платформа управления флагами (например, Unleash) убирает именно эти боли. Флаги живут в одном месте с веб-интерфейсом; значения меняются в рантайме без единого деплоя; есть стратегии выката, таргетинг по атрибутам пользователя и полная история изменений с автором и временем.
Технически это устроено так: приложение подключает SDK, который периодически подтягивает конфигурацию флагов и вычисляет их значение локально — быстро и без похода в сеть на каждый запрос. Разработчик в коде просто спрашивает «включен ли флаг X для этого пользователя?», а вся логика раскатки (кому, сколько процентов, по каким правилам) живет вне кода и меняется без релиза.
Отдельная тема — гигиена флагов. Централизованный подход не только упрощает включение, но и делает видимым устаревшее: платформа подсказывает «мертвые» флаги, которые давно на 100% и только засоряют код. Правило простое: у каждого флага есть владелец и предполагаемый срок жизни.
Полную версию с примерами кода и разбором стратегий я разобрал в статье на Хабре — ссылка ниже.