Skip to content

feat: 이벤트 시간 12시~2시로 변경 및 rate Limit 도입#119

Merged
wlgns12370 merged 1 commit intomainfrom
feat/#118
Mar 17, 2026
Merged

feat: 이벤트 시간 12시~2시로 변경 및 rate Limit 도입#119
wlgns12370 merged 1 commit intomainfrom
feat/#118

Conversation

@wlgns12370
Copy link
Contributor

@wlgns12370 wlgns12370 commented Mar 17, 2026

✨ 구현한 기능

Summary by CodeRabbit

릴리스 노트

  • 새 기능
    • 좋아요 요청에 대한 속도 제한 기능 추가로 과도한 좋아요 방지
    • 시간대별 특정 기간 동안 활성화되는 보너스 이벤트 기능 구현
    • 환경 변수를 통한 좋아요 기능 설정 관리 추가 (최대 요청 수, 이벤트 시간)

@coderabbitai
Copy link

coderabbitai bot commented Mar 17, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: baa1666d-e21e-46ad-a75d-05ef88c45eac

📥 Commits

Reviewing files that changed from the base of the PR and between 85ab2ea and eeafc5f.

📒 Files selected for processing (7)
  • src/main/java/kr/co/knuserver/application/booth/BoothLikeService.java
  • src/main/java/kr/co/knuserver/global/config/FilterConfig.java
  • src/main/java/kr/co/knuserver/global/config/LikeProperties.java
  • src/main/java/kr/co/knuserver/global/filter/LikeRateLimitFilter.java
  • src/main/java/kr/co/knuserver/global/property/PropertiesConfig.java
  • src/main/java/kr/co/knuserver/global/ratelimit/LikeRateLimiter.java
  • src/main/resources/application.yml

📝 Walkthrough

Walkthrough

Rate limiting 기능을 구현하기 위해 Redis 기반의 속도 제한 메커니즘을 도입하고, 설정을 LikeProperties로 통합하며, 새로운 필터와 컴포넌트를 추가합니다.

Changes

코호트 / 파일 요약
설정 속성 통합
src/main/java/kr/co/knuserver/application/booth/BoothLikeService.java, src/main/java/kr/co/knuserver/global/config/LikeProperties.java, src/main/java/kr/co/knuserver/global/property/PropertiesConfig.java
여러 개의 @Value 필드를 단일 LikeProperties 객체로 통합하고, 속도 제한 TTL 및 이중 이벤트 설정을 구조화된 형태로 관리합니다.
속도 제한 구현
src/main/java/kr/co/knuserver/global/ratelimit/LikeRateLimiter.java, src/main/java/kr/co/knuserver/global/filter/LikeRateLimitFilter.java, src/main/java/kr/co/knuserver/global/config/FilterConfig.java
Redis 기반의 클라이언트-기기별 속도 제한 로직을 추가하고, 필터 체인에 새로운 LikeRateLimitFilter를 등록합니다.
설정 파일 업데이트
src/main/resources/application.yml
like.rate-limit과 like.double-event 관련 설정 속성을 추가합니다.

Sequence Diagram(s)

sequenceDiagram
    participant Client as 클라이언트
    participant Filter as LikeRateLimitFilter
    participant Limiter as LikeRateLimiter
    participant Redis as Redis
    participant Service as BoothLikeService

    Client->>Filter: POST /booths/{id}/likes
    Filter->>Filter: 클라이언트 IP & 기기ID 추출
    Filter->>Limiter: isAllowed(clientIp, deviceId)
    Limiter->>Redis: 현재 count 확인<br/>(like:rate:IP:deviceId)
    Redis-->>Limiter: count 값 반환
    
    alt count >= maxLikes
        Limiter-->>Filter: false (제한됨)
        Filter->>Filter: 429 응답 생성
        Filter-->>Client: HTTP 429<br/>TOO_MANY_REQUESTS
    else count < maxLikes
        Limiter->>Redis: count 증가
        alt 첫 증가인 경우
            Limiter->>Redis: TTL 설정 (10분)
        end
        Limiter-->>Filter: true (허용)
        Filter->>Service: 필터 체인 계속
        Service-->>Client: 좋아요 처리 완료
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • #112: BoothLikeService의 이중 이벤트 관련 로직 구현과 직접 연관되어 있습니다.
  • #91: 좋아요 기능의 기초가 되는 BoothLikeService 도입과 관련이 있습니다.

Suggested labels

Ship

Poem

🐰 빨간 깃 위에 rate limit을 놓으니,
Redis 창고에 요청을 차곡차곡 담네.
너무 많은 좋아요는 429로 막고,
시간마다 초기화되는 우아한 흐름이여!
한 발씩 걷는 토끼처럼,
안정된 서버의 발걸음이 된다네. 🌟

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/#118
📝 Coding Plan
  • Generate coding plan for human review comments

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.

Tip

CodeRabbit can enforce grammar and style rules using `languagetool`.

Configure the reviews.tools.languagetool setting to enable/disable rules and categories. Refer to the LanguageTool Community to learn more.

@wlgns12370 wlgns12370 merged commit e0b6243 into main Mar 17, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[🛠 기능 구현] rate limit 구현

1 participant