Вопрос проверяет понимание механизма feature flags и их роли в управлении релизами и экспериментами без повторного деплоя.
Feature flags (фича-флаги) — это подход, при котором поведение приложения управляется внешней конфигурацией, а не только кодом. Вместо того чтобы удалять или добавлять код при каждом релизе, вы оставляете функциональность в кодовой базе, но включаете её только для нужной аудитории. Это снижает риск и ускоряет доставку изменений.
Простейший вариант — чтение флага из конфигурации или внешнего сервиса. Ниже пример на JavaScript с проверкой флага и процента раскатки.
const flags = { newCheckout: { enabled: true, rollout: 20 } };
function isFeatureEnabled(userId) {
const flag = flags.newCheckout;
if (!flag.enabled) return false;
// Детерминированный хеш, чтобы один пользователь всегда попадал в одну группу
const bucket = hash(userId) % 100;
return bucket < flag.rollout;
}
if (isFeatureEnabled(currentUser.id)) {
renderNewCheckout();
} else {
renderOldCheckout();
}Важно не превращать флаги в постоянный механизм конфигурации: их нужно удалять после полного выката, иначе кодовая база обрастает условными ветками.
Итог: feature flags полезны, когда нужно выпускать изменения быстро и безопасно, тестировать гипотезы на реальных пользователях и иметь мгновенный откат без деплоя.