awesome-everything EN
↑ Обратно к восхождению

Инженерная практика

Feature flags: тест с выбором ответа

Суть Синтез по всему юниту feature flags в формате выбора: разделение deploy и release, четыре типа флагов и их жизненные циклы, sticky-rollout, kill switch и flag debt.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

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

Цель

Убедитесь, что вы связываете воедино разделение deploy и release, четыре типа флагов с противоположными жизненными циклами, sticky percentage rollout, kill switch и flag debt — синтез, к которому вёл урок.

Викторина

Команда вливает недоделанную фичу в main за выключенным по умолчанию release-флагом и деплоит её. Коллега возражает, что катить недописанный код в прод безответственно. Какова senior-трактовка?

Викторина

В спринт по чистке инженер находит булев флаг, который месяцами отдаёт всем одно и то же значение, и предлагает удалить его вместе с мёртвой веткой. Что обязательно проверить до мёрджа этого PR?

Викторина

Раскатка на 25% показывает чистые error rate и latency, но поддержка сообщает, что у пользователей новый UI мигает обратно на старый между загрузками страниц. В чём дефект?

Викторина

Почему SDK вычисляют флаг как локальный in-memory хеш-lookup с фоновой синхронизацией, а не спрашивают сервис флагов на каждую проверку?

Викторина

В сервисе живут десять независимых булевых флагов. В проде всплывает баг, который QA ни разу не воспроизвёл в staging. Как число флагов связано с этим?

Викторина

Инцидент Knight Capital в 2012 году стоил ~$440M за 45 минут. Если свести его к уроку о жизненном цикле флага, что на самом деле пошло не так?

Итог

Сквозная линия: deploy и release — разные события, а флаг — переключатель между ними: катим тёмным, выпускаем тумблером. Четыре типа (release, ops/kill switch, experiment, permission) имеют противоположные правильные сроки жизни, поэтому тип записывают, а не угадывают. Rollout обязан быть sticky (хешируем стабильный ключ в фиксированную корзину 0–99), иначе варианты мигают и данные эксперимента портятся; вычисление — локальный хеш-lookup, так что сбой сервиса флагов деградирует плавно. И каждый живой флаг — это ветка в проде: N флагов означают 2^N конфигураций, поэтому дисциплина — это жизненный цикл: давайте release-флагам срок, помечайте kill switch как постоянные и удаляйте застойные флаги, пока один не стал следующим Knight Capital.

Продолжить восхождение ↑Feature flags: тест на воспроизведение
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.