Флаги функций и постепенные развёртывания
Отделите развёртывание от выпуска с помощью флагов функций, затем постепенно открывайте новую функциональность и мгновенно отключайте её при сбое
«Флаги функций и постепенные развёртывания» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Развёртывание и выпуск
Важная идея продвинутой поставки: развёртывание кода и выпуск функции — не одно и то же.
Флаги функций позволяют доставить код в рабочую среду, но оставить функцию выключенной, пока Вы не решите включить её для части или всех пользователей.
Что такое флаг функции
Флаг функции (или переключатель) — это условие в Вашем коде, которое проверяет значение конфигурации и решает, должен ли выполняться определённый путь кода.
if (flags.isEnabled('new-checkout')) {
renderNewCheckout();
} else {
renderOldCheckout();
}Почему флаги лучше ветвления
Долгоживущие ветки функций приводят к болезненным слияниям. Флаги позволяют непрерывно сливать небольшие изменения в main, пока функция остаётся скрытой.
- Меньше и безопаснее запросы на слияние
- Разработка на основе основной ветки
- Мгновенное включение и выключение без повторного развёртывания
Типы флагов
Флаги служат разным целям:
- Флаги выпуска — скрывают незавершённую работу
- Операционные флаги — аварийные выключатели для рискованных систем
- Флаги экспериментов — A/B-тестирование
- Флаги разрешений — предоставляют доступ премиум-пользователям
Знание типа помогает определить срок его жизни.
Правила выбора аудитории
Платформы флагов позволяют определить, кто увидит функцию: по ID пользователя, группе, региону или проценту пользователей.
Это делает возможным постепенное развёртывание, управляемое конфигурацией, а не развёртыванием новой инфраструктуры.
Процентное развёртывание
Распространённый подход — сначала включить флаг для небольшого процента пользователей, а затем постепенно увеличивать его: 1%, затем 10%, 50% и 100%.
В отличие от канареечного развёртывания, разделяющего трафик на уровне инфраструктуры, это логическое развёртывание, управляемое конфигурацией кода.
// Pseudo targeting config
flag: new-checkout
rollout:
percentage: 10
attribute: userIdАварийные выключатели
Главное операционное преимущество: если функция под флагом работает неправильно, её можно мгновенно выключить без развёртывания отката.
По сравнению с возвратом кода и повторным развёртыванием это значительно сокращает среднее время восстановления.
Флаги в конвейере
Изменения флагов можно интегрировать в CI/CD. Например, шаг рабочего процесса может включить флаг после успешного развёртывания или запланировать постепенное увеличение охвата.
- name: Enable feature
run: |
curl -X PATCH https://flags.example.com/api/flags/new-checkout \
-H "Authorization: Bearer ${{ secrets.FLAG_TOKEN }}" \
-d '{"enabled": true}'Безопасное состояние по умолчанию
Всегда проектируйте флаги так, чтобы они безопасно отказывали: если служба флагов недоступна, код должен использовать известное безопасное значение по умолчанию (обычно «выключено»).
Флаг функции никогда не должен становиться единственной точкой отказа.
const enabled = flags.isEnabled('new-checkout', { default: false });Удаление флагов
Флаги создают ветвящиеся пути выполнения кода. Устаревшие флаги превращаются в технический долг и запутывают читателей.
После полного и стабильного включения флага выпуска удалите его и старый путь кода. Намеренно отслеживайте сроки жизни флагов.
Флаги и шаблоны развёртывания
Флаги функций дополняют развёртывания по схемам blue/green и canary. Инфраструктурные шаблоны изменяют трафик, а флаги изменяют функциональность.
Использование обоих подходов обеспечивает максимально безопасный выпуск: сначала незаметно разверните код, затем постепенно откройте функцию и при необходимости мгновенно отключите её.
Быстрая проверка
Проверьте, насколько хорошо Вы поняли флаги функций.
Повторение
Вы научились отделять развёртывание от выпуска с помощью флагов функций.
- Флаги скрывают код за условием, управляемым конфигурацией
- Выбор аудитории позволяет выполнять постепенное процентное развёртывание
- Аварийные выключатели обеспечивают мгновенное восстановление без повторного развёртывания
- Проектируйте флаги с безопасным отказом и удаляйте их, чтобы не накапливать долг
В сочетании со схемами blue/green и canary флаги дополняют набор инструментов продвинутой поставки.
Часто задаваемые вопросы
Урок «Флаги функций и постепенные развёртывания» бесплатный?
Да — полный текст урока «Флаги функций и постепенные развёртывания» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Чему я научусь в уроке «Флаги функций и постепенные развёртывания»?
Отделите развёртывание от выпуска с помощью флагов функций, затем постепенно открывайте новую функциональность и мгновенно отключайте её при сбое Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?
Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Флаги функций и постепенные развёртывания»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?
Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Сине-зелёные развёртывания
- Канареечные выпуски с Actions
- Откаты и аварийное восстановление
- Флаги функций и постепенные развёртывания