Skip to content

fix: 채팅 도배 제한 초당 기준 4/sec로 조정#144

Open
parkjuyeong0312 wants to merge 3 commits into
devfrom
fix/chat-rate-limit-tighten-threshold
Open

fix: 채팅 도배 제한 초당 기준 4/sec로 조정#144
parkjuyeong0312 wants to merge 3 commits into
devfrom
fix/chat-rate-limit-tighten-threshold

Conversation

@parkjuyeong0312

@parkjuyeong0312 parkjuyeong0312 commented Jun 15, 2026

Copy link
Copy Markdown
Member

변경 내용

  • app.rate-limit.policies.chat.limits[0].capacity5 → 4로 조정 (/chat, /place STOMP 메시지 사용자별 초당 제한).
  • docs/ai/features.md의 채팅 도배 방지 정책 설명을 4/sec + 60/min으로 갱신.
  • docs/ai/erd.md Redis 키 표의 rate-limit:stomp:chat:user:{userId} 설명을 4/sec + 60/min/user로 갱신.
  • 기존 테스트(MessageRateLimiterTest, HttpRateLimitPolicyResolverTest, Bucket4jRateLimitServiceTest)의 기대 bandwidth를 4로 정합.
  • RateLimitPropertiesTest 추가: application.yaml을 실제로 바인딩해서 기본 채팅 정책이 4/sec + 60/min인지 회귀 검증.

변경 이유

  • 운영 중 5/sec 한도가 짧은 시간 폭주 시 도배 체감을 충분히 줄이지 못해, 초당 기준을 한 단계 좁힌다.
  • 분당 60건 한도(60/min)는 유지하여 누적 도배 차단 효과는 변함 없도록 한다.
  • 정책 변경이 코드/문서 어느 한쪽만 갱신된 채 흘러가지 않도록, 기본 정책 바인딩을 검증하는 회귀 테스트를 함께 추가한다.

테스트

  • ./gradlew test --tests "*RateLimitPropertiesTest" --tests "*MessageRateLimiterTest" --tests "*HttpRateLimitPolicyResolverTest" --tests "*Bucket4jRateLimitServiceTest" (로컬)
  • /review-code-against-docs 스킬로 검증 — 이슈 없음
  • 그 외 수동 검증:

체크리스트

  • PR 제목이 커밋 컨벤션 형식을 따른다.
  • 변경 사유를 PR 설명에 기록했다.
  • 테스트 방법과 결과를 기록했다.
  • 문서 변경이 필요한 경우 반영했다. (features.md, erd.md)

하네스 변경 체크리스트

  • CLAUDE.md(AGENTS.md) 변경이 포함되어 있는가? — 해당 없음
  • 변경 사유가 PR 설명에 기록되어 있는가? — 해당 없음
  • 기존 규칙과 충돌하지 않는가? — 해당 없음
  • 팀원에게 변경 사항을 공유했는가? — 해당 없음

Summary by CodeRabbit

릴리스 노트

  • Documentation

    • 채팅 메시지 도배 방지 정책의 초당 한도를 4/sec + 60/min으로 업데이트했습니다.
  • Tests

    • 레이트 제한 설정 검증을 위한 새로운 테스트를 추가했습니다.
    • 기존 테스트를 업데이트된 한도에 맞춰 수정했습니다.
  • Chores

    • 채팅 메시지 레이트 제한 설정값을 조정했습니다.

@coderabbitai

coderabbitai Bot commented Jun 15, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 6426fb9d-29d1-4ebc-bfb8-175f9a1c73fe

📥 Commits

Reviewing files that changed from the base of the PR and between 20c6c8f and 8e74a82.

📒 Files selected for processing (7)
  • docs/ai/erd.md
  • docs/ai/features.md
  • src/main/resources/application.yaml
  • src/test/java/com/howaboutus/backend/common/config/properties/RateLimitPropertiesTest.java
  • src/test/java/com/howaboutus/backend/common/ratelimit/Bucket4jRateLimitServiceTest.java
  • src/test/java/com/howaboutus/backend/common/ratelimit/HttpRateLimitPolicyResolverTest.java
  • src/test/java/com/howaboutus/backend/messages/service/MessageRateLimiterTest.java

📝 Walkthrough

Walkthrough

채팅 STOMP 메시지의 초당 rate limit 토큰 버킷 용량을 5에서 4로 하향 조정한다. application.yaml 설정, ERD·기능 명세 문서, 그리고 관련된 테스트 파일들의 기대값이 일괄 수정되며, 새로운 프로퍼티 바인딩 검증 테스트가 추가된다.

Changes

채팅 rate limit 초당 한도 조정

Layer / File(s) Summary
설정 및 문서 4/sec 반영
src/main/resources/application.yaml, docs/ai/erd.md, docs/ai/features.md
app.rate-limit.policies.chat.limits.capacity를 5→4로 변경하고, ERD 및 기능 명세 문서의 rate limit 표기를 4/sec + 60/min/user로 수정한다.
테스트 기대값 갱신 및 신규 바인딩 테스트 추가
src/test/java/.../RateLimitPropertiesTest.java, src/test/java/.../Bucket4jRateLimitServiceTest.java, src/test/java/.../HttpRateLimitPolicyResolverTest.java, src/test/java/.../MessageRateLimiterTest.java
기존 테스트 3곳의 RateLimitBandwidth 기대값을 5→4로 갱신하고, application.yaml에서 app.rate-limit을 바인딩해 chat 정책이 정확히 4/sec+60/min 두 항목으로 구성되는지 검증하는 RateLimitPropertiesTest를 신규 추가한다.

예상 코드 리뷰 노력

🎯 1 (Trivial) | ⏱️ ~5 minutes

Suggested labels

backend, test

Poem

🐇 토큰 하나 줄였지만, 평화가 왔네
초당 넷이면 충분해, 도배는 안 돼요
Redis 버킷 조용히 세며 고개를 끄덕
문서도 테스트도 모두 4를 가리켜요
깡충깡충, 안전한 채팅 세상! 🎉

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목이 변경의 핵심을 명확하게 요약하고 있습니다: 채팅 도배 제한 기준을 4/sec로 조정하는 것이 주요 변경 사항입니다.
Description check ✅ Passed PR 설명이 템플릿의 모든 필수 섹션을 포함하고 있으며, 변경 내용, 변경 이유, 테스트 방법, 체크리스트가 완벽하게 작성되어 있습니다.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sonarqubecloud

Copy link
Copy Markdown

@parkjuyeong0312 parkjuyeong0312 linked an issue Jun 16, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix : 채팅도배기능 미작동 원인 파악 및 해결

1 participant