Rate Limiter 라이브러리 선택
상태
승인
후보군
| 방안 | 설명 |
|---|---|
| Resilience4j | Spring Boot autoconfigure 지원, RateLimiter·CircuitBreaker를 단일 라이브러리로 제공, YAML 설정 외부화·Actuator 연동 기본 지원 |
| Bucket4j | 토큰 버킷 알고리즘 직접 구현, CircuitBreaker는 별도 라이브러리 필요 |
| 직접 구현 | 요구에 맞게 커스텀 가능하나 구현 비용 높고 Actuator 연동 불가 |
결정
Resilience4j — io.github.resilience4j:resilience4j-spring-boot3 + resilience4j-kotlin 사용
결정 이유
- Spring Boot autoconfigure(
spring-boot-starter-resilience4j)로 별도 설정 없이 통합 가능 - CircuitBreaker를 동일 라이브러리에서 제공해 중복 의존성 없이 조합 가능
- YAML 설정 외부화 및 Actuator 연동(
/actuator/circuitbreakerevents) 기본 지원 - Kotlin 확장 함수(
resilience4j-kotlin)로 람다 래핑이 간결
검토 대안
| 방안 | 기각 이유 |
|---|---|
| Bucket4j | CircuitBreaker 별도 도입 필요, 기존 Resilience4j와 중복 |
| 직접 구현 | 구현 비용 높음, Actuator 연동 불가, 유지보수 부담 |
트레이드 오프
- 득: 단일 라이브러리로 RateLimiter·CircuitBreaker 동시 해결, YAML 외부화·Actuator 모니터링 포함
- 실: Resilience4j 버전 업그레이드 시 API 변경 가능성 존재