TGViewer
10 минут до кода 10 минут до кода @ten_minutes_to_code · 228 subscribers
Post #76 59
Feature Flags: Консистентный раскат без боли и деплоев

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

Для этого придумали Feature Flag. Это не просто логический переключатель в коде, это в первую очередь аварийная кнопка. Если после релиза мониторинг в Sentry или Grafana заливается красным, инженер не бежит запускать новый пайплай деплоя на 15 минут. Он просто щелкает флаг в конфиге. Скорость реакции: одна секунда против полноценного цикла доставки кода.

От выключателя к диммеру

Feature Flag превращает бинарную логику «есть фича / нет фичи» в гибкий диммер. Мы заливаем готовый код на продакшн, но держим его в спящем режиме. Это позволяет управлять «яркостью» присутствия функционала в системе:

1. Канареечный релиз: Включаем новую страницу избранного только для 1% пользователей.
2. Проверка гипотез: Смотрим, как инфраструктура держит нагрузку. Если система начинает «прилегать», мы откатываем флаг для этого процента и идем дочинивать, не затрагивая остальных 99% юзеров.
3. Делегирование бизнесу: Разработка доставила фичу, а когда её активировать — решает менеджмент или маркетинг. Они просто нажимают галку в админке, не отвлекая инженеров от текущего спринта.

Математика выборки

Когда встает задача выделить 5% пользователей для теста, новички часто используют обычный рандом. Это путь к мусорному UX: пользователь зашел на сайт — фича есть, обновил страницу — рандом выпал иначе, фича пропала.

Инженерный подход требует детерминированности. Чтобы пользователь всегда попадал в одну и ту же группу, используется хеширование:

- Алгоритм: Берем user_id, добавляем к нему salt (строковый идентификатор конкретной фичи), захешируем эту строку и переводим в число.
- Механика: Берем остаток от деления этого числа на 100.
- Результат: Мы получаем стабильное число от 0 до 99 для каждого юзера. Если нам нужно раскатать фичу на 5%, мы просто открываем доступ всем, у кого остаток меньше 5.

Это гарантирует, что выборка будет консистентной, а нагрузка — распределенной. Вы в любой момент можете расширить группу до 10%, 20% или 100%, просто меняя пороговое значение в настройках, при этом те, кто уже видел фичу, ее не потеряют.

Проектируйте системы так, чтобы доставка кода и активация фичи были разнесены во времени. Это единственный способ сохранить нервы и стабильность продакшена.

Ставь 🔥, если всё разложилось по полочкам. А если остались вопросы по реализации или что-то звучит слишком абстрактно — пиши в комменты, обязательно разберем!

10МДК | ВЕБМастер
  • 🔥 10
More from @ten_minutes_to_code
  1. May 28, 2026Первый сезон получился про путь “от пользователя к инженеру”. Именно эту картину мы весь с…
  2. May 28, 2026Когда я запускал этот канал, у меня была довольно простая идея: писать каждый день коротки…
  3. May 7, 2026Почему нормализация БД — это чистая логика, а не бюрократия На любом ongoing-проекте требо…
  4. May 3, 2026🤔 А где новые посты? Сори что вот так пропал без предупреждения, но я думал что справлюсь…
  5. Apr 29, 2026Почему HTTPS не спасет ваши секреты Замочек в адресной строке браузера — это мощное успоко…
  6. Apr 28, 2026Целостность данных против иллюзии атомарности Начинающий разработчик видит базу данных как…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →