TGViewer
analyst_exe | инженерное мышление в IT analyst_exe | инженерное мышление в IT @analyst_exe · 511 subscribers
Post #511 207
Как управлять фичами на фронтенде: от хардкода до тоглов

Вчера стоял в Дикси около зависшего терминала самообслуживания. Пять минут. Просто стоял и смотрел, как касса перезагружается.
История простая: интернет тормозил, карту лояльности решил добавить по номеру. Касса зависла. Кнопки «Отмена» нет. Кассирша развела руками: «Эту функцию нам запретили использовать, но отключить не можем». Перезагрузка. Честный знак в чеке. Я — с телефоном в руках, фотографирую этот цирк.

И вот пока стоял, думал: а ведь ноги у этой проблемы растут из двух мест — непродуманного UI и отсутствия механизмов частичной раскатки. Сейчас объясню.

Три способа управлять доступностью функций для пользователя

1. Хардкод

Прописать состояние функции is_enabled = true явно в коде.
Самый жёсткий вариант. Функция либо есть в коде, либо её нет. Хотите выключить? Правьте код, деплойте заново. Это как вкрутить лампочку без выключателя — работает, но если что-то пошло не так, придётся лезть в проводку.
Когда годится: совсем базовые вещи, которые точно не будут меняться (например, кнопка «Войти»).

2. Холодные фичетоглы (server-side)

Настройки хранятся на сервере. При загрузке страницы сервер решает: показывать фичу или нет. Изменили настройку — пользователь увидит изменения только после перезагрузки страницы. Или при сборке собирать информацию из .env, та же история, только новая сборка.
Когда годится: для фич, которые не нужно включать/выключать моментально (новый дизайн карточки товара, экспериментальный раздел).

3. Горячие фичетоглы (client-side)

Настройки прилетают с сервера в реальном времени или подтягиваются через API. Можно включить/выключить фичу прямо сейчас — без перезагрузки, без деплоя. Это как пульт от телевизора: нажал — переключил.
Когда годится: для критичных фич, которые нужно быстро откатить при проблемах (оплата, новый алгоритм рекомендаций, A/B-тесты).

Что пошло не так в Дикси?

Проблема #1: UI без права на ошибку
Кнопки отмены нет. Видимо, сценарий «пользователь передумал» просто не предусмотрели. Итог: если что-то пошло не так — только перезагрузка. А это 5 минут простоя кассы, очередь, нервы, кассирша вообще начала причитать, что ее уволят из-за этих терминалов...

Проблема #2: нет механизма частичной раскатки
Функция добавления карты по номеру есть в коде. Но для конкретной точки её «запретили на словах». Система об этом не знает. Нет тогла, чтобы отключить фичу для одного магазина или региона.
Если бы был горячий фичетогл — админ мог бы за 30 секунд выключить проблемную функцию для этого терминала. Без перезагрузки, без апдейта кода, без очередей.

А какие выводы?
Хардкод — для базы. Холодные тоглы — для экспериментов. Горячие тоглы — для всего, что может сломаться или требует гибкости.

И, пожалуйста, добавляйте кнопку «Отмена». Всегда. Иначе будете стоять в очереди, пока касса перезагружается, а кто-то будет фотографировать этот момент для поста в канале.

Дополнительные видео в комментариях)

analyst.exe | чат
  • 🔥 7
  • ❤ 3
  • 👏 2
More from @analyst_exe
  1. Sep 25, 2026В ТЗ написано: «Всё работает как обычно». У нас уже 17 уточняющих вопросов к слову «обычно…
  2. Sep 24, 2026Уволил себя #1. С должности рисовальщика диаграмм) Тут ИИ меня реально заменил. Теперь я ц…
  3. Sep 21, 2026Ну это не дело, сами из резюме вытащить не могут? @analyst_exe
  4. Sep 20, 202614 моделей рисуют BPMN. Кто рабочая лошадь, а кто заставит зайца ждать? Взял историю про П…
  5. Sep 20, 2026Есть идеи, чем я таким сижу занимаюсь? Пишите варианты в комментариях) @analyst_exe
  6. Sep 19, 2026В субботу отдыхаем честно украденным мемом @analyst_exe
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 →