
백엔드
풀필먼트 입고 서비스팀에서 분산락을 사용하는 방법 - Spring Redisson
두줄요약
풀필먼트 입고 서비스의 동시성 문제를 해결하기 위해 Redisson 기반 분산락을 적용한 사례를 소개했습니다. AOP와 어노테이션으로 락을 추상화하고 트랜잭션 커밋 이후 해제로 정합성을 보장했습니다.
핵심 내용
- 풀필먼트 입고 서비스의 여러 동시성 문제를 해결하기 위해 Redis 기반 Redisson 분산락 도입
- Redisson 선택 이유로 Lock interface 지원, Pub/Sub 기반 획득 방식, 기존 Redis 스택 활용성 강조
@DistributedLock어노테이션과 AOP로 락 처리 로직을 분리하고,waitTime,leaseTime, SpEL 기반 키를 유연하게 구성REQUIRES_NEW트랜잭션과 결합해 커밋 이후 락 해제로 데이터 정합성 보장
적용해볼 점
- 쿠폰 차감, 중복 발주 등록처럼 동시성에 취약한 기능에 분산락 적용 가능성 검토
- 비즈니스 로직과 락 처리 분리로 재사용성과 가독성 개선
- 락 해제 시점과 트랜잭션 경계가 정합성에 미치는 영향 점검
