REL 12: 안정성은 어떻게 테스트합니까?
프로덕션 환경의 스트레스에 대한 복원력을 가지도록 워크로드를 설계한 후 설계대로 작동하고 예상한 복원력을 제공하는지 확인할 수 있는 유일한 방법은 테스트입니다.
리소스
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
Resilience Engineering: Learning to Embrace Failure
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Use CodePipeline with AWS CodeBuild to test code and run builds
Automate your operational playbooks with AWS Systems Manager
Principles of Chaos Engineering
Apache JMeter
Casey Rosenthal, Lorin Hochstein, Aaron Blohowiak, Nora Jones, Ali Basiri. “Chaos
Engineering” (August 2017)
AWS Marketplace: products that can be used for continuous integration
APN Partner: partners that can help with implementation of a continuous integration
pipeline
모범 사례:
-
플레이북을 사용하여 장애 조사: 잘 알려지지 않은 장애 시나리오에 일관되고 신속하게 대응할 수 있도록 플레이북에 조사 프로세스를 문서화합니다. 플레이북은 장애 시나리오에 영향을 미치는 요인을 식별하기 위해 수행되는 미리 정의된 단계입니다. 문제가 확인되거나 에스컬레이션될 때까지 각 프로세스 단계의 결과를 사용하여 다음에 수행할 단계를 결정합니다.
-
인시던트 사후 분석 수행: 고객에게 영향을 주는 이벤트를 검토하고 발생 요인과 예방 조치 항목을 식별합니다. 이 정보를 사용하여 재발을 제한하거나 방지하는 완화 기능을 개발합니다. 신속하고 효과적인 대응을 위한 절차를 개발합니다. 목표 대상에 맞게 적절히 원인과 교정 조치를 전달합니다. 필요한 경우 다른 관계자들에게 이러한 원인을 전달하는 방법을 마련합니다.
-
기능 요구 사항 테스트: 여기에는 단위 테스트와 필수 기능을 검증하는 통합 테스트가 포함됩니다.
-
확장 및 성능 요구 사항 테스트: 여기에는 워크로드가 조정 및 성능 요구 사항을 충족하는지 확인하기 위한 로드 테스트가 포함됩니다.
-
카오스 엔지니어링을 이용한 복원력 테스트: 사전 프로덕션 및 프로덕션 환경에 정기적으로 장애를 주입하는 테스트를 실행합니다. 워크로드에서 장애에 대응할 방법에 대한 가설을 테스트 결과와 비교하고 일치하지 않는 경우 반복합니다. 프로덕션 테스트가 사용자에게 영향을 미치지 않는지 확인합니다.
-
정기적으로 게임 데이 진행: 실제 장애 시나리오에 참여할 직원들과 함께 실전 연습을 정기적으로 수행하여 프로덕션에 최대한 근접한 장애 절차(프로덕션 환경의 장애 절차 포함)를 연습합니다. 실전 연습에서는 프로덕션 테스트가 사용자에게 영향을 미치지 않도록 하는 조치가 시행됩니다.
개선 계획
플레이북을 사용하여 장애 조사
- 코드로 플레이북 구현: 플레이북을 스크립트로 작성하여 작업을 코드로 수행하면 일관성을 유지하고 수동 프로세스에서 발생하는 오류를 최소화할 수 있습니다. 플레이북은 문제의
발생 요인을 식별하는 데 필요할 수 있는 다양한 단계를 나타내는 여러 스크립트로 구성할 수 있습니다. 플레이북 활동의 일부분으로 런북 활동을 트리거하거나
수행할 수도 있고, 확인된 이벤트 대응 과정에서 플레이북 실행 여부를 묻는 메시지를 표시할 수도 있습니다.
Automate your operational playbooks with AWS Systems Manager
AWS Systems Manager Run Command
AWS Systems Manager Automation
What is AWS Lambda?
What Is Amazon EventBridge?
Using Amazon CloudWatch Alarms
인시던트 사후 분석 수행
- 발생 요인을 솔직하게 밝히면서도 책임을 따지지 않도록 합니다.
- 문제를 문서화하지 않으면 문제를 시정할 수 없습니다.
- 인시던트 사후 분석에서 책임을 따지지 않으면서 제안된 시정 조치를 공정하게 평가하도록 하고 애플리케이션 팀의 솔직한 자체 평가와 협업을 유도합니다.
What is log analytics?
기능 요구 사항 테스트
Use CodePipeline with AWS CodeBuild to test code and run builds
AWS CodePipeline Adds Support for Unit and Custom Integration Testing with AWS CodeBuild
Continuous Delivery and Continuous Integration
Using Canaries (Amazon CloudWatch Synthetics)
Software test automation
확장 및 성능 요구 사항 테스트
Distributed Load Testing on AWS: simulate thousands of connected users
Apache JMeter
- 프로덕션 환경과 동일한 환경에 애플리케이션을 배포하고 로드 테스트를 수행합니다.
- 코드형 인프라를 사용하여 프로덕션 환경과 최대한 유사한 환경을 구축합니다.
카오스 엔지니어링을 이용한 복원력 테스트
Principles of Chaos Engineering
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager
AWS re:Invent 2019: Improving resiliency with chaos engineering (DOP309-R1)
- 워크로드에 장애를 주입하려면 오픈 소스 소프트웨어 사용
The Chaos ToolKit
Shopify Toxiproxy
Netflix Chaos Monkey - 또는 AWS Marketplace를 통해 제공되는 상용 소프트웨어 사용
Gremlin - 또는 자체 장애 삽입 코드 작성
Well-Architected lab: Level 300: Testing for Resiliency of EC2 RDS and S3
Injecting Chaos to Amazon EC2 using AWS Systems Manager - 모든 구성 요소 및 외부 종속성의 결함 테스트
- 일반 프록시를 확장하여 지연 시간 및 메시지 손실을 유발할 수 있는 조건을 시뮬레이션합니다. 자체 구현을 생성하여 부분적 장애 상태를 만들어낼 수도 있습니다.
정기적으로 게임 데이 진행
- 로드 또는 성능 테스트를 실행한 다음 장애 주입을 실행합니다.
- 런북에서 이상이 있는지 찾고 플레이북을 연습할 기회가 있는지 살펴봅니다.
- 런북에서 벗어난 경우 해당 런북을 구체화하거나 동작을 수정합니다. 플레이북을 실행하는 경우, 사용되었어야 하는 런북을 식별하거나 새로운 런북을 만듭니다.