shared-rate-limiter

Spring 요청 제한 라이브러리

개인 웹사이트와 Maechuri에서 사용할 요청 제한 로직을 라이브러리로 분리

구현

  • Spring MVC와 WebFlux용으로 각각 배포
  • 경로별 허용 요청 수와 기간 설정
  • 사용자 식별 방식은 서비스별 구현체를 주입
  • 제한 상태는 각 서버의 메모리에 저장

IP 식별

  • 전달 헤더가 IP 주소 형식이면 사용하고, 아니면 socket 주소 사용
  • IP 형식 검증만으로 위조 여부를 판단할 수 없는 문제
  • proxy를 거치지 않고 origin에 직접 접근할 수 있으면 전달 헤더 위조 가능. 이 조건과 방어 전제를 문서화

적용

  • yunseong.dev: 요청 제한
  • Maechuri: 외부 AI API 호출 제한

Spring MVC · Spring WebFlux