Phase 6레슨 30
Chaos Engineering
Chaos Monkey, Fault Injection, Game Day — 장애를 의도적으로 일으켜 검증
💡ELI5·
소방 훈련과 Chaos Engineering
Chaos Engineering: 정상 운영 중 → 의도적 장애 주입 ├── 인스턴스 종료 (Chaos Monkey) ├── 네트워크 지연/분할 ├── DB 연결 끊기 ├── CPU/메모리 고갈 └── 의존 서비스 응답 지연 → 모니터링이 감지하는가? → 자동 복구가 동작하는가? → 사용자 영향이 있는가?
💡 비유 — 소방 훈련. 실제 화재가 나기 전에 가짜 화재를 내서 대피 경로, 소화기 사용, 알림 시스템을 점검. 진짜 화재 때 당황하지 않도록. Chaos Engineering은 시스템의 소방 훈련.
🔬Deep Dive·
Chaos 실험 설계
| 단계 | 내용 | 예시 |
|---|---|---|
| 가설 설정 | 정상 상태 가설 | 인스턴스 1개 종료 시 서비스 정상 유지 |
| 범위 설정 | 블라스트 반경 제한 | 단일 AZ, 1개 서비스 |
| 장애 주입 | 의도적 장애 | 인스턴스 종료, 네트워크 지연 |
| 관찰 | 모니터링/알림 확인 | 알림이 1분 내 발생? |
| 검증 | 가설 확인 | 서비스 정상? SLO 유지? |
| 복구 | 실험 종료 + 복구 | 인스턴스 자동 재시작? |
🔬Deep Dive·
장애 주입 유형
| 유형 | 도구 | 검증 항목 |
|---|---|---|
| 인스턴스 종료 | Chaos Monkey, AWS FIS | 자가 치유, Failover |
| 네트워크 지연/분할 | Chaos Mesh, Toxiproxy | Timeout, Retry, Circuit Breaker |
| DB 장애 | Chaos Mesh | Fallback, Cache 동작 |
| CPU/메모리 고갈 | StressNG | HPA, OOM 처리 |
| DNS 장애 | FIS | Fallback DNS, 캐싱 |
⚖️Trade-off·
Chaos Engineering의 Trade-off
| 이점 | 위험/대가 |
|---|---|
| 실제 장애 대응 능력 향상 | 프로덕션 영향 가능성 |
| 숨겨진 취약점 발견 | 실험 설계/실행 시간 |
| 복구 절차(런북) 검증 | 팀 교육 필요 |
| 신뢰성 문화 형성 | 초기에는 장애 빈번 가능 |
Chaos Engineering은 '장애를 만드는 것'이 아니라 '장애에 대한 준비 상태를 검증하는 것'이다. 모니터링과 자동 복구가 없는 상태에서 실행하면 위험하다.
❓ 체크포인트 질문
- 1.Chaos Engineering의 핵심 전제는?
- 2.Chaos Monkey가 Netflix에서 탄생한 배경은?
- 3.Game Day가 무엇이고 왜 유용한가?
- 4.Chaos Engineering을 프로덕션에서 안전하게 수행하는 조건은?
- 5.Chaos Engineering이 '장애 테스트'와 다른 점은?