Rails 7.2에서는 rate_limit
를 통해 컨트롤러당 단일 요청 제한만 설정할 수 있어 유연성이 부족했습니다. 이는 특정 액션에 대한 단일 제한 외에는 다양한 시나리오에 대응하기 어려웠습니다.
Rails 8은 name:
파라미터를 도입하여 이 문제를 해결했습니다. 이제 개발자는 동일한 컨트롤러 내에서 여러 요청 제한 전략을 정의할 수 있습니다. 예를 들어, create
액션에 대해 단기적인 burst_control
과 장기적인 hourly_limit
를 동시에 적용할 수 있으며, destroy
액션에는 더욱 엄격한 delete_limit
를 설정할 수 있습니다.
이 다중 요청 제한 기능은 API 컨트롤러와 같은 실제 환경에서 매우 유용합니다. search
액션에 분당 및 일일 제한을 함께 적용하거나, generate_report
와 같은 리소스 집약적인 작업에 엄격한 시간당 제한을 두는 등, 세분화된 요청 제어가 가능해졌습니다. 이러한 개선은 Rails 8 이전에는 별도 컨트롤러나 외부 Gem이 필요했던 복잡성을 해소하여 개발 효율성을 높입니다. 기술적으로는 name:
파라미터가 캐시 키에 포함되어 각 요청 제한이 고유한 키를 가지게 됨으로써 다중 제한이 가능해졌습니다.