REL 8: 변경 사항은 어떻게 적용합니까?
새로운 기능을 배포하고 워크로드와 운영 환경에서 알려진 소프트웨어를 실행하고 예측 가능한 방식으로 패치 또는 교체할 수 있도록 하려면 변경 사항을 제어해야 합니다. 이러한 변경이 제어되지 않으면 변경의 영향을 예측하거나 변경으로 인해 발생하는 문제를 해결하기가 어려워집니다.
리소스
AWS Summit 2019: CI/CD on AWS
What Is AWS CodePipeline?
What Is CodeDeploy?
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
CanaryRelease
AWS Marketplace: products that can be used to automate your deployments
APN Partner: partners that can help you create automated deployment solutions
모범 사례:
-
배포와 같은 표준 활동에 런북 사용: 런북은 특정 결과를 달성하기 위해 미리 정의된 단계입니다. 수동 또는 자동으로 표준 활동을 수행할 때 런북을 사용합니다. 워크로드 배포, 패치 적용 또는 DNS 수정과 같은 활동이 여기에 포함됩니다.
-
배포의 일부로 기능 테스트 통합: 기능 테스트는 자동화된 배포의 일부로 실행됩니다. 성공 기준이 충족되지 않으면 파이프라인이 중지되거나 롤백됩니다.
-
배포의 일부로 복원력 테스트 통합: 복원력 테스트는 카오스 엔지니어링의 일부로 사전 프로덕션 환경에서 자동화된 배포 파이프라인에 포함되어 실행됩니다.
-
변경 불가능한 인프라를 사용하여 배포: 프로덕션 워크로드의 현재 위치에서 업데이트, 보안 패치 또는 구성 변경이 발생하지 않도록 규정하는 모델입니다. 변경이 필요한 경우 아키텍처가 새 인프라에 구축되고 프로덕션 환경에 배포됩니다.
-
자동화를 통한 변경 사항 배포: 배포 및 패치 적용이 자동화되므로 부정적인 영향이 제거됩니다.
개선 계획
배포와 같은 표준 활동에 런북 사용
AWS Well-Architected Framework: Concepts: Runbook
- AWS CloudFormation 또는 신뢰할 수 있는 타사 제품을 사용하여 인프라를 정의합니다.
What is AWS CloudFormation? - 우수한 소프트웨어 설계 원칙을 사용하여 분리된 단일 템플릿을 생성합니다.
- 수행 권한, 템플릿, 책임자 결정
Controlling access with AWS Identity and Access Management - 버전을 제어하려면 AWS CodeCommit 또는 신뢰할 수 있는 타사 도구와 같은 소스 제어를 사용합니다.
What is AWS CodeCommit?
- 수행 권한, 템플릿, 책임자 결정
배포의 일부로 기능 테스트 통합
- AWS CodePipeline에 모델링된 소프트웨어 릴리스 파이프라인의 '테스트 작업'을 실행하는 중에 AWS CodeBuild를 호출합니다. 이
기능을 사용하면 단위 테스트, 정적 코드 분석, 통합 테스트 등 코드에 대해 다양한 테스트를 손쉽게 실행할 수 있습니다.
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild - AWS Marketplace 솔루션을 사용하여 소프트웨어 제공 파이프라인의 일부로 자동화된 테스트를 실행합니다.
Software test automation
배포의 일부로 복원력 테스트 통합
- 복원력 테스트는 결함 또는 리소스 저하를 발생시켜 워크로드가 설계된 복원력으로 대응하는지 평가합니다.
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3 - 이러한 테스트는 자동화된 배포 파이프라인의 사전 프로덕션 환경에서 정기적으로 실행할 수 있습니다.
- 또한 예약된 게임 데이의 일부로 프로덕션에서 실행해야 합니다.
- 카오스 엔지니어링 원칙을 사용하여 다양한 장애 하에서 워크로드의 성능이 어떻게 나타날지에 대한 가설을 제안한 다음 복원력 테스트를 사용하여 가설을
테스트합니다.
Principles of Chaos Engineering
변경 불가능한 인프라를 사용하여 배포
Overview of a Blue/Green Deployment
Deploying Serverless Applications Gradually
CanaryRelease
자동화를 통한 변경 사항 배포
The Amazon Builders' Library: Ensuring rollback safety during deployments
The Amazon Builders' Library: Going faster with continuous delivery
- AWS CodePipeline 또는 신뢰할 수 있는 타사 제품을 사용하여 파이프라인을 정의하고 실행합니다.
- 코드 저장소에 변경 사항이 전달되고 나서 실행되도록 파이프라인을 구성합니다.
What is AWS CodePipeline? - 파이프 라인 문제에 대한 알림을 보내거나 Amazon Chime과 같은 팀 채팅 도구와 통합하려면 Amazon Simple Notification
Service(SNS) 및 Amazon Simple Email Service(SES)를 사용합니다.
What is Amazon Simple Notification Service?
What is Amazon SES?
What is Amazon Chime?
Automate chat messages with webhooks.
- 코드 저장소에 변경 사항이 전달되고 나서 실행되도록 파이프라인을 구성합니다.