-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Labels
featureImplement new features or introduce new technologies.Implement new features or introduce new technologies.
Description
Description
Please describe the feature to be implemented.
현재 CouponIssueConsumer는 트래픽 제어를 위해 Redis 기반의 RRateLimiter를 사용하고 있습니다. 하지만 rateLimiter.acquire(1) 로직이 Redis에 강하게 결합되어 있어, 다음과 같은 문제점이 예상됩니다.
- SPOF: Redis 서버 장애/지연 시 Consumer 스레드가 블로킹되거나 예외가 발생하여, 정상적인 쿠폰 발급 로직까지 마비됨.
- 장애 전파: Redis 타임아웃으로 인해 Kafka의
max.poll.interval.ms를 초과할 경우, 리밸런싱이 빈번하게 발생하여 전체 처리량이 급감할 위험이 있음.
이를 해결하기 위해 Resilience4j CircuitBreaker를 도입하여 Redis 장애 시 시스템을 보호하고, Local Rate Limiter를 Fallback으로 적용하여 최소한의 트래픽 제어를 유지한 채 가용성을 확보하고자 합니다.
- AS-IS: Redis 장애 시 acquire() 실패 -> Consumer 중단 또는 무한 에러 로그
- TO-BE: Redis 장애 감지 시 Circuit Open -> Local Rate Limiter(Resilience4j) 로 자동 전환하여 처리 지속
Tasks
-
build.gradle에 Resilience4j 의존성 추가 - Redis RateLimiter 호출 구간을 감싸는 AOP 기반 서킷 브레이커 적용
- 서킷 오픈 시 실행될 Fallback 메서드 구현
- Redis 장애 상황을 가정한 테스트 및 Fallback 동작 검증
Estimated Time
- Minimum: 4-5H
Reference
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
featureImplement new features or introduce new technologies.Implement new features or introduce new technologies.