Redis Lock 도입 배경

남기은·2025년 11월 27일

동시성 제어

목록 보기
4/7

비관적 락 — DB에 집중되는 부하

비관적 락은 하나의 트랜잭션이 특정 레코드에 접근할 때 X-Lock(배타 락, Exclusive Lock)을 걸어,

조회 시점부터 커밋 시점까지 다른 트랜잭션이 해당 레코드에 접근하지 못하도록 막는 방식이다.

이 방식은 데이터 무결성을 보장하는 데 효과적이지만, 요청이 몰리는 환경에서는 문제가 발생한다.

여러 트랜잭션이 동시에 같은 자원에 접근하려고 하면 자연스럽게 락 경합(lock contention)이 높아지고,

DB는 락 관리에 많은 리소스를 사용하게 된다.

외부 리소스를 통해 Lock을 걸 수 있는 방법은 없을까?

이 문제를 해결하기 위해 아래 고민을 하게 되었다.

“DB는 읽기/쓰기 본연의 작업에만 집중하게 하고, 락 관리 책임을 외부 리소스로 이관할 수는 없을까?”

그 과정에서 여러 외부 리소스들을 비교하였고, Redis의 아래 특징들을 보고 락 관리에 적합하다고 판단하였다.

Redis가 락 관리에 적합하다고 판단한 이유

  1. 메모리 기반의 빠른 응답 속도
    • 락 획득/해제가 DB보다 훨씬 빠르게 처리될 수 있음
  2. Redisson 라이브러리에서 Lock 기능을 제공
    • 락 구현 시 코드 복잡도를 크게 줄일 수 있음
  3. 싱글 스레드 구조
    • 명령이 직렬화되어 레이스 컨디션 없이 안정적으로 락 관리 가능

결론

Redisson을 활용한 Redis 기반 락을 적용하고, 기존의 비관적 락과 성능을 비교하여 이 가설을 검증해볼 예정

profile
느리지만 꾸준한 개발자 남기은입니다

0개의 댓글