TGViewer
Человек и машина Человек и машина @manandthemachine · 1.69K subscribers
Post #846 1.3K
Человек и машина В следующем посте постараюсь собрать для вас подходящие инструменты, с которыми вы можете использовать feature flag’и с минимальным ущербом для здоровья.
#машины_разное

Итак, я хочу управление конфигурацией отдельно от кода, желательно с поддержкой код ревью, работающее на любой платформе. Я сразу отбрасываю GO Feature Flag (хотя задумка прикольная), и останавливаю свое внимание на Unleash, Flagsmith, Flagr и Flipt. И тут начинаются дурацкие компромисы.

Код ревью есть только у Flipt. При этом все они предлагают инкрементальную выкатку с ограничениями (“Включи эту фичу для владельцев айфонов с новым прикольным стекляным иосом.”), но Unleash предлагает еще и концепцию strategy. Глядя в доку, это все еще выглядит как набор ограничений, где мы передаем параметры навроде клиента, пользовательского идентификатора и так далее. Зачем тут было выпендриваться - непонятно.

Все варианты интегрируются с мониторингом по-своему, а точнее никак. Например прикрутить график из Графаны к интерфейсу feature-flag’а чтобы наблюдать за метриками во время релиза нельзя. Но зачем-то можно экспортировать метрики самих управлялок, например активацию/деактивацию флагов - но я бы это делал через само приложение.

Отдельно стоял вопрос доставки конфигурацией на клиент, это важный аспект с точки зрения производительности. Следите за руками:
1. Нам прилетает запрос, приложение должно решить, включать флаг или нет.
2. Если для этого нам нужно обратиться к серверу - прибавляем еще один запрос на сервер.
3. Пусть каждый запрос на сервер стоит 10 мс - потому что сетевые запросы не бесплатные
4. Если на пути нашего запроса в бизнес логике есть 5 проверок флагов, то мы просто так накидывем себе 5 * 10 мс задержки.
И это не говоря о надежности, потому что SLO нашего эндпоинта будет зависеть от SLO API feature flag’а.

Очевидным решением является кеширование флага на клиенте с проактивным eviction policy - то есть клиент раз в минуту, например, опрашивает сервер и смотрит не обновились ли значения или условия флага, а при выкатке клиент получает нотификацию и обновляет все флаги. Вот тут уже… прям плохо. Все поддерживают polling, Unleash из коробки поддерживает нотификации, которые обновят значение флагов; Flagsmith это делает через webhook’и, но не во всех клиентах это поддерживается; Flagr и Flipt это не умеют вовсе.

А что по платным облачным решениям? Ну тут не то, чтобы прям лучше. Каноничный откат есть только у Kameleoon, он выключает фичу если какие-то метрики выходят за допустимые рамки. LaunchDarkly за каким-то хреном сделали kill switch, который требует ручной активации от оператора. Чем это лучше отката фичи на 0% - непонятно - но разработчики божатся, что это быстрее. Охотно верю.

У публичных клавдиев все еще хуже. Более-менее рабочее решение дает AWS AppConfig - тут тебе и кеширование, и поддержка автоматических роллбеков на базе алертов из CloudWatch. У GCP нет такого сервиса вообще, Azure App Configuration не умеет откатывать флаги.

С локальным кешированием у большой тройки двойки все еще тупее. AWS AppConfig предлагает ставить агента, который будет кешировать флаги, при этом этот клиент может ставиться в качестве sidecar’а для контейнеров и даже Lambda функций. Учитывая, что Lambda должна быстро отработать и умереть, польза от этого sidecar’а только в том, чтобы переиспользовать теплый контейнер с закешированной конфигурацией флагов. Стоит ли в свежем контейнере функции оставлять возможно протухший набор флагов вопрос дискуссионный.

А вот cache eviction на базе обновлений не поддерживает никто, извольте подождать пока таймер истечет. То есть AWS смог в автоматический роллбек, но в server-side events не смог даже при условии, что у них для флагов аж целый агент есть. Пиздец.

Что по итогам?

Если вы только открываете для себя увлекательный мир разработки через конфигурации, используйте Unleash или Flipt, если у вас сильно развита культура код ревью.
  • 👍 11
  • 🔥 4
  • 🤔 1
More from @manandthemachine
  1. Jan 17, 2026#прощальное Вы могли заметить, что из канала исчезли комменты, а чат был удален. Подробнее…
  2. Dec 31, 2025#новогоднее Если бы мне пришлось охарактеризовать 2025-ый год одним единственным словом, я…
  3. Oct 24, 2025#машины_aws Пожалуй, лучший инцидент, что я когда либо видел. Если вкратце: 1. Управление…
  4. Sep 30, 2025#машины_разное Моя любимая рубрика «Разработчики СУБД знают лучше». Вы наверняка помните,…
  5. Sep 26, 2025#пятничное Инженер-программист Шивам Баларани рассеянно смотрел в монитор. Через блеклый и…
  6. Sep 24, 2025Вот это я конечно не попал в лимиты телеграма. 🤦‍♂️
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 →