Rate Limiter 라이브러리 선택

상태

승인

후보군

방안설명
Resilience4jSpring Boot autoconfigure 지원, RateLimiter·CircuitBreaker를 단일 라이브러리로 제공, YAML 설정 외부화·Actuator 연동 기본 지원
Bucket4j토큰 버킷 알고리즘 직접 구현, CircuitBreaker는 별도 라이브러리 필요
직접 구현요구에 맞게 커스텀 가능하나 구현 비용 높고 Actuator 연동 불가

결정

Resilience4jio.github.resilience4j:resilience4j-spring-boot3 + resilience4j-kotlin 사용

결정 이유

  • Spring Boot autoconfigure(spring-boot-starter-resilience4j)로 별도 설정 없이 통합 가능
  • CircuitBreaker를 동일 라이브러리에서 제공해 중복 의존성 없이 조합 가능
  • YAML 설정 외부화 및 Actuator 연동(/actuator/circuitbreakerevents) 기본 지원
  • Kotlin 확장 함수(resilience4j-kotlin)로 람다 래핑이 간결

검토 대안

방안기각 이유
Bucket4jCircuitBreaker 별도 도입 필요, 기존 Resilience4j와 중복
직접 구현구현 비용 높음, Actuator 연동 불가, 유지보수 부담

트레이드 오프

  • 득: 단일 라이브러리로 RateLimiter·CircuitBreaker 동시 해결, YAML 외부화·Actuator 모니터링 포함
  • 실: Resilience4j 버전 업그레이드 시 API 변경 가능성 존재