Load Test Orchestrator - Redis Fault Validation
핵심 질문: 부하 테스트 중 Redis 장애를 주입하고, 장애 효과와 복구 상태를 자동화된 시나리오 안에서 검증할 수 있는가?
시리즈: Reliability & Operations
1. Observability System
2. SLO 기반 운영 사양 산정
3. Realtime Degraded Mode
4. Auto Recovery & Scale-out
5. Load Test Orchestrator
Summary
| 항목 | 결과 |
|---|---|
| Terraform apply | AWS 리소스 생성 및 output 변수 치환 |
| WebSocket load | 50 VU, 약 90초 |
| Redis fault | AWS SSM으로 stop/start 실행 |
| SSM validation | command-id 기반 Success polling |
| v2 fault scenario | sent 약 26,988 / received 약 34,020 / errors 0 |
| v3 baseline | sent 26,990 / received 89,564 / errors 0 |
| 차이 | baseline received가 약 2.6배 많음 |
검증 시나리오
기존 방식은 사람이 직접 Terraform output을 확인하고, k6를 실행하고, Redis 장애를 주입하고, health를 확인해야 했다.
오케스트레이터는 이 흐름을 시나리오로 묶었다.
Terraform apply
-> output 조회 및 변수 치환
-> app1/app2 health check
-> k6 WebSocket load
-> AWS SSM Redis stop
-> SSM command Success polling
-> AWS SSM Redis start
-> recovery health check
-> result comparison
v2: Redis 장애 주입
WebSocket 부하가 진행되는 동안 Redis stop/start를 실행했다.
| 항목 | 결과 |
|---|---|
| WebSocket sent | 약 26,988 |
| WebSocket received | 약 34,020 |
| WebSocket errors | 0 |
| Redis stop | SSM command Success |
| Redis start | SSM command Success |
| Recovery health | Redis 복구 후 503에서 200으로 회복 |
해석:
- WebSocket 연결 자체는 유지되었다.
- Redis Pub/Sub fanout이 끊기면서 수신 메시지 수가 감소했다.
- Redis stop/start가 실제로 실행됐는지 SSM command result로 확인했다.
v3: 장애 없는 Baseline
동일한 WebSocket 부하를 Redis 장애 없이 실행했다.
duration: 90.47s
open: 50 / close: 50 / errors: 0
sent: 26990 / received: 89564
sent/s: 298.33 / recv/s: 989.98
connect(ms) avg=291.8 p95=454.3 p99=462.5
비교
| 항목 | v2 Redis fault | v3 baseline | 해석 |
|---|---|---|---|
| sent | 약 26,988 | 26,990 | 거의 동일한 송신 부하 |
| received | 약 34,020 | 89,564 | baseline이 약 2.6배 많음 |
| errors | 0 | 0 | 연결 안정성은 양쪽 모두 유지 |
이번 결과는 Redis 장애가 WebSocket 연결을 즉시 끊는 형태가 아니라, 연결은 유지되지만 Pub/Sub fanout 수신량이 감소하는 형태로 나타난다는 점을 보여준다.
오케스트레이터의 의미
이 검증은 단순 k6 실행 결과가 아니다.
오케스트레이터가 다음을 자동화했다.
- 인프라 생성
- Terraform output 변수 치환
- 사전 health check
- WebSocket 부하 실행
- Redis 장애 주입
- SSM command 성공 확인
- 복구 health check
- 장애군/baseline 비교
따라서 이 프로젝트는 부하 테스트 실행기가 아니라, 백엔드 운영 환경의 장애와 복구를 재현하는 검증 워크플로우 도구에 가깝다.