Skip to content

Week3: redis lock 구현#3

Merged
oooo91 merged 1 commit intodevelopfrom
feature/idempotency-lock
Jan 19, 2026
Merged

Week3: redis lock 구현#3
oooo91 merged 1 commit intodevelopfrom
feature/idempotency-lock

Conversation

@oooo91
Copy link
Copy Markdown
Owner

@oooo91 oooo91 commented Jan 19, 2026

What

  • Redis 기반 Job 실행 lease lock 추가 (SET NX PX) (tryLock)
  • Lua script를 사용한 safe unlock 추가 (owner 검증 후 DEL) (unlock)
  • Job 실행 진입 지점(JobExecutionCoordinator)에 락 적용 (runOneWithLock)
  • 멀티스레드 동시성 테스트 추가 검증
    • 동일 Job에 대한 중복 실행 방지 검증
    • 동시 요청 상황에서 단일 실행만 수행됨을 확인

Why

  • 다중 요청 / 멀티스레드 환경에서 동일 Job이 중복 실행되는 문제를 방지하기 위함
  • DB CAS 만으로 커버되지 않는 실행 단계 동시성을 제어하여 Job 실행 정합성을 보장하기 위함
  • 향후 다중 Worker / 분산 환경 확장을 고려한 실제 운영 가능한 락 패턴을 적용하기 위함

How

  • Redis SET key value NX PX ttl 명령을 사용해 lease 기반 락 획득
  • 락 소유자 검증을 위해 Lua script로 unlock 처리
    • GET key == owner 인 경우에만 DEL
  • Job 실행 전 JobExecutionCoordinator에서 락 획득 후 실행
  • TTL 기반 자동 만료를 통해 Worker 장애 시 락 유실 방지
  • 멀티스레드 테스트를 통해 동시 요청 상황 재현 및 검증

Checklist

  • Redis lease lock 정상 획득/해제 확인
  • Lua script 기반 unlock 동작 검증
  • 동시 요청 시 Job 단일 실행 보장
  • 락 미획득 시 실행 스킵 동작 확인
  • 기존 Job 실행 로직 영향 없음 확인

Notes

  • 현재 workerId는 고정값 사용 (향후 host / pod 기반으로 변경 예정)
  • TTL 만료 후 재실행 정책은 추후 heartbeat 기반으로 확장 예정
  • Redis 장애 시 fallback 전략은 아직 포함되지 않음
  • Redisson 등 고수준 라이브러리 대신 락 동작 원리 학습 및 제어 목적으로 직접 구현

@oooo91 oooo91 self-assigned this Jan 19, 2026
@oooo91 oooo91 added the feature 기능 구현 label Jan 19, 2026
@oooo91 oooo91 merged commit 4682eac into develop Jan 19, 2026
oooo91 added a commit that referenced this pull request Feb 25, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature 기능 구현

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant