redisson2 분산 락이 서비스를 죽이고 있었다 - Redisson 경합을 1/1000로 줄인 Segment 블록 할당 패턴 분산 환경에서 ID 채번 API의 부하 테스트를 돌렸더니 실패율 91%가 나왔다. DB 쿼리는 2ms인데 응답은 5초. 원인은 Redisson 분산 락 경합이었고, Pod를 아무리 늘려도 소용없었다. 해결은 "락을 더 안전하게 만드는 것"이 아니라 "락이 필요한 순간 자체를 줄이는 것"이었다. Segment 블록 할당 패턴으로 락 빈도를 1/1000로 줄이고, Valkey Sentinel Failover까지 견디는 구조를 만든 과정을 기록한다.Redisson 분산 락 + DB SELECT FOR UPDATE 이중 락 구조에서, 50 VUs 부하 시 실패율 91%, 처리량 8.89 req/sPod별 1,000건 ID 블록을 사전 확보하고, 블록 내에서는 AtomicInteger로 무락 채번하는 Segmen.. 2026. 4. 13. Redis 분산락 컴포넌트 리팩토링 적용기 Intro공유 자원에 대해 다수의 쓰레드가 경합 상황 발생 시 동시성 제어를 위해 Redis 기반 분산락을 사용하곤 한다.개인적으론, 어디까지나 DB Lock으로 해결할 수 있다면 Redis 기반 분산락 처리까진 필요 없다 생각이 든다.분산락을 꼭 도입해야 하는 케이스와 아닌 케이스는 보통 아래와 같다.DB 데이터가 아닌 값에 대한 정합성이 필요할 때 분산락이 필요함.로컬 캐시와 글로벌 캐시 동기화에 사용되는 케이스처럼 DB 기반이 아닌 다른 인프라나 저장소를 기반으로 처리해야 하는 경우 동시성 이슈를 막기 위해 분산락이 필요함.비즈니스 로직 상 한 DB테이블의 항목에 대한 write 연산이라면 DB Query의 write lock을 잡고 처리해도 무방함.ex) 게시글 단건에 대한 단순 수정의 경우 (어.. 2025. 1. 4. 이전 1 다음