Автоматический откат для неудачного развертывания ECS Fargate без пользовательских скриптов.
→Включите автоматический выключатель развертывания ECS с откатом на сервисе ECS.
Почему: Встроенная функция ECS, которая автоматически откатывается, если новые задачи не стабилизируются. Минимум операционных издержек по сравнению с пользовательским опросом CodeBuild или сложными настройками CodeDeploy.
Источник↗
Развернуть в основном регионе, проверить с помощью автоматизированных тестов, затем развернуть в других регионах параллельно.
→Используйте единый CodePipeline с последовательными этапами: (1) Развертывание в Регионе А, (2) этап тестирования CodeBuild, выполняющий проверку, (3) параллельный этап развертывания для Регионов B и C.
Почему: CodeBuild выступает в качестве автоматизированного, программного шлюза. Один конвейер проще, чем оркестровка нескольких конвейеров с помощью Step Functions.
Длительно выполняющийся скрипт валидации в хуке жизненного цикла CodeDeploy приводит к преждевременному успешному завершению развертывания.
→Увеличьте свойство `timeout` для конкретного скрипта хука жизненного цикла в файле `AppSpec.yml`.
Почему: Таймаут настраивается для каждого хука в файле AppSpec, а не на уровне группы развертывания. Это гарантирует, что скрипт валидации имеет достаточно времени для завершения.
Ускорить медленные сборки Docker-образов CodeBuild, вызванные повторной загрузкой зависимостей и слоев образов при каждом запуске.
→В конфигурации проекта CodeBuild включите `LOCAL_DOCKER_LAYER_CACHE` и настройте кэш S3 для каталогов зависимостей (например, `.m2`, `node_modules`).
Почему: Напрямую устраняет обе причины замедления. Кэширование слоев Docker повторно использует неизмененные слои образов; кэширование S3 повторно использует загруженные зависимости приложения.
Реализовать канареечное развертывание для функции Lambda с автоматическим откатом на основе метрик.
→Используйте AWS SAM с `DeploymentPreference` (например, тип `Canary10Percent5Minutes`). Добавьте CloudWatch тревогу по метрике `Errors` в качестве триггера отката.
Почему: SAM нативно интегрируется с CodeDeploy для Lambda, автоматизируя переключение трафика по алиасам, мониторинг и откат без пользовательских скриптов.
Источник↗
Настройте IAM для CodePipeline в Аккаунте A для развертывания ресурсов в Аккаунт B.
→Роль конвейера (Аккаунт A) принимает роль действия (Аккаунт B). Роль действия в B доверяет роли конвейера и имеет разрешения на развертывание. Бакет артефактов S3 и ключ KMS в A должны иметь политики ресурсов, предоставляющие доступ к роли действия в B.
Почему: Это стандартный, безопасный шаблон межаккаунтного доступа: принятие роли для действий, политики на основе ресурсов для доступа к данным.
Реализовать рабочий процесс GitOps для EKS, где состояние кластера автоматически и непрерывно согласовывается с репозиторием Git.
→Разверните контроллер GitOps (например, Flux, ArgoCD) в кластере EKS. Настройте его для мониторинга репозитория Git и применения/согласования изменений.
Почему: Это стандартный "pull-based" шаблон GitOps. Внутрикластерный контроллер обрабатывает непрерывное согласование и обнаружение дрейфа, что является основным принципом GitOps.
Разрешить проекту CodeBuild в центральном инструментальном аккаунте развертывать манифесты Kubernetes в кластерах EKS в отдельных аккаунтах рабочих нагрузок.
→В каждом аккаунте рабочей нагрузки создайте межаккаунтную роль IAM, которой доверяет роль CodeBuild. Сопоставьте эту новую роль с группой Kubernetes RBAC в `aws-auth` ConfigMap кластера EKS. Скрипт CodeBuild принимает роль перед запуском `kubectl`.
Почему: Это стандартный, безопасный шаблон для межаккаунтного доступа к EKS. Он следует принципу наименьших привилегий, создавая выделенную, доверенную роль для этой цели.
Выполнить сложную миграцию схемы RDS PostgreSQL или MySQL с нулевым или почти нулевым временем простоя.
→Используйте функцию Amazon RDS Blue/Green Deployments. Создайте синхронизированную промежуточную (зеленую) среду, примените к ней изменения схемы, а затем переключитесь, чтобы продвинуть ее в производство.
Почему: Это специально разработанный управляемый сервис для безопасных обновлений RDS с нулевым временем простоя. Он обрабатывает клонирование, синхронизацию и быстрое (< 1 мин) переключение со встроенными защитными механизмами.
Развернуть новую версию одностраничного приложения (SPA) в S3/CloudFront и убедиться, что пользователи немедленно получают новую версию с минимальными затратами на инвалидацию кэша.
→Используйте хеширование на основе содержимого для имен файлов активов (например, `app.a1b2c3d4.js`). После развертывания новых активов инвалидируйте только файл `index.html` в дистрибуции CloudFront.
Почему: Хешированные имена файлов уникальны, поэтому CloudFront рассматривает их как новые объекты и извлекает их из источника, минуя кэш. Только один файл точки входа (`index.html`) нуждается в инвалидации, что значительно дешевле, чем инвалидация с использованием подстановочного знака (`/*`).
Реализовать конвейер CI/CD для приложения AWS CDK, который автоматически обновляется при изменении собственного определения конвейера.
→Используйте конструкт CDK Pipelines (`pipelines.CodePipeline`). Этот конструкт создает конвейер, который по умолчанию включает этап `SelfMutate`.
Почему: CDK Pipelines — это высокоуровневый конструкт, специально разработанный для этого шаблона. Этап `SelfMutate` гарантирует, что конвейер всегда отражает последнее определение из кода перед развертыванием изменений приложения.
Развернуть новую версию приложения, которая требует обратно совместимого изменения схемы базы данных (например, добавление новых столбцов) с нулевым временем простоя.
→Реализуйте шаблон "расширение и сжатие" (или параллельное изменение). Сначала разверните дополнительные, обратно совместимые изменения схемы базы данных. Во-вторых, разверните новую версию приложения, которая использует новую схему. И старые, и новые версии приложения могут сосуществовать с обновленной базой данных.
Почему: Этот шаблон разделяет развертывание базы данных и приложения, гарантируя, что состояние базы данных всегда совместимо как со старыми, так и с новыми версиями приложения, тем самым обеспечивая развертывания без простоя.
Постепенно выкатывать новую функцию для определенных сегментов пользователей и измерять ее влияние на бизнес-метрики (например, коэффициент конверсии) с помощью A/B-тестирования.
→Используйте Amazon CloudWatch Evidently. Создайте функцию с несколькими вариантами, запуск для контроля процента развертывания и эксперимент для измерения статистического влияния на определенные метрики.
Почему: Evidently — это специально разработанный сервис для флагирования функций и A/B-экспериментов, предоставляющий не только механизм развертывания, но и движок статистического анализа для измерения влияния.