MSA 환경에서 Redis 분산 락으로 동시성 문제 해결하기
·
Backend/Database
들어가며MSA 환경에서 여러 서버 인스턴스가 동시에 같은 자원에 접근할 때 동시성 문제가 발생합니다. 단일 서버라면 synchronized나 ReentrantLock으로 해결할 수 있지만, 분산 환경에서는 이러한 JVM 레벨의 락이 무용지물입니다. 이때 필요한 것이 바로 분산 락입니다.왜 Redis인가?분산 락을 구현할 수 있는 방법은 여러 가지가 있습니다. MySQL의 네임드 락, Zookeeper, Redis 등이 있는데, Redis를 선택하는 이유는 명확합니다.첫째, 인메모리 기반으로 매우 빠릅니다. 락 획득/해제가 빈번하게 일어나는 상황에서 성능은 중요한 요소입니다.둘째, SETNX, EXPIRE 등 원자적 연산을 지원합니다. 락 구현에 필요한 기본 연산이 이미 준비되어 있습니다.셋째, 대부분의 ..