[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-arkhitektura-prilozheniy-chto-takoe-feature-flags-flagi-funktsionalnosti":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},139,"chto-takoe-feature-flags-flagi-funktsionalnosti",3,"arkhitektura-prilozheniy","Архитектура приложений","🏗️","Что такое Feature Flags (флаги функциональности)?","Feature Flags (Feature Toggles) -- техника, позволяющая включать и выключать функциональность без повторного развёртывания приложения. Код новой функции присутствует в production, но активируется по условию. Это как выключатель света в комнате -- провода проложены, лампа на месте, но свет горит только когда щёлкнешь переключатель.\n\n```java\n@Service\npublic class PaymentService {\n\n    private final FeatureFlagService featureFlags;\n\n    public PaymentResult processPayment(PaymentRequest request) {\n        if (featureFlags.isEnabled(\"new-fraud-check\")) {\n            \u002F\u002F Новая логика проверки на мошенничество\n            fraudCheckV2.check(request);\n        } else {\n            \u002F\u002F Старая логика\n            fraudCheckV1.check(request);\n        }\n        return executePayment(request);\n    }\n}\n```\n\n### Типы Feature Flags\n\n| Тип | Цель | Время жизни | Пример |\n|-----|------|-------------|--------|\n| Release Toggle | Скрытие незавершённой функциональности | Короткое (до релиза) | Trunk-based development: код в main, но фича выключена |\n| Experiment Toggle | A\u002FB-тестирование | Среднее | Часть пользователей видит вариант A, часть -- вариант B |\n| Ops Toggle | Оперативное управление | Длительное | Отключение тяжёлой функции при деградации производительности |\n| Permission Toggle | Доступ по группам | Длительное | Функциональность только для beta-тестеров или VIP-клиентов |\n\n### Инструменты\n\n- **Togglz** -- Java-библиотека для Feature Flags.\n- **Unleash** -- open-source сервер Feature Flags с SDKами для разных языков.\n- **LaunchDarkly** -- облачный SaaS с расширенной аналитикой.\n- Самописное решение на Spring + БД\u002FRedis.\n\n### Лучшие практики\n\n- Удалять флаги после полного включения функции. Иначе код засоряется ветвлениями, и через полгода никто не знает, какие флаги ещё актуальны.\n- Логировать состояние флагов для отладки -- при расследовании инцидента важно знать, какой путь выполнялся.\n- Тестировать обе ветки (включено и выключено) в автоматических тестах.\n- Вести реестр активных флагов с указанием владельца и плановой даты удаления.\n\n### Итог\n\nFeature Flags критичны при постепенном раскатывании новой функциональности: можно включить фичу для 1% пользователей, убедиться в стабильности, и постепенно увеличить до 100%. Если что-то пошло не так -- мгновенный откат через выключение флага, без необходимости деплоя.\n\n> **На собеседовании:** Интервьюер хочет услышать типы флагов и понимание их жизненного цикла. Частая ошибка -- не упоминать необходимость удаления флагов после полного включения, что приводит к техническому долгу.","","middle",[15,16,17,18],"feature-flags","devops","architecture","deployment",[],null,{"title":22,"description":23,"ogTitle":22,"ogDescription":24,"keywords":25,"schemaAnswer":33,"featuredSnippetReady":34},"Feature Flags (флаги функциональности): типы и инструменты — Gymterview","Что такое Feature Flags? Типы флагов: Release, Experiment, Ops, Permission Toggle. Инструменты Togglz, Unleash, LaunchDarkly. Лучшие практики для Java.","Разбор Feature Flags: типы флагов, инструменты Togglz и Unleash, лучшие практики применения в Java-проектах.",[26,27,28,29,30,31,32],"feature flags","feature toggles","флаги функциональности","Togglz","Unleash","LaunchDarkly","A\u002FB тестирование","Feature Flags (Feature Toggles) — техника, позволяющая включать и выключать функциональность без повторного развёртывания приложения. Существуют четыре типа: Release Toggle (скрытие незавершённой фичи), Experiment Toggle (A\u002FB-тестирование), Ops Toggle (оперативное отключение при деградации) и Permission Toggle (доступ для определённых пользователей). Инструменты: Togglz, Unleash, LaunchDarkly. Важно удалять флаги после полного включения функции, чтобы не засорять код.",true]