동시성 문제란, 동일한 하나의 데이터에 2 이상의 스레드, 혹은 세션에서 가변 데이터를 동시에 제어할 때 나타는 문제로, 하나의 세션이 데이터를 수정 중일때, 다른 세션에서 수정 전의 데이터를 조회해 로직을 처리함으로써 데이터의 정합성이 깨지는 문제를 말합니다.재고를
이전 블로그에서는 자바 Synchronized를 이용한 동시성 이슈 해결방법을 살펴보았습니다. 하지만 서버가 여러대일 경우, 다른 서버에서 가변 공유데이터에 접근하는 것을 막을 수 없는 문제가 존재하였습니다. 실제로 데이터에 Lock을 걸어서 정합성을 맞추는 방법입니다
Setnx 명령어를 활용하여 분산락을 구현 (Set if not Exist - key:value를 Set 할 떄. 기존의 값이 없을 때만 Set 하는 명령어)Setnx 는 Spin Lock방식이므로 retry 로직을 개발자가 작성해 주어야합니다.Spin Lock 이란,
이전 블로그에서 동시성 문제를 해결하기 위해Lettuce를 프로젝트에 도입하였습니다. 저는 Lettuce와 Redisson을 둘 다 사용하려고 합니다.재시도가 필요하지 않은 Lock은 Lettuce를 활용할 것이고 재시도가 필요한 경우에는 Redisson을 사용할 것