Единицы
1. Введение в DevOps и облачный ИИ: роли, границы, аутентификация, безопасность и секреты 2. Проектирование конвейеров CI/CD с использованием искусственного интеллекта: GitHub Actions и GitLab CI 3. Управление инфраструктурой как кодом: искусственный интеллект с Terraform и IaC 4. Контейнеризация: Dockerfile и оптимизация изображений с помощью искусственного интеллекта 5. Kubernetes: Manifest, Helm и оркестровка на базе искусственного интеллекта 6. Мониторинг и наблюдаемость: правила показателей, журналов, трассировки и сигналов тревоги 7. Управление инцидентами и вскрытие: анализ первопричин с помощью искусственного интеллекта 8. Оптимизация затрат в облаке (FinOps): охота за отходами с помощью искусственного интеллекта 9. Генерация сценариев и автоматизации: Bash, Python и PowerShell 10. Безопасность и управление секретами: DevSecOps и искусственный интеллект 11. Проверка продукта, стратегии выпуска и сквозной рабочий процесс искусственного интеллекта
Единица 11 / 11

Проверка продукта, стратегии выпуска и сквозной рабочий процесс искусственного интеллекта

Прибыль:

  • Понимание стратегий выпуска, снижающих риск (сине-зеленый, канареечный, флаг функции) и дисциплины проверки продукта (проверка работоспособности, дымовое тестирование, мониторинг золотого сигнала)
  • Возможность внедрить привычку готовить четкий план отката перед развертыванием и проверять критические бизнес-пути после развертывания.
  • Способность объединить все части, изученные в ходе модуля, в сквозной рабочий процесс, поддерживаемый ИИ, и применять принцип «ИИ производит, люди проверяют и ручаются» на каждом этапе.

Весь этот модуль сводился к одной цели: безопасной доставке кода и инфраструктуры в производство (живая среда, используемая реальными клиентами). Сейчас мы находимся на самом важном и напряженном звене в цепочке: внедрение изменения и проверка того, что оно действительно работает. Ошибка здесь не абстрактна — она напрямую бьет по клиенту, выручке и репутации. Вот почему зрелые команды приступают к производству не «надеясь», а используя стратегии контролируемого выпуска и систематическую проверку.

В этом последнем разделе мы объединяем две вещи: (1) методы выпуска, снижающие риск (канареечный, сине-зеленый, флаг функции) и дисциплину проверки продукта; (2) как каждая часть, которую мы изучили на протяжении всего модуля — CI/CD, IaC, контейнер, мониторинг, инцидент, стоимость, сценарий, безопасность — объединяется в единый сквозной рабочий процесс на базе искусственного интеллекта. Давайте повторим исходную цитату в последний раз: ИИ генерирует и ускоряет черновики на каждом этапе; Но именно вы нажимаете кнопку «Я снимаю это в прямом эфире» и ручаетесь за результат.

Стратегии выпуска, которые снижают риск

Одновременная передача изменений всем пользователям — самый рискованный способ. Зрелые методы:

  • Сине-зеленое развертывание: поддерживаются две идентичные среды — «синяя» (действующая) и «зеленая» (новая версия). Новая версия готовится и тестируется зеленым цветом, затем трафик внезапно переключается на зеленый. В случае возникновения проблемы трафик немедленно снова станет синим. Быстрый откат — его самое большое преимущество.
  • Canary Deployment: новая версия сначала предоставляется небольшому проценту пользователей (например, 5%); Если показатели хорошие, постепенно увеличивайте до 100%. Проблема затрагивает небольшую часть пользователя, а не всего пользователя.
  • Флаг функции: новая функция вводится в код, но блокируется флагом; Он открывается определенным пользователям по запросу. Существует различие между развертыванием и «выпуском»; При возникновении проблемы флаг отключается без отката кода.
Совет: Самый быстрый способ подстраховаться — подготовить откат перед каждым развертыванием. «Если что-то пойдет не так, как мне вернуться к старой версии за 60 секунд?» Если на вопрос нет четкого ответа, вы не готовы к такому развертыванию.

Проверка продукта: работа не заканчивается после завершения развертывания

Тот факт, что развертывание выглядит «зеленым», не означает, что оно работает. Систематическая проверка:

  1. Проверки работоспособности: работает ли служба, отвечает ли /healthz?
  2. Дымовые тесты: действительно ли работают несколько наиболее важных пользовательских путей (вход в систему, оплата, поиск)? Автоматический и быстрый.
  3. Следите за важными сигналами: частота ошибок после развертывания, задержка, нормальный ли трафик? (Четыре сигнала на блоке 6.)
  4. Расширяйте постепенно. Просматривайте показатели на каждом этапе по мере увеличения процента Canary.
  5. Окно наблюдения: внимательно наблюдайте в течение определенного периода времени (например, 30 минут) после развертывания; Коварные проблемы видны не сразу.
Внимание: ИИ может составить список дымовых тестов или проверок, но ваша задача — определить, какие пути пользователей являются «критическими». ИИ дает общий список; Только вы знаете, что ваш поток платежей, ваш самый прибыльный путь, должен быть проверен.

Сравнение стратегий выпуска

Стратегия

Основное преимущество

Стоимость/сложность

наиболее подходящий

Сине-зеленый

Мгновенный откат

Две среды = 2x ресурсов

Если быстрый поиск имеет решающее значение

канарейка

Ограничивает воздействие небольшим срезом

Требуется управление трафиком

Огромная база пользователей

ФункцияФлаг

Отделяет развертывание от выпуска

Пометить долг по управлению

Постепенное/целевое открытие

Постоянное обновление

Простой, ресурсоемкий

медленный откат

Простые услуги

Комплексный рабочий процесс на базе искусственного интеллекта

Теперь объединим весь модуль в один поток. Допустим, вы публикуете новый микросервис. ИИ создает черновики на каждом этапе; вы проверяете на каждом этапе:

  1. Код и контейнер (блок 4): ИИ создает оптимизированный и безопасный файл Dockerfile; Вы проверяете несекретность и размер.
  2. CI/CD (Unit 2): записывает конвейер тестирования-сборки-развертывания AI; Вы сужаете разрешения и проверяете секретные ссылки.
  3. Инфраструктура (блок 3): определяет необходимые ресурсы с помощью AI Terraform; Вы читаете выходные данные плана и не ищете неожиданных удалений.
  4. Оркестровка (блок 5): ИИ создает манифесты Kubernetes; вы проверяете лимит ресурсов, зонд и RBAC.
  5. Безопасность (блок 10): определяет приоритет результатов сканирования ИИ; Сначала вы захватываете те, которые можно использовать.
  6. Мониторинг (Блок 6): ИИ генерирует правила сигнализации и информационную панель; Вы проверяете пороговые значения на своих прошлых данных.
  7. Выпуск и проверка (этот модуль): описывает дымовой тест ИИ и план отката; запускаешь canary, смотришь метрику, нажимаешь кнопку.
  8. Если инцидент произошел (Блок 7): ИИ генерирует гипотезу и посмертный эскиз; Вы проверяете и извлекаете уроки.
  9. Стоимость (блок 8): ИИ контролирует трату новых ресурсов; Вы принимаете правильные решения.

На каждом этапе остается неизменным общее правило: ИИ производит и ускоряет, человек проверяет и ручается. В этом суть модуля.

три мини-кейса

Случай 1 — Канарейка ограничила катастрофу 5%. Команда предоставила новую версию 5% пользователей Canary. Панель мониторинга, созданная ИИ, сразу показала, что уровень ошибок в этом срезе подскочил до 8%. Команда забрала его обратно, не увеличивая до 100%; Проблема затронула только 5% пользователей, и то на несколько минут. Если бы произошло масштабное развертывание, это затронуло бы всех клиентов.

Случай 2 — дымовой тест обнаружил недостающий путь. ИИ предложил набор для дымового тестирования, но у него не было потока «платежей». Инженер добавил это, зная, что наиболее важным источником дохода являются платежи. Тест после развертывания прервался прямо на этапе оформления заказа — срок действия стороннего ключа истек. Проверка обнаружила молчаливую потерю дохода в течение нескольких минут.

Случай 3 — готовый откат сохраняется за 90 секунд. Команда, установившая сине-зеленый цвет, перевела новую версию на зеленый; Через 2 минуты задержка увеличилась вдвое. Они превратили трафик в синий за 90 секунд с заранее подготовленным откатом. Нашли первопричину (медленный запрос в новой версии) не под давлением, потом спокойно. Готовый путь отката сделал прерывание практически незаметным.

Четыре копируемых шаблона

1) Выбор стратегии выпуска:

Я создам следующую услугу: [СЕРВИС/КОНТЕКСТ: количество пользователей, устойчивость к сбоям, инфраструктура]. Какой из них вы порекомендуете между сине-зеленым, канареечным и функциональным флагами? Сравните преимущества, затраты и скорость отката каждого из них в этом контексте. Предложите, но заявите, что окончательное решение приму я.

2) Тест на дым/проверочный список:

Создайте черновой список дымового тестирования и проверки для [СЕРВИСА], который я запущу после развертывания: проверка работоспособности, наиболее важные пути пользователей, какие показатели мне следует отслеживать в течение скольких минут? Предположим, что я отмечу наиболее важные направления бизнеса и оставлю это поле пустым.

3) План отката:

Я использую [МЕТОД РАЗВЕРТЫВАНИЯ]. Напишите мне четкий план отката: какой командой/шагом мне откатиться на старую версию, сколько времени это займет, каковы риски самого отката (например, миграцию базы данных нельзя откатить), что нужно проверить перед откатом?

4) Комплексный контрольный список выпуска:

Создайте комплексный контрольный список подготовки к выпуску в новый проект [СЕРВИС]: безопасность кода/образа, конвейер, план инфраструктуры, мониторинг и оповещение, сканирование безопасности, стратегия выпуска, откат и проверка. Проверяйте каждый пункт вопросом «Готов ли я?» Превратите это в вопрос.

Слабая подсказка / Сильная подсказка

Слабое: «Как мне перенести это в продукт?»

Результат: нет контекста; ИИ перечисляет общие этапы развертывания, но не учитывает вашу устойчивость к риску, масштабирование пользователей и необходимость отката.

Гючлю: «Я создам платежный сервис с 10 миллионами пользователей, моя терпимость к простоям очень низкая. Вы рекомендуете Canary или Blue-Green, почему? Какие критические пути мне следует протестировать после развертывания, какие показатели я должен отслеживать в течение скольких минут и каким должен быть 60-секундный план отката? Я приму окончательное решение».

Разница: вторая подсказка дает масштаб, допуск и ожидание отката; Это требует стратегии + проверки + отмены и оставляет решение за человеком.

Распространенные ошибки

  • Развертывание без плана отката. Если пути назад нет, каждое развертывание — это авантюра.
  • Развертывание «большого взрыва». Предоставление его всему пользователю одновременно максимизирует риск.
  • Предполагая, что «зеленый = работает». Служба, прошедшая проверку работоспособности, может быть повреждена на критическом пути.
  • Думая, что вы оставляете важные пути бизнеса в пользу ИИ. Вы должны отметить такие способы, как оплата.
  • Отсутствие мониторинга после развертывания. Коварные проблемы проявляются не в первую минуту; необходимо смотровое окно.
  • Думая, что миграция базы данных обратима. Некоторые изменения не откатываются; планируются отдельно.

В итоге

Переход к выпуску продукта является наиболее важным звеном в цепочке и осуществляется не «надеясь», а с помощью контролируемых стратегий: сине-зеленый обеспечивает немедленный откат, ограничивая канареечный эффект небольшим фрагментом, отделяя развертывание флага функции от выпуска. Работа не заканчивается после завершения развертывания; Систематическая проверка посредством проверок состояния здоровья, дымовых тестов и мониторинга «золотого сигнала» имеет важное значение. ИИ создает и ускоряет черновики на каждом этапе всего модуля — от файла Dockerfile до конвейера, от Terraform до правила сигнализации, от вскрытия до анализа затрат. Но остается компетентный человек, который проверяет каждый шаг, нажимает кнопку запуска и ручается за результат. Это золотое правило комплексного DevOps на базе искусственного интеллекта.

Задача приложения

Выберите сервис (реальный или вымышленный) для публикации. (1) Выберите стратегию, которая соответствует вашему контексту, с помощью шаблона «Выбор стратегии выпуска» и напишите, почему. (2) Создайте проверочный список, созданный с помощью шаблона «Дымовой тест / проверочный список», и самостоятельно добавьте наиболее важные направления бизнеса. (3) Подготовьте 60-секундный план отката с помощью шаблона «План отката» и проверьте, есть ли в нем необратимые шаги.

контрольный список

  • [ ] Я выбрал стратегию выпуска (канареечная/сине-зеленая/флаг), которая соответствует моему контексту.
  • [ ] Перед развертыванием у меня есть четкий и быстрый план отката.
  • [ ] Я сам добавил наиболее важные бизнес-направления (например, оплату) в свои Smoke-тесты.
  • [ ] После развертывания я наблюдаю за золотыми сигналами через окно наблюдения.
  • [ ] Я также запланировал необратимые шаги (миграцию базы данных и т. д.).
  • [ ] Я проверял план ИИ на каждом этапе; Я принял решение выйти в эфир.

Модульный экзамен

1. Что из перечисленного является лучшим позиционированием DevOps и искусственного интеллекта в облаке?

  • А) Искусственный интеллект – помощник и инструмент поддержки принятия решений; Люди несут ответственность за важные решения, влияющие на продукт ✔
  • Б) Искусственный интеллект может завершить развертывание и секретную ротацию продукции без одобрения человека.
  • В) Искусственный интеллект полезен только для написания документации, к инфраструктуре он не имеет никакого отношения.
  • Г) Аудит не нужен, поскольку искусственный интеллект всегда выдает более надежные команды, чем инженер.

Описание: Это помощник и инструмент поддержки принятия решений, который ускоряет выполнение объемных текстовых задач, таких как конвейер искусственного интеллекта, конфигурация, сценарий и журнал. Ответственность за решения, влияющие на время простоя, деньги и безопасность, такие как выпуск продукции, управление секретами и окончательное применение, остается за компетентным инженером.

2. Какое выражение является наиболее точным для дисциплины проверки перед внедрением команды DevOps или конфигурации, созданной искусственным интеллектом?

  • А) Если результат выглядит плавно и уверенно, его можно запустить непосредственно в продукте.
  • Б) Вывод безопасен только при отсутствии синтаксических ошибок, дальнейшие проверки не требуются.
  • C) Подключите выходные данные к источнику, спланируйте/пробуйте и отфильтруйте их с учетом контекста вашей системы; тогда оставь заявку ✔
  • Г) Сделать первую попытку прямо в проде и посмотреть результат - самая быстрая проверка

Объяснение: Необходима трехэтапная проверка: подключение вывода к источнику (действительно ли команда/флаг указана в официальной документации), запуск его всухую (смотря, что происходит с plan/--dry-run) и прохождение через системный фильтр (вписывается ли он в контекст архитектуры и безопасности). Беглость не означает точность.

3. Каков правильный подход при запросе искусственного интеллекта об ошибке или проблеме с развертыванием файла .env, содержащего реальный пароль базы данных?

  • А) Замаскируйте настоящие секреты с помощью <PLACEHOLDER>; делитесь только замаскированной ошибкой и контекстом ✔
  • Б) Вставка всего файла .env в том виде, в котором он есть, решает проблему быстрее.
  • В) Поскольку секреты уже имеют формат base64, можно безопасно вставить обычный код.
  • Г) Вставка пароля безопасна, поскольку искусственный интеллект никогда его не сохраняет.

Описание: Никакие настоящие секреты не вставляются в подсказку ИИ. Такие значения, как пароли и токены, маскируются с помощью <PLACEHOLDER>; передаются только сообщение об ошибке и необходимый контекст. Если секрет уже был раскрыт, его следует немедленно отменить и заменить.

4. Что из перечисленного является правильным управлением секретами (паролем, токеном) в конвейере CI/CD?

  • А) Он хранится в секретном репозитории платформы и вызывается по ссылке (например, ${{ secrets.X }}), а не записывается в виде обычного текста ✔
  • Б) Для удобства записывается в виде открытого текста в конвейер YAML.
  • В) Это проверяется нажатием кнопки echo и log в начале каждого задания.
  • D) Если определено самое широкое разрешение (запись всего), безопасность повышается.

Объяснение: Секреты не записываются в YAML в виде обычного текста; Он хранится в секретном репозитории платформы и вызывается с использованием таких ссылок, как ${{ secrets.X }}. Кроме того, согласно принципу наименьших полномочий права доступа к токенам сужаются, а секретный журнал не записывается.

5. Какой наиболее важный шаг следует предпринять при управлении инфраструктурой с помощью Terraform, прежде чем вносить изменения в жизнь?

  • А) Непосредственный запуск terraform apply; план - пустая трата времени
  • Б) Резервное копирование файла состояния в общедоступный репозиторий.
  • C) Запустите «план терраформирования» и проверьте строки уничтожения/замены в выходных данных, затем примените ✔
  • D) Удалите версию поставщика и убедитесь, что самая новая версия устанавливается автоматически.

Объяснение: «План терраформирования» должен быть запущен до «Применить терраформирование». В плане показано, что добавить, что изменить и особенно, что удалить (уничтожить), ничего не делая. Если видна неожиданная строка уничтожения или замены, применять не следует.

6. Что это означает и что следует делать, если в выходных данных плана Terraform появляется строка «-/+ replace» для производственной базы данных?

  • А) Исходный код будет обновляться на месте, риска нет.
  • Б) Ресурс будет удален и создан заново; Существует риск потери данных, применение следует прекратить, если этого не ожидается ✔
  • В) Добавление нового ресурса не затрагивает существующую базу данных.
  • D) Это всего лишь предупреждение, его можно смело игнорировать.

Пояснение: '-/+ replace' означает, что ресурс будет удален и создан заново; Для базы данных это означает потерю данных. Если этого не ожидается, применение следует остановить, изменение следует преобразовать в безопасный метод или неизменяемое поле следует оставить нетронутым.

7. Что из следующего верно для Dockerfile, готового к производству с точки зрения его безопасности и размера?

  • А) Для удобства встраиваем секрет в образ с помощью ENV и запускаем от имени пользователя root
  • Б) Всегда используйте тег «:latest» и сохраняйте базовое изображение как можно большего размера.
  • В) Одноэтапная сборка и оставление всех инструментов сборки в финальном образе
  • Г) Не внедрять секрет, работать с неавторизованным ПОЛЬЗОВАТЕЛЕМ, использовать небольшой и стабильный базовый образ и многоэтапную сборку ✔

Описание: Готовый к использованию образ: не внедряет секрет (вводит его во время выполнения), запускается с неавторизованным ПОЛЬЗОВАТЕЛЕМ вместо root, использует небольшой базовый образ с версионированием (slim/alpine, а не :latest) и масштабируется с помощью многоэтапной сборки. Перед публикацией он также сканируется на наличие уязвимостей.

8. Каков наиболее важный риск неопределения ограничений ресурсов для развертывания в Kubernetes?

  • А) Под никогда не запускается, поскольку поле «limit» является обязательным.
  • Б) На плате мониторинга появляется только предупреждение, на работу это не влияет.
  • В) Kubernetes автоматически применяет безопасные ограничения по умолчанию, без риска.
  • Г) Под может неограниченно расти и потреблять ресурсы узла, приводя к сбою соседних сервисов ✔

Пояснение: Под, не имеющий ограничения по ресурсам, может неограниченно расти, потреблять все ресурсы узла, на котором он работает, и приводить к сбою соседних сервисов, например, с утечкой памяти. Вот почему определение запросов/ограничений является основой надежности.

9. Как избежать «усталости от оповещений» при мониторинге и настройке сигналов тревоги?

  • А) Установите сигналы тревоги по как можно большему числу показателей и генерируйте оповещения при каждом отклонении.
  • Б) Установите для всех сигналов тревоги самый высокий уровень серьезности.
  • В) Вызов тревог по мгновенным значениям без установки времени (для)
  • D) Обеспечение ориентированности на действия и срочности сигналов тревоги, тестирование пороговых значений с использованием исторических данных, объединение ненужных ✔

Описание: Каждый сигнал тревоги должен быть действенным и иметь правильную срочность; На доске отображается информация, не требующая действий, она никого не будит. Пороги сигналов тревоги проверяются на основе исторических данных системы, а ненужные/повторяющиеся сигналы тревоги объединяются. Таким образом, настоящая сигнализация не затеряется в шуме.

10. Каков наилучший приоритетный порядок действий во время производственного инцидента?

  • А) Сначала найдите точную первопричину и устраните ее только тогда, когда причина ясна.
  • Б) Сначала напишите отчет о вскрытии, затем прикоснитесь к сервису
  • C) Сначала сократите (восстановление/услуга восстановления), оставив анализ первопричин на потом ✔
  • Г) Сначала найдите человека, ответственного за инцидент, и сообщите об этом.

Пояснение: Золотое правило гласит: «Сначала сократите, потом исследуйте». Цель состоит в том, чтобы сначала восстановить службу или откатить ее до заведомо исправной версии (смягчить последствия); Анализ первопричин проводится спокойно после того, как давление спадет. Ожидание поиска точной основной причины увеличивает время восстановления (MTTR).

11. Какова основная цель безупречной посмертной культуры?

  • А) Выявление лица, допустившего ошибку, и возложение на него ответственности.
  • Б) Сосредоточение внимания на системах и процессах и поощрение обучения; ✔ Извлечение уроков, которые предотвращают повторение, а не обвиняют
  • В) Никогда не сообщайте об инциденте и следите за тем, чтобы о нем забыли.
  • Г) Написание только технических подробностей, а не добавление практических пунктов.

Пояснение: «Бесспорное вскрытие» фокусируется на вопросе «какая система и процесс допустили эту ошибку», а не на том, «кто это сделал». Люди открыто делятся своей ошибкой, если знают, что не будут наказаны; Скрытая ошибка повторяется. Этот отчет не является отчетом с обвинениями, а учебным документом, полным пунктов, ориентированных на действия.

12. Какой наиболее логичный шаг следует предпринять при оптимизации затрат на облако (FinOps) перед переходом к гарантированным скидкам (Зарезервированный/Сберегательный план)?

  • А) Сначала возьмите на себя как можно более длительные обязательства, а потом подумайте о потерях
  • Б) Сначала уберите отходы (закрытие на холостом ходу, правильный размер), затем приступайте к целевому использованию ✔
  • В) Немедленно переместить все ресурсы в спотовую емкость.
  • Г) Удаление самого дорогого товара без просмотра данных счета-фактуры

Пояснение: Сначала нужно убрать мусор (закрытие неработающих ресурсов, сокращение негабаритных ресурсов). В противном случае вы заблокируете ненужное использование по сниженной цене на 1–3 года. Выбор правильного размера и очистка вхолостую не требуют никаких обязательств и практически безопасны.

13. Какова наиболее важная мера безопасности, если сценарий, предложенный ИИ, содержит строку «rm -rf «$DIR»/»?

  • А) Запуск скрипта прямо в проде без его чтения ускорит работу
  • Б) Добавьте set -euo Pipefail и пустой элемент управления переменной и попробуйте сначала выполнить пробный прогон ✔
  • В) Достаточно сократить имя переменной.
  • D) Использование rm -rf --force вместо rm решает проблему.

Объяснение: Если $DIR пуст, этот оператор может попытаться удалить корневой каталог. Остановка на неопределенной переменной с помощью 'set -u' и проверка того, что переменная не пуста, перед ее удалением (например, [ -n "$DIR" ] || выход 1) позволяет избежать катастрофы. Кроме того, деструктивные операции следует сначала опробовать в режиме «сухого прогона».

14. Что нужно сделать в первую очередь, если ключ доступа к облаку случайно утек в публичный репозиторий?

  • А) Немедленно отменить и обновить (повернуть) ключ; Одного удаления недостаточно ✔
  • Б) Просто удалите файл из хранилища и ключ в безопасности
  • В) Ничего не делаю, потому что никто этого не видел.
  • D) Создание частного хранилища устраняет необходимость ротации ключа.

Объяснение: Утечку секрета необходимо немедленно отменить и заменить. Простого удаления файла недостаточно, поскольку секрет остается в истории Git, а публичные репозитории сканируются ботами в течение нескольких секунд. После отмены/возврата оценивается влияние и добавляется секретный сканер, чтобы предотвратить повторение.

15. Какой из следующих подходов минимизирует риск при выпуске новой версии Prod?

  • А) Предоставление новой версии всем пользователям одновременно (большой взрыв) без подготовки плана отката
  • Б) Считать развертывание завершенным, как только оно становится «зеленым», без дополнительной проверки.
  • В) Использование контролируемой стратегии, такой как канареечный/сине-зеленый/флаг функции, готовый план отката и дымовое тестирование + мониторинг показателей после развертывания ✔
  • Г) Полностью оставить тестирование критически важных бизнес-путей искусственному интеллекту и вообще не определять их.

Объяснение: Стратегии контролируемого выпуска (начиная с небольшого процента с канареечным, немедленный откат с сине-зеленым, отделение развертывания от выпуска с помощью флага функции) ограничивают риск. Кроме того, крайне важны четкий план отката перед развертыванием и мониторинг «золотого сигнала» с дымовым тестированием после развертывания; «Выглядеть зеленым» не означает, что это работает.