0Pricing
DevOps Bootcamp · Урок

Флаги функций и постепенные развёртывания

Отделите развёртывание от выпуска с помощью флагов функций, затем постепенно открывайте новую функциональность и мгновенно отключайте её при сбое

«Флаги функций и постепенные развёртывания» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 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) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Флаги функций и постепенные развёртывания»?

Отделите развёртывание от выпуска с помощью флагов функций, затем постепенно открывайте новую функциональность и мгновенно отключайте её при сбое Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Флаги функций и постепенные развёртывания»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Сине-зелёные развёртывания
  2. Канареечные выпуски с Actions
  3. Откаты и аварийное восстановление
  4. Флаги функций и постепенные развёртывания
← Назад к DevOps Bootcamp