Получить доступ

Что верно про feature flags?

MiddleВыкатка и миграции
Ещё спрашивают так:
  • Зачем нужны фичефлаги?
  • Чем опасны фичефлаги?
Коротко

Флаги отделяют выкатку кода от включения функции: код едет в прод выключенным, включение и откат — за секунды, без деплоя.

  • Позволяют короткие ветки (trunk-based), постепенное включение по процентам и сегментам, A/B-тесты
  • Цена: комбинации флагов, которые никто не тестировал, и мёртвый код забытых флагов
  • Релизные флаги временные — удаление после раската входит в задачу; операционные рубильники живут осознанно

А ещё Canary и флаги дополняют друг друга: canary — по экземплярам, флаг — по пользователям

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Что дают:

  • деплой ≠ релиз — незаконченная функция в основной ветке, но выключена; не нужны долгоживущие ветки и болезненные слияния;
  • мгновенный откат поведения без отката деплоя;
  • постепенное включение — сотрудникам, 1% пользователей, одному региону;
  • эксперименты — A/B-тесты по флагу;
  • рубильники (kill switch) — аварийно отключить тяжёлую функцию под нагрузкой.

Цена:

  • комбинаторика — 10 флагов дают 1024 сочетания; тестируются единицы. Флаги не должны зависеть друг от друга;
  • долг — забытые флаги с мёртвыми ветками кода; нужны владелец, срок жизни и задача на удаление;
  • сложность кода — ветвления по всему коду; лучше проверять флаг в одном месте на границе;
  • зависимость от сервиса флагов — должен быть локальный кэш и разумные значения по умолчанию при его недоступности.

Типы: релизные (дни–недели, удаляются), экспериментальные (на время теста), операционные (постоянные рубильники), разрешения (доступ по тарифу).

Что хотят услышать

  • Отделение деплоя от релиза, быстрый откат, постепенное включение.
  • Цена: комбинации и долг.
  • Разные типы флагов и дисциплина удаления.
  • Связь с canary.

Частые ошибки

  • Не удалять релизные флаги после раската.
  • Строить флаги, зависящие друг от друга.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Они отделяют деплой кода от релиза функциональности
  • ✓Включение и выключение — самый быстрый механизм отката, он не требует выкатки
  • ✓Каждый флаг удваивает число путей исполнения, поэтому у флага должен быть владелец и срок жизни
  • ✗Флаги полностью заменяют стратегии выкатки вроде canary

Что спросят дальше

  • Чем релизный флаг отличается от операционного рубильника?
  • Как флаги сочетаются с trunk-based разработкой?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем