← к ленте

Feature flags: управление функциями без повторного деплоя

М@ITcanflyавтор про «it»
1 нед

Как feature flags помогают включать функции без деплоя, проводить канареечные релизы и A/B-тесты — и почему флаги важно удалять.

В процессе работы над PersMarket регулярно появляются новые возможности, которые должны быть видны не сразу или не всем. Для таких целей придумали специальный подход - Feature flags (или feature toggles). Я уже упоминал его ранее, когда писал про минимизацию рисков и даунтайма при деплое. Заключается подход в том, чтобы была возможность включать, выключать или менять поведение отдельных функций приложения в реальном времени без повторного деплоя. То есть код и настройки фичи выкатываются очередным релизом, но где-то в базе/конфигах есть переключатель/флаг, по умолчанию выключенный, от состояния которого зависит, работает ли эта функция. И когда приходит момент, флаг просто включают, и пользователи сразу видят новые ништяки. Например, функция оплаты актуальна только после всех согласований с платежным провайдером и обновления юридических документов, хотя код уже должен существовать, чтобы протестировать процессы.
Кстати, имея опыт работы со Stripe, подключал Робокассу. После современных API-управляемых возможностей Stripe Робокасса выглядит, как что-то из нулевых. В Stripe можно построить полноценный тестовый контур, с автотестами, с подписками, платежами, рефандами и т.д. В Робокассе можно сделать только тестовый разовый платеж без истории. То есть узнать его статус позже нельзя, он не хранится. А возвраты и рекуррентные платежи вообще не поддерживают тестирование. Надо будет попробовать других провайдеров еще для сравнения.
Еще сценарии: ▪️Если в функции есть критичный баг, ее можно отключить мгновенно без передеплоя ▪️Можно сделать канареечный релиз - включать функцию сначала малой аудитории, потом больше и больше ▪️Можно проводить A/B-тестирование ▪️Можно тестировать функцию прямо из мастер-ветки (особенно в trunk-based разработке), не включая ее на проде Вот и я себе сделал в админке сервиса такой пункт управления, чтобы включать фичи по мере готовности к ним платформы. А оказывается, есть и готовые решения: Split, Flagsmith, LaunchDarkly, GrowthBook, Unleash. А для PHP - Flagception. Конечно, не всё коту масленица, есть и минусы. Во-первых, появляются условия - сценарии для включенной функции и для выключенной, это усложнение. Во-вторых, если необходимость управления фичей отпадает, появляется технический долг - условия и feature flags надо удалять, а до этого обычно руки не доходят. Короче, знайте меру. #process
Feature flags: управление функциями без повторного деплоя

Кратко (AI)

Автор объясняет, как feature flags позволяют менять доступность функций без повторного деплоя: например, постепенно открывать их аудитории, проводить A/B-тесты или отключать при критичном баге. Он также сравнивает тестовые возможности Stripe и Робокассы и предупреждает, что неиспользуемые флаги создают технический долг.

Обсуждение

0
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖