핵심요약
이구위크 행사 중 발생한 Redis 네트워크 대역폭 병목 현상으로 인한 장애를 상세히 분석하고 해결 과정을 공유합니다. 장애 원인은 AWS 버스트 크레딧 소진으로 인한 네트워크 Throttling이었으며, Redis 노드 스케일업과 함께 캐시 계층화 및 모니터링 강화를 통해 재발 방지 대책을 마련했습니다.
이구위크 전시 장애 대응기: Redis 네트워크 대역폭 병목 해결
1. 장애 발생 및 초기 진단
- 상황: 이구위크 행사 시작 직후 주요 상품 전시 화면 서버 다운 및 Netty 이벤트 루프 포화 발생
- 초기 진단: 트래픽 증가로 인한 다운스트림 지연 또는 이벤트 루프 처리 지연에 초점, Redis 메트릭은 정상 범위로 판단
2. Redis 네트워크 대역폭 병목 발견
- 단서: Redis 헬스체크 실패 로그 확인 후 네트워크 지표 재확인
- 원인:
- 사용 중인 Redis 노드(
cache.r7g.large)의 기본 네트워크 대역폭(0.937Gbps) 초과 - 피크 시점 트래픽 2.0Gbps(평소 4배) 발생으로 AWS 버스트(Burst) 기능의 버스트 크레딧(Burst Credit) 고갈
- 크레딧 소진 후 네트워크 Throttling 시작, Redis 응답 지연 및 커넥션 실패 폭증
- 사용 중인 Redis 노드(
- 결과: 애플리케이션 Readiness Probe 실패, 다수 파드 다운
3. 장애 대응 및 즉시 조치
- 조치: Redis 노드 스케일업 (
cache.r7g.large→cache.r7g.2xlarge, 기본 대역폭 2배 증가) - 해결: 서비스 장애 당일 해소
4. 재발 방지를 위한 개선 작업
- 4.1 모니터링 강화:
- 네트워크 In/Out 대역폭 초과 여부 실시간 확인 가능한 모니터링 대시보드 구축
- 주요 지표:
network_bytes_in/out,network_bandwidth_in/out_allowance_exceeded,traffic_management_active - Datadog Alert 연동으로 임계치 초과 시 즉시 알림 설정
- 4.2 캐시 전략 변경 (캐시 계층화):
- Caffeine (Local Cache) 도입: 응답 빈도 낮은 데이터 로컬 메모리에서 우선 처리
- 구조: Caffeine → Redis (Remote Cache) → DB 계층화
- 효과: Redis 네트워크 부하 완화, 응답 안정성 증대
- 지표 확인: Redis Command Count 및 Outgoing Bytes 감소 확인
5. 장기 개선 과제
- 5.1 캐시 데이터 최적화: Snappy 압축 + protobuf 형식 전환 검토 (용량 약 73% 절감 예상)