слов.арь · bisovka

объясни feature-flag --простыми-словами

Иллюстрация к термину «Фича-флаг»

Фича-флаг

КороткоСамый безопасный способ выкатить рискованную фичу — выкатить ее выключенной, потом включить для десяти человек и посмотреть.

Самый безопасный способ выкатить рискованную фичу — выкатить ее выключенной, потом включить для десяти человек и посмотреть.

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

Диммер. Обычный выключатель либо включен, либо выключен, а чтобы поменять проводку, надо отключить электричество и вызвать электрика (это редеплой). Фича-флаг — это диммер, который ты встроил до запуска. Теперь можно поднять новую фичу на 10% комнаты, посмотреть, не искрит ли, плавно довести до 50%, а если запахло гарью — мгновенно опустить до нуля. Без электрика, без отключения света, без редеплоя. Проводка уже в стене. Ты просто крутишь ручку.

Что эта ручка открывает и почему настоящие команды на этом живут:

  1. Постепенный rollout. Включи фичу для 1% пользователей, потом для 10%, потом для всех, наблюдая на каждом шаге. Если она ломается, ее увидел только крошечный кусок аудитории.
  2. Мгновенный выключатель. Что-то пошло не так — ты щелкаешь флагом, и фича исчезает, даже быстрее, чем rollback, потому что ты ничего не редеплоишь, только переключаешь. Rollback возвращает все приложение на прошлую версию. Флаг убивает одну фичу и не трогает все остальное.
  3. Безопасный выкат незавершенной работы. Команда может вливать наполовину готовые фичи в настоящее приложение за выключенным флагом, вместо того чтобы месяцами держать их на ветке. Она уже там. Просто в темноте, пока не готова.
  4. Разным людям — разные вещи. Флаг может быть включен для твоей команды и выключен для клиентов, или включен только для бета-пользователей. То же приложение, но разные двери открыты для разных людей.

Смотри, как это стоит рядом с двумя прошлыми идеями. Staging репетирует до того, как публика вообще пришла. Rollback быстро откатывает весь спектакль, когда публика уже в зале. Фича-флаг тоньше обоих. Он позволяет выкатывать на живую аудиторию, но точно контролировать, кто видит новый номер, и убрать его, не закрывая театр.

Так что "положить это за флаг" в переводе значит: выкати, но встрои выключатель, чтобы мы контролировали, кто это увидит, и могли убить фичу в ту секунду, когда с ней беда. Так команды выпускают страшные вещи, не задерживая дыхание.

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

Фича-флаг — диммер, который встраивают до запуска. Выкати в темноте, подними для десяти человек и убей ручкой. Электрик не нужен.

← все термины