들어가며: 복원력은 설계가 아니라 증명이다
클라우드 환경에서 애플리케이션을 운영하다 보면 '복원력'이라는 단어를 자주 접하게 됩니다. 멀티 존 배포, 자동 장애 조치(failover), 재시도 로직 등 아키텍처 설계 단계에서 많은 투자를 하지만, 정작 장애가 발생했을 때 이러한 메커니즘이 실제로 동작하는지 확인하는 기회는 많지 않죠.
Azure Chaos Studio는 바로 이러한 문제를 해결하기 위한 관리형 카오스 엔지니어링 서비스입니다. 이번에 발표된 Workspaces 퍼블릭 프리뷰는 실제 프로덕션에서 발생하는 장애 패턴을 기반으로 시나리오를 구성하여, 팀이 더 쉽게 복원력 테스트를 시작할 수 있게 해줍니다.
핵심 포인트: 복원력은 '설계했다'고 해서 끝나는 것이 아니라, 실제 장애 상황에서 '증명'되어야 합니다.
왜 기존 설계만으로는 부족한가?
실제 장애는 아키텍처 다이어그램을 읽지 않습니다. 존 중복 배포를 했음에도 불구하고, 수년 전에 잘못 설정된 헬스 프로브(health probe) 때문에 장애가 발생할 수 있습니다. 자동 장애 조치가 있는 데이터베이스도 연결 문자열이 단일 리전에 하드코딩되어 있다면 애플리케이션은 죽은 목숨이나 다름없습니다.
Azure에서는 복원력이 공동 책임입니다. Microsoft는 플랫폼과 Azure 서비스의 복원력을 담당하지만, 고객은 해당 복원력을 설정하고 사용하는 코드에 대한 책임을 집니다. 어느 한쪽의 빈틈을 다른 쪽이 메워주지 않습니다. 따라서 아키텍처, 구성, 애플리케이션 로직이 실제 프로덕션에서 버틸 수 있는지 확인하는 유일한 방법은 장애를 먼저 주입해보는 것입니다.

Chaos Studio Workspaces가 바꾸는 장애 테스트 방식
기존 Chaos Studio는 개별 결함(fault)을 조합하여 실험을 구성해야 했습니다. 하지만 실제 장애는 여러 계층이 동시에 영향을 받는 경우가 많습니다. Workspaces는 실제 장애 시나리오를 기본 제공하여 이러한 복잡성을 줄여줍니다.
주요 시나리오 및 동작 방식
Workspaces에서 제공하는 대표적인 시나리오는 다음과 같습니다.
| 시나리오 이름 | 주입되는 장애 | 검증 목표 |
|---|---|---|
| Availability Zone Down | VMSS 종료 (영역별) | 크로스 존 라우팅 및 복구 |
| Zone Down + DB Failover | VMSS 종료 + PostgreSQL 강제 장애 조치 | 데이터베이스 장애 조치 시간 및 애플리케이션 연결 처리 |
| DNS Outage | NSG 규칙으로 DNS 해석 차단 | 이름 해석 실패 시 애플리케이션 동작 |
| Microsoft Entra ID Outage | ID 공급자 장애 | 인증 재시도, 토큰 캐싱, 폴백 경로 |
| Cache Stampede | Redis 플러시 + DB 재시작 + App Service 프로세스 종료 | 캐시 미스 폭증 및 데이터베이스 급증 대응 |
| Event-Driven Messaging Disruption | Service Bus/Event Hubs 비활성화 | 데드 레터 처리 및 백프레셔 |
코드로 확인하는 시나리오 실행 예시
실제로 Workspaces를 사용해 시나리오를 실행하는 것은 Azure Portal에서 몇 번의 클릭으로 가능하지만, 개발자라면 CLI나 SDK를 통해 자동화하는 것도 고려해볼 만합니다. 아래는 Azure CLI를 사용한 간단한 예시입니다.
# 리소스 그룹에 Workspace 생성 (예시)
az resource create \
--resource-group my-rg \
--namespace Microsoft.Chaos \
--resource-type workspaces \
--name my-chaos-workspace \
--location eastus2
# Workspace에서 추천 시나리오 확인 (가상)
az chaos workspace scenario list \
--name my-chaos-workspace \
--resource-group my-rg
참고: 위 코드는 실제 REST API와 다를 수 있습니다. 정확한 명령어는 공식 문서를 확인하세요. Workspaces의 핵심은 **시나리오 디자이너(Scenario Designer)**를 통해 드래그 앤 드롭으로 커스텀 시나리오를 구성할 수 있다는 점입니다.
시나리오 리포트: 훈련의 결과를 증거로
실행이 완료되면 Workspaces는 구조화된 드릴 리포트를 생성합니다. 이 리포트에는 주입된 장애, 영향을 받은 리소스, 복구 타임라인, 정상 베이스라인과의 신호 비교, 예상과 다르게 동작한 부분 등이 포함됩니다. 마치 내부 포스트모템을 보는 것처럼 상세해서, 팀 리더나 감사 담당자에게도 유용하게 활용할 수 있습니다. 리포트를 내보내서 변경 티켓이나 서비스 헬스 리뷰에 첨부하는 것도 가능합니다.

실무 적용 시 주의사항 및 한계
Chaos Studio Workspaces는 강력한 도구이지만, 도입 시 몇 가지 주의할 점이 있습니다.
1. 시나리오가 모든 장애를 대변하지는 않습니다.
퍼블릭 프리뷰 기간에는 위에서 언급한 시나리오가 전부입니다. 스토리지 계정 장애 조치, SQL Managed Instance 장애 조치, AKS 네이티브 포드 카오스 등은 아직 로드맵에 있습니다. 따라서 팀의 워크로드에 특화된 장애 모드가 있다면 직접 커스텀 시나리오를 설계해야 합니다.
2. 테스트 환경에서의 실행을 권장합니다.
카오스 엔지니어링의 목적은 프로덕션 장애를 예방하는 것이지, 프로덕션에서 실험하는 것이 아닙니다. 처음에는 프로덕션과 유사한 스테이징 환경에서 실행하고, 점차 범위를 넓혀가길 권장합니다.
3. 부하 테스트와는 다릅니다.
카오스 테스트는 장애 상황에서의 복구 동작을 검증하는 데 초점을 맞춥니다. 성능 병목을 찾는 부하 테스트와는 목적이 다르므로, 두 가지를 혼동하지 않는 것이 중요합니다.
4. AI 워크로드에 대한 확장은 아직 초기 단계입니다.
Azure는 AI 애플리케이션의 장애 모드(예: 검색 지연, 토큰 스로틀링)를 파악하기 위해 고객과 협력 중이며, 향후 카탈로그를 확장할 계획입니다. 현재는 기본 인프라 검증에 집중하는 것이 좋습니다.
5. 팀 문화와 운영 프로세스가 뒷받침되어야 합니다.
카오스 엔지니어링은 도구만으로 성공할 수 없습니다. 장애를 주입하는 것을 두려워하지 않고, 발견된 문제를 해결할 수 있는 팀 문화와 프로세스가 필수적입니다.
한국 개발 생태계에서의 적용 맥락
한국 기업들은 특히 금융, 통신, 게임 등 고가용성이 중요한 서비스에서 클라우드 도입을 확대하고 있습니다. 하지만 규제와 안정성에 대한 높은 기대치 때문에 카오스 엔지니어링을 실제 도입하는 사례는 아직 드뭅니다.
이런 상황에서 Azure Chaos Studio Workspaces는 비교적 안전하게 시작할 수 있는 옵션입니다. 관리형 서비스이기 때문에 인프라 관리 부담이 적고, 실제 장애 패턴을 기반으로 한 시나리오를 제공하므로 초기 진입 장벽이 낮습니다. 또한 드릴 리포트가 감사 증빙 자료로 활용될 수 있어, 내부 통제 요구사항이 있는 기업에서도 활용도가 높을 것으로 기대됩니다.
예를 들어, 국내 한 대형 이커머스 기업이 프로모션 기간 동안 발생할 수 있는 주문 폭주 상황을 대비해 Cache Stampede 시나리오를 활용한다면, Redis 캐시가 다운됐을 때 데이터베이스에 과부하가 걸리는 문제를 사전에 발견할 수 있을 것입니다.

결론: 복원력 검증을 개발 프로세스에 통합하세요
Azure Chaos Studio Workspaces는 단순한 장애 주입 도구 그 이상입니다. 실제 운영 환경에서 발생하는 장애 패턴을 학습한 시나리오를 제공하고, 실행 결과를 체계적으로 보고하여 팀이 복원력에 대한 신뢰를 쌓을 수 있게 돕습니다.
카오스 엔지니어링을 도입할 때는 다음 단계를 권장합니다.
- 작게 시작하세요: 가장 기본적인 'Zone Down' 시나리오를 실행하여 팀이 카오스 테스트에 익숙해지도록 하세요.
- 결과를 문서화하세요: 드릴 리포트를 팀과 공유하고, 발견된 문제를 우선순위에 따라 해결하세요.
- 지속적으로 실행하세요: 인프라가 변경될 때마다 워크스페이스의 추천 시나리오를 갱신하고, 정기적으로 드릴을 수행하세요.
- AI 운영에 확장하세요: GitHub Copilot Skill이나 MCP 서버를 활용하여 개발자 도구에서 바로 카오스 테스트를 실행할 수 있는 환경을 구축하세요.
이와 함께, 메타가 FFmpeg 포크를 포기하고 upstream에 올인한 이유에서 볼 수 있듯이, 복잡한 시스템을 운영할 때는 검증 가능한 데이터가 중요합니다. 카오스 엔지니어링도 마찬가지로, 증거 기반의 복원력 확보를 위한 첫 걸음입니다.
또한 넷플릭스의 ML 모델 수명주기 관리 사례에서도 알 수 있듯이, 대규모 시스템에서는 예상치 못한 장애에 대비하는 것이 얼마나 중요한지 알 수 있습니다. 이제 Azure Chaos Studio Workspaces를 통해 여러분의 애플리케이션도 실제 장애 상황에서 어떻게 동작하는지 미리 확인해보세요.
함께 보면 좋은 글
근거자료: Proving application resilience on Azure with Chaos Studio