신뢰성 테스트 전략 설계에 대한 권장 사항
이 Power Platform Well-Architected Reliability 체크리스트 권장 사항에 적용:
제목:06 | 테스트 및 프로덕션 환경에 카오스 엔지니어링 원칙을 적용하여 복원력 및 가용성 시나리오를 테스트하세요. 테스트를 통해 활성 오작동 및 시뮬레이션된 부하 테스트를 수행하여 정상적인 성능 저하 구현 전략이 효과적인지 확인하세요. |
---|
이 가이드에서는 워크로드의 안정성을 검증하고 최적화하기 위한 안정성 테스트 전략 설계에 대한 권장 사항을 설명합니다. 안정성 테스트는 워크로드의 탄력성과 가용성, 특히 솔루션을 설계할 때 식별하는 중요한 흐름에 중점을 둡니다. 이 가이드는 일반적인 테스트 지침과 결함 주입 및 카오스 엔지니어링과 관련된 지침을 제공합니다.
정의
용어 | 정의 |
---|---|
상태 | 심각한 가동 중지 시간 없이 애플리케이션 워크로드가 정상 상태에서 실행되는 시간입니다. |
카오스 엔지니어링 | 애플리케이션과 서비스를 실제 스트레스와 실패에 노출시키는 방식입니다. 카오스 엔지니어링의 목표는 신뢰할 수 없는 조건과 누락된 종속성에 대한 복원력을 구축하고 검증하는 것입니다. |
결함 주입 | 시스템의 복원력을 테스트하기 위해 시스템에 오류를 발생시키는 행위입니다. |
복구 가능성 | 복원력의 동의어입니다. |
복원력 | 장애 모드를 견디고 복구하는 애플리케이션 워크로드의 능력입니다. |
주요 디자인 전략
워크로드가 안정성 목표를 충족하고 오류를 원활하게 처리할 수 있는지 확인하려면 테스트가 필수적입니다. 결함 주입은 실제 시나리오를 시뮬레이션하기 위해 의도적으로 시스템에 결함이나 스트레스를 도입하는 테스트 유형입니다. 결함 주입 및 카오스 엔지니어링 기술을 사용하면 문제가 프로덕션 환경에 영향을 미치기 전에 사전에 발견하고 수정할 수 있습니다. 이 섹션에서는 워크로드에 대한 테스트, 결함 주입 및 카오스 엔지니어링에 대한 일반적인 지침을 제공합니다.
일반 테스트 지침
정기적으로 테스트를 수행하여 기존 임계값, 목표 및 가정을 검증합니다. 워크로드에 큰 변화가 발생하면 정기적인 테스트를 실행하세요. 테스트 및 스테이징 환경에서 대부분의 테스트를 수행합니다. 프로덕션 시스템에 대해 일부 테스트를 실행하는 것도 좋습니다.
일관된 테스트 범위와 재현성을 보장하기 위해 테스트를 자동화합니다. 일반적인 테스트 작업을 자동화하고 이를 빌드 프로세스에 통합하세요. 소프트웨어를 수동으로 테스트하는 것은 지루하고 오류가 발생하기 쉬우나 수동 탐색 테스트를 수행할 수 있습니다. 자동화된 테스트를 개발해야 하는 경우 수동 테스트를 사용하여 개발할 테스트 범위를 결정합니다.
개발 주기 초기에 탄력성 및 가용성 테스트를 수행하려면 Shift Left 테스트 접근 방식을 채택하세요.
간단한 문서 형식을 채택하여 모든 사람이 모든 정기 테스트의 프로세스와 결과를 쉽게 이해할 수 있습니다.
운영 팀, 기술 리더십, 비즈니스 이해관계자, 재해 복구 이해관계자 등 적절한 팀과 문서화된 결과를 공유하세요. 결과는 서비스 수준 목표(SLO), 서비스 수준 약정(SLA), 복구 시간 목표(RTO) 및 복구 지점 목표(RPO)와 같은 안정성 목표의 구체화를 알려야 합니다.
백업에 대한 정기적인 테스트 흐름을 만드세요. 백업이 유효하고 복원이 제대로 작동하는지 확인하려면 데이터를 격리된 시스템에 복원하세요.
복구에 대한 기대치가 적절한지 확인하기 위해 재해 복구 이해관계자와 복구 시간 메트릭을 문서화하고 공유합니다.
업계 표준 배포 테스트 절차를 사용하면 자동화되고 예측 가능하며 효율적인 배포 프로세스가 있는지 확인할 수 있습니다.
일시적인 오류를 견딜 수 있는 워크로드의 능력을 테스트하십시오. 자세한 내용은 일시적 결함 처리를 위한 권장 사항을 참조하세요.
결함 주입을 사용하여 워크로드가 종속 서비스 또는 기타 종속성의 오류를 처리하는 방법을 테스트합니다.
재해 복구 계획을 테스트하여 치명적인 오류 및 기타 주요 상황에 대응하세요.
결함 주입을 사용하여 워크로드의 성능을 적절하게 저하시키고 구성 요소 오작동의 폭발 반경을 최소화하는 능력을 테스트하십시오.
계획된 중단과 예상치 못한 중단 활용
계획된 유지 관리 또는 계획되지 않은 중단으로 인해 워크로드가 오프라인 상태인 경우 테스트를 수행하고 워크로드에 대한 이해를 높일 수 있는 특별한 기회가 있습니다. 다음 섹션에서는 각 시나리오에 대한 권장 사항을 제공합니다.
계획된 유지 관리
업데이트 또는 패치에 대한 유지 관리 기간을 계획한 경우 유지 관리 작업과 관련되지 않은 구성 요소와 흐름을 테스트할 수 있습니다. 워크로드가 예기치 않게 저하되거나 완전히 오프라인 상태가 되는 잠재적인 위험 없이 테스트를 수행합니다. 유지 관리 기간 동안 충분한 시간이 있으면 유지 관리 작업이 완료된 후 유지 관리와 관련된 구성 요소와 흐름을 테스트할 수도 있습니다.
계획되지 않은 중단
모든 중단 사고를 워크로드에 대해 자세히 알아보고 우선 순위에 따라 다음 단계를 수행하여 복원력을 향상시킬 수 있는 기회로 활용하십시오.
사용자를 위해 워크로드를 다시 온라인 상태로 만듭니다. 문제에 대한 해결 방법을 수행하거나, 문제를 해결하거나, 복구 프로세스를 시작해야 할 수도 있습니다.
중단의 근본 원인을 파악하고 해결하세요. 조사의 일환으로 근본 원인을 해결할 수 있는 경우 근본 원인과 이를 해결하기 위해 취한 조치를 문서화하십시오. 문제로 인해 나중에 추가 유지 관리 기간이 필요한 경우, 철저히 테스트하여 완화 조치가 예상되는 부하를 처리할 수 있는지 확인하세요. 완화 조치를 포괄하기에 충분한 모니터링을 설정했는지 확인하십시오.
해당하는 경우 워크로드의 모든 구성 요소에서 동일한 문제 또는 유사한 문제의 영향을 받을 수 있는 구성 약점을 찾습니다. 이 기회를 활용하여 이러한 구성 요소를 사전에 해결하십시오. 워크로드 전체에서 유사한 문제의 패턴을 감지하려면 인시던트 기록을 참조하세요.
발견한 내용을 사용하여 테스트 전략을 개선하세요. 동일한 실패를 직접 테스트하여 근본 원인 및 유사한 문제를 성공적으로 해결했는지 확인하십시오.
오류 주입 및 카오스 엔지니어링 지침
오류 주입 테스트는 구성 요소 오류에 대응하는 워크로드의 능력을 강조하여 카오스 엔지니어링의 원칙을 따릅니다. 프로덕션 전 및 프로덕션 환경에서 결함 주입 테스트를 수행합니다. 장애 모드 분석 수행에서 배운 정보를 적용하여 우선 순위가 지정된 결함만 테스트하고 결함을 해결하는 완화 전략이 있는지 확인하십시오.
카오스 엔지니어링의 주요 지침은 다음과 같습니다.
선제적으로 대응하세요. 장애가 발생할 때까지 기다리지 마십시오. 문제가 프로덕션 환경에 영향을 미치기 전에 문제를 발견하고 해결하기 위해 혼란스러운 실험을 수행하여 장애를 예측해 보세요.
장애를 수용하세요. 시스템에서 발생하는 장애를 받아들이고 이를 통해 배우십시오. 장애를 복잡한 시스템의 자연스러운 부분으로 보고 시스템 안정성을 배우고 향상시킬 수 있는 기회로 활용하십시오.
시스템을 파괴하세요. 시스템의 복원력을 테스트하기 위해 의도적으로 시스템에 결함이나 스트레스를 주입합니다. 실제 장애 또는 중단을 시뮬레이션하여 워크로드의 복구 기능을 테스트하고 개선하세요.
면역력을 키우세요. 카오스 엔지니어링 실험을 사용하여 워크로드의 장애 예방 및 복구 능력을 향상하세요.
카오스 엔지니어링은 단일 중단에 대응하는 단기적인 전술적 노력이 아니라 워크로드 팀 문화 및 지속적인 관행의 필수적인 부분입니다. 카오스 실험을 설계할 때 다음 표준 방법을 따르십시오.
가설로 시작하세요. 각 실험에는 특정 구성 요소의 손실을 견딜 수 있는 흐름의 능력을 테스트하는 것과 같은 명확한 목표가 있어야 합니다.
기준 행동을 측정합니다. 실험을 실행할 때 저하된 상태와 비교할 수 있도록 실험에 포함된 흐름 및 구성 요소에 대한 일관된 안정성 및 성능 메트릭이 있는지 확인하십시오.
결함을 주입하십시오. 실험은 의도적으로 빠르게 복구할 수 있는 특정 구성 요소를 대상으로 해야 하며, 실험의 폭발 반경을 제어하는 데 도움이 되도록 결함 주입으로 인한 효과를 미리 예상해야 합니다.
결과 동작을 모니터링합니다. 결함의 영향을 적절하게 이해하기 위해 실험이 목표로 하는 개별 흐름 구성요소와 엔드투엔드 흐름 동작에 대한 원격 분석을 수집합니다. 결함 주입 결과에 대한 전체 그림을 보려면 수집한 메트릭을 기준 메트릭과 비교하세요.
프로세스와 관찰 내용을 문서화합니다. 실험에 대한 상세 기록을 보존하면 워크로드 설계에 대한 향후 결정을 내릴 수 있어 시간이 지남에 따라 드러난 격차를 해결할 수 있습니다.
결과를 확인하고 그에 따라 조치를 취하세요. 워크로드 백로그에 개선 사항으로 추가할 수 있는 수정 단계를 계획하세요. 다른 배포와 동일한 프로세스에 따라 비프로덕션 환경에서 설계 개선 계획을 검토하고 테스트하도록 합니다.
프로세스, 아키텍처 선택 및 코드를 정기적으로 검증하여 기술 부채를 신속하게 감지하고, 새로운 기술을 통합하고, 변화하는 요구 사항에 적응하세요.
결함 주입 실험을 수행할 때 다음을 수행합니다.
모니터링이 이루어지고 경고가 설정되었는지 확인하세요.
인시던트의 소유권을 갖기 위해 직접 책임자(DRI)를 지정하는 프로세스를 검증하십시오.
문서화 및 조사 프로세스가 최신 상태인지 확인하세요.
카오스 테스트 전략을 최적화하려면 다음 권장 사항과 고려 사항을 통합하세요.
시스템의 가정에 이의를 제기하세요. 테스트를 통해 워크로드의 탄력성과 워크로드 설계 전략을 개선하려고 합니다. 과거 경험을 바탕으로 신뢰할 수 있다고 생각하는 구성 요소와 흐름에 결함을 주입할 기회를 찾으세요. 새로운 워크로드에서는 안정적이지 않을 수 있습니다.
변경 내용을 검증하세요. 결함 주입 테스트를 포함한 철저한 테스트가 없으면 변경 후 워크로드에 대한 그림이 불완전할 수 있습니다. 예를 들어 즉시 명확하지 않은 새로운 종속성을 도입할 수 있습니다.
SLA 버퍼를 사용하십시오. 카오스 테스팅을 제한하여 SLA 범위를 유지하고 가동 중단으로 인한 잠재적인 부작용을 방지하세요. 흐름 및 구성 요소 복구 대상은 테스트 범위를 정의하는 데 도움이 됩니다.
카오스와 결함 주입에 대한 투자로 오류 예산을 설정합니다. 오류 예산은 SLO 100% 달성과 합의된 SLO 달성 간의 차이입니다.
범위를 벗어나면 실험을 중지하세요. 알 수 없는 결과는 카오스 실험의 예상된 결과입니다. 상당한 결과 데이터를 수집하는 것과 가능한 한 적은 수의 프로덕션 사용자에게 영향을 미치는 것 사이에서 균형을 이루도록 노력하십시오.
개발팀과 긴밀히 협력하여 주입된 오류의 관련성을 확인합니다. 과거의 사건이나 문제를 가이드로 활용하세요. 종속성을 검사하고 해당 종속성을 제거할 때 결과를 평가하세요.
카오스 테스팅을 통해 밝혀진 워크로드 내 다양한 구성 요소 간의 이전에 발견되지 않은 종속성을 식별하고 문서화합니다.
카오스 테스팅 중에 발견된 종속성을 설명하기 위해 필요에 따라 복구 계획을 조정합니다.
실험 및 테스트 결과를 새로운 실험 및 테스트의 기초로 사용하십시오. 예상치 못한 동작이 발생하면 새로운 테스트를 통해 해당 동작을 직접 대상으로 삼고 이에 대한 교정 전략을 설계할 수 있는 기회를 제공할 수 있습니다.
트레이드오프: 프로덕션 환경에서의 결함 주입 테스트는 방해가 될 수 있으며 잠재적으로 다운타임을 일으킬 수 있습니다. 이러한 가능성에 대해 이해관계자에게 투명하게 알리고, 발생한 실패를 신속하게 되돌릴 수 있도록 실험 및 롤백 계획을 종료할 수 있는 안전 장치가 마련되어 있는지 확인하십시오.
Power Platform 간편 사용
정적 결과를 Power Automate 사용하여 고정된 결과를 반환하고 작업 부하를 테스트할 수 있습니다.
Power Apps 테스트 엔진(프리뷰) 은 독립형 캔버스 앱을 테스트하는 데 사용할 수 있는 Power Platform CLI 구성 요소입니다. Power Apps
Azure Test Plans 는 계획된 수동 테스트, 사용자 수용 테스트, 탐색적 테스트 및 이해 관계자의 피드백 수집에 필요한 모든 기능을 제공하는 사용하기 쉬운 브라우저 기반 테스트 관리 솔루션입니다.
워크로드에 Azure 리소스가 포함되어 있는 경우 카오스 엔지니어링을 사용하여 클라우드 애플리케이션 및 서비스 복원력을 측정, 이해 및 개선하는 데 도움이 되는 관리형 서비스인 Azure Chaos Studio를 사용할 수 있습니다.
작업 부하에 Microsoft Copilot Studio 조종사가 포함된 경우, Power CAT Copilot Studio 키트 를 사용하여 조종사와 테스트를 구성할 수 있습니다. Copilot Studio API(Direct Line)에 대해 개별 테스트를 실행하여 조종사의 응답이 예상 결과와 비교 평가됩니다.
안정성 체크리스트
전체 권장 사항 세트를 참조하세요.