Feature Flags — гибкие фичи без новых релизов
“Хочешь включать фичи для 5% юзеров без деплоя Или выкатывать опасную фичу только команде QA Feature flags — твоё оружие.” ⚔️
Feature Flags (или Feature Toggles) — это мощный способ управлять функциональностью приложения без нового релиза. Вместо того чтобы выкатывать код и молиться, можно включать и выключать фичи динамически, по условиям, сегментам или средам.
Что такое Feature Flags
Feature Flag — это переключатель, обёрнутый вокруг кусочка функционала. Он решает: показывать эту фичу пользователю или нет.
if feature_flags.is_enabled("new_dashboard"):
render_new_dashboard()
else:
render_old_dashboard()
Включил флаг → фича активна.
Выключил → код остаётся, но не исполняется.
Преимущества
- Быстрая активация фич без деплоя
- A/B тесты и постепенные выкаты
- Hotfix без релиза — просто вырубаешь флаг
- Разные фичи для разных окружений, команд или пользователей
- Упрощает Blue/Green и Canary стратегии
Виды Feature Flags
| Тип | Что делает | Применение |
|---|---|---|
| Release Flags | Включают/выключают фичи в проде | Постепенный rollout |
| Experiment Flags | Управляют A/B тестами | UX тесты, гипотезы |
| Ops Flags | Управляют стабильностью системы | Быстрое отключение проблемных частей |
| Permission Flags | Открывают фичи определённым группам | Beta-доступ, QA, VIP |
| Kill Switch | Экстренно вырубает часть функционала | Защита от каскадных фейлов |
Пример интеграции в GitLab CI/CD
Ты можешь менять значение флага в конфигурации или через API, не трогая код:
stages:
- deploy
- flags
deploy:
stage: deploy
script:
- ./deploy.sh
enable-feature:
stage: flags
script:
- curl -X POST "https://flags.myapp.com/api/enable/new_dashboard"
when: manual
После деплоя ты жмёшь кнопку в GitLab → фича активируется на проде.
Feature Flags в Kubernetes / Helm
featureFlags:
newDashboard: true
И внутри приложения можно считывать эти значения через ConfigMap, переменные окружения или API. Менять можно без нового образа — достаточно kubectl apply или helm upgrade.
Feature Flags + Canary / Blue-Green
Feature Flags идеально комбинируются с другими стратегиями:
- Canary + Flags → включаешь фичу для 5% пользователей, мониторишь
- Blue/Green + Flags → выкатываешь код в Green, включаешь флаг только там, тестишь, потом переключаешь трафик
Если что-то не так — просто выключаешь флаг. Никакого rollback.
Best Practices
- Удаляй старые флаги — не превращай код в свалку
- Храни флаги централизованно (DB, API, конфиг)
- Логируй изменения флагов
- Делай флаги для людей, а не только для кода — бизнес тоже должен ими управлять
- Используй флаги как часть тестовой стратегии, а не костыль
Популярные инструменты
- Unleash — open source, крутая интеграция
- LaunchDarkly — SaaS-решение, гибкая сегментация
- Flagsmith — open source + hosted
- GitLab Feature Flags — нативная поддержка в GitLab
Вывод
Feature Flags — это инструмент для безопасных выкатываний, A/B тестов и гибкого контроля релизов. Они позволяют бизнесу включать и выключать фичи без участия разработчиков, а тебе — не нервничать на проде
