Skip to content

feat: Redis Circuit Breaker를 통한 장애 구간 지연 개선 - #18

Merged
KimGyeongLock merged 3 commits into
mainfrom
feat/redis-circuit-breaker
Aug 7, 2026
Merged

feat: Redis Circuit Breaker를 통한 장애 구간 지연 개선#18
KimGyeongLock merged 3 commits into
mainfrom
feat/redis-circuit-breaker

Conversation

@KimGyeongLock

Copy link
Copy Markdown
Member

변경 사항

  • Redis GET 경로에 Resilience4j Circuit Breaker 적용
  • Redis 장애 반복 시 OPEN 상태에서 Redis 호출 차단
  • Circuit OPEN 시 MySQL Fallback 유지
  • HALF_OPEN을 통한 Redis 복구 확인 및 Cache Aside 자동 복귀
  • Circuit Breaker Rejected Metric 추가
  • Redis 장애 전후 Grafana 지표 비교

Circuit Breaker 설정

  • Sliding Window: 10건
  • Minimum Calls: 5건
  • Failure Rate Threshold: 50%
  • OPEN 유지 시간: 5초
  • HALF_OPEN 시험 호출: 3건
  • Redis Timeout: 200ms

장애 실험

100 VU, 120초 조건에서 Redis를 30초간 중단했다.

Fallback only

  • 장애 중 모든 요청이 Redis Timeout 이후 MySQL로 Fallback
  • 요청 실패율 0%
  • 장애 구간 p95 약 200ms

Circuit Breaker 적용

  • Redis 장애 감지 후 Circuit OPEN
  • OPEN 이후 Redis 호출을 생략하고 즉시 MySQL Fallback
  • 요청 실패율 0%
  • 장애 구간 p95 약 20~30ms
  • Redis 복구 후 Cache Aside 경로 자동 복귀

결과

Fallback을 통해 Redis 장애 중 기능 가용성을 유지하고,
Circuit Breaker를 추가해 반복적인 Redis Timeout 비용을 줄였다.

한계

  • Redis 자체는 여전히 단일 인스턴스
  • 로컬 Docker 환경에서 장애를 재현
  • Circuit Breaker는 Redis 장애 자체를 복구하는 것이 아니라
    장애 중 반복 호출을 차단하는 역할

@KimGyeongLock
KimGyeongLock merged commit 85e3c15 into main Aug 7, 2026
2 checks passed
@KimGyeongLock
KimGyeongLock deleted the feat/redis-circuit-breaker branch August 7, 2026 08:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant