Spring Redisson으로 분산 락, 이제 쉽게!
by DD
3년 전
조회수 0
RMS에서 발생하는 동시성 문제 해결을 위해 분산 락 도입
Redisson 라이브러리를 선택, Lock interface 지원 및 Pub/Sub 방식 활용
AOP를 이용한 어노테이션 기반 분산 락 컴포넌트 구현 및 테스트
Redisson 분산 락 아키텍처
Redisson은 Redis를 기반으로 분산 락을 구현하며, Lock interface를 제공하여 락 획득 및 해제를 쉽게 관리한다. 구체적으로 Pub/Sub 방식을 통해 락 획득 시도를 효율적으로 처리한다. 따라서 동시성 문제를 해결하고 안정적인 서비스 운영을 가능하게 한다.
Lettuce vs Redisson: 트레이드오프 분석
Lettuce는 setnx, setex 명령어를 직접 사용하여 분산 락을 구현해야 하므로, 개발자가 retry, timeout 로직을 직접 구현해야 한다. 반면 Redisson은 Lock interface를 제공하여 락 관련 설정을 간편하게 관리할 수 있다. 따라서 개발 생산성을 높이고 락 관리의 안정성을 확보한다.
AOP 기반 분산 락 컴포넌트 설계
AOP를 활용하여 비즈니스 로직과 분산 락 로직을 분리하고, @DistributedLock 어노테이션을 통해 락을 적용한다. 구체적으로 CustomSpringELParser를 사용하여 동적으로 락 키를 생성하고, waitTime, leaseTime을 설정한다. 결과적으로 코드 중복 감소와 유지보수성 향상을 달성한다.