카오스 엔지니어링(Chaos Engineering)은 프로덕션 시스템에 의도적으로 장애를 주입하여 시스템의 취약점을 사전에 발견하고 회복탄력성(Resilience)을 강화하는 실험적 방법론입니다. Netflix의 Simian Army에서 시작되어 현재 SRE의 핵심 실천으로 자리 잡았습니다.
1. 카오스 엔지니어링 개념
1-1. 정의 및 원칙 (Principles of Chaos Engineering)
정상 상태 행동 정의: 측정 가능한 시스템 정상 행동 지표(가용성·응답시간·처리량) 설정
가설 수립: 실험군과 대조군이 동일한 정상 상태를 유지할 것이라고 가설 설정
실제 장애 이벤트 시뮬레이션: 실제 장애를 반영하는 현실적인 혼돈 변수 도입
프로덕션 실험: 가능한 한 프로덕션 환경에서 실험 수행
폭발 반경 최소화: 실험 범위를 제한하여 영향을 통제
가설 수립: 실험군과 대조군이 동일한 정상 상태를 유지할 것이라고 가설 설정
실제 장애 이벤트 시뮬레이션: 실제 장애를 반영하는 현실적인 혼돈 변수 도입
프로덕션 실험: 가능한 한 프로덕션 환경에서 실험 수행
폭발 반경 최소화: 실험 범위를 제한하여 영향을 통제
2. Netflix Simian Army
| 도구 | 역할 |
|---|---|
| Chaos Monkey | 랜덤하게 인스턴스(서버) 종료 — 단일 서버 장애 복구 검증 |
| Chaos Gorilla | AWS 가용 영역(AZ) 전체 장애 시뮬레이션 |
| Chaos Kong | AWS 리전 전체 장애 시뮬레이션 |
| Latency Monkey | 서비스 간 인위적 지연 주입 — 타임아웃·서킷 브레이커 검증 |
| Conformity Monkey | 모범 사례 미준수 인스턴스 탐지·종료 |
| Security Monkey | 보안 정책 위반 인스턴스 탐지 |
3. 카오스 엔지니어링 실험 유형
3-1. 장애 주입 범주
| 범주 | 예시 | 검증 대상 |
|---|---|---|
| 인프라 장애 | 서버 강제 종료, 디스크 꽉 참, OOM | 자동 복구·헬스 체크 |
| 네트워크 장애 | 패킷 손실, 지연 주입, 파티션 분리 | 서킷 브레이커·재시도 정책 |
| 의존성 장애 | 외부 API 타임아웃, DB 연결 끊김 | 폴백·Graceful Degradation |
| 자원 고갈 | CPU/메모리 스트레스, 스레드 고갈 | 오토스케일링·쓰로틀링 |
| 상태 장애 | 데이터 부패, 캐시 무효화 | 데이터 일관성·복구 |
4. GameDay & 카오스 실험 프로세스
4-1. 실험 절차
- 1단계: 가설 수립 — “서버 A가 다운돼도 P99 응답시간이 200ms 이내를 유지한다”
- 2단계: 측정 지표 설정 — 가용성·응답시간·오류율·처리량 메트릭 정의
- 3단계: 범위 결정 — 폭발 반경(Blast Radius) 최소화 (특정 % 트래픽만)
- 4단계: 장애 주입 — 자동화 도구(Gremlin·LitmusChaos·ChaosBlade)로 실행
- 5단계: 관찰·분석 — 가설 검증, 취약점 식별
- 6단계: 자동화·반복 — CI/CD 파이프라인에 통합, 정기 실행
5. 회복탄력성 설계 패턴
| 패턴 | 설명 | 구현 |
|---|---|---|
| 서킷 브레이커 | 반복 실패 시 빠른 실패로 전환 | Resilience4j, Hystrix |
| 재시도(Retry) | 지수 백오프 + Jitter로 재시도 | Polly, AWS SDK 내장 |
| 타임아웃 | 무한 대기 방지, 적절한 타임아웃 설정 | 서비스 SLO 기반 설정 |
| Bulkhead | 스레드풀·리소스를 격리하여 장애 전파 방지 | 스레드풀 분리, K8s ResourceQuota |
| Graceful Degradation | 핵심 기능 유지, 비핵심 기능만 비활성화 | Feature Flag, 캐시 폴백 |
6. 카오스 엔지니어링 도구 비교
| 도구 | 특징 | 대상 환경 |
|---|---|---|
| Gremlin | SaaS형, GUI 기반, 엔터프라이즈 기능 | 온프레미스·클라우드·K8s |
| LitmusChaos | CNCF 프로젝트, K8s 네이티브 | Kubernetes 중심 |
| ChaosBlade | Alibaba 오픈소스, 다양한 장애 유형 | K8s·JVM·OS·네트워크 |
| AWS FIS | AWS Fault Injection Simulator, 네이티브 통합 | AWS 서비스 전용 |
7. 결론
카오스 엔지니어링은 ‘장애는 피할 수 없다’는 전제하에 시스템의 취약점을 능동적으로 발견하는 실험 문화입니다. 폭발 반경을 최소화하며 단계적으로 시작(개발→스테이징→프로덕션)하고, 서킷 브레이커·Bulkhead·Graceful Degradation 패턴으로 회복탄력성을 높이는 것이 SRE의 핵심 역량입니다.