[Optimization-11] Double Checked Locking
·
Database/Redis
1. Double Checked Locking 패턴의 필요성1.1. 단순 락 적용의 한계캐시와 락을 함께 사용할 때 일반적으로 캐시 Miss → 락 획득 → DB 조회 순서로 처리한다. 하지만 락을 획득하자마자 바로 DB 조회를 수행하는 방식에는 허점이 존재한다. 현재 스레드가 락을 획득하기 위해 대기하는 동안, 이미 다른 서버나 스레드가 락을 먼저 획득하여 DB 조회를 마치고 캐시를 채워두었을 가능성이 있기 때문이다.1.2. 캐시 재확인 없는 중복 조회 문제이 부분을 고려하지 않고 락 획득 후 즉시 DB로 향하면, 이미 캐시에 데이터가 있음에도 불구하고 불필요한 DB 조회가 한 번 더 발생하게 된다. 이를 방지하기 위해 락을 획득한 직후 캐시를 다시 한 번 확인하는 과정이 반드시 필요하며, 이러한 패턴..