카오스 엔지니어링(Chaos Engineering)은 프로덕션 시스템에 의도적인 장애를 주입해 시스템의 복원력을 검증하는 실험 방법론이다. Netflix가 Chaos Monkey를 개발해 이 개념을 대중화했으며 "안전한 실패"를 추구한다.
카오스 원칙
1. 정상 상태 가설 정의 (SLO, 에러율, 응답시간)
2. 가설: "X가 실패해도 시스템은 정상 동작한다"
3. 실험 변수 도입 (장애 주입)
4. 결과 관찰 및 가설 검증
5. 자동화 및 지속 실행
yaml
# 네트워크 지연 주입
apiVersion: chaos-mesh.org/v1alpha1
kind: NetworkChaos
metadata:
name: payment-service-latency
spec:
action: delay
mode: one
selector:
namespaces:
- production
labelSelectors:
app: payment-service
delay:
latency: "100ms"
jitter: "50ms"
duration: "5m"
---
# Pod 임의 종료
apiVersion: chaos-mesh.org/v1alpha1
kind: PodChaos
metadata:
name: random-pod-kill
spec:
action: pod-kill
mode: random-max-percent
value: "20"
selector:
namespaces: [production]
labelSelectors:
tier: frontend
scheduler:
cron: "@every 30m"
장애 유형
| 유형 | 예시 |
|---|
| 인프라 | 인스턴스 종료, 가용 영역 장애 |
| 네트워크 | 지연, 패킷 손실, 파티셔닝 |
| 애플리케이션 | CPU/메모리 부하, 프로세스 종료 |
| 의존성 | 외부 서비스 타임아웃, 오류 응답 |
관련 개념