
백엔드
Redis Lettuce로 구현하는 안전한 분산 락 — 실시간 정합성 보장
두줄요약
룰렛 프로모션의 동시성 문제를 막기 위해 Redis Lettuce 기반 분산 락 구현 방식을 소개했습니다. 대기열 순서 보장과 TTL, 소유권 확인으로 실시간 정합성을 확보했습니다.
문제 상황
- 룰렛 프로모션 동시 참여로 인한 중복 당첨과 데이터 정합성 문제
- 동일 고객의 반복 요청으로 발생할 수 있는 불공정 처리와 시스템 오류 위험
원인 분석
- 분산 환경에서 공유 리소스 접근 동기화 부재
- 락 생성과 해제의 원자성, 소유권 확인, 만료 처리 미흡 시 문제 발생
해결 방법
- Redis SET NX EX로 원자적 락 생성과 TTL 설정
- 락 소유자만 해제하도록 clientId 검증
- Sorted Set을 대기열로 사용해 참여 순서 관리와 만료 항목 정리
적용해볼 점
- 실시간 이벤트에서 중복 처리 방지용 분산 락 설계
- TTL 기반 deadlock 방지와 대기열 순서 보장 패턴 적용
- Lettuce처럼 기본 기능 중심 클라이언트로 직접 제어하는 방식 검토
