비관적 락은 하나의 트랜잭션이 특정 레코드에 접근할 때 X-Lock(배타 락, Exclusive Lock)을 걸어,
조회 시점부터 커밋 시점까지 다른 트랜잭션이 해당 레코드에 접근하지 못하도록 막는 방식이다.
이 방식은 데이터 무결성을 보장하는 데 효과적이지만, 요청이 몰리는 환경에서는 문제가 발생한다.
여러 트랜잭션이 동시에 같은 자원에 접근하려고 하면 자연스럽게 락 경합(lock contention)이 높아지고,
DB는 락 관리에 많은 리소스를 사용하게 된다.
이 문제를 해결하기 위해 아래 고민을 하게 되었다.
“DB는 읽기/쓰기 본연의 작업에만 집중하게 하고, 락 관리 책임을 외부 리소스로 이관할 수는 없을까?”
그 과정에서 여러 외부 리소스들을 비교하였고, Redis의 아래 특징들을 보고 락 관리에 적합하다고 판단하였다.
Redisson을 활용한 Redis 기반 락을 적용하고, 기존의 비관적 락과 성능을 비교하여 이 가설을 검증해볼 예정