피드로 돌아가기
Dev.toDatabase
원문 읽기
Distributed Lock의 한계 극복을 통한 NoSQL 데이터 정합성 확보
Read-Modify-Write isolation in NoSQL: the distributed-lock hell.
AI 요약
Context
NoSQL 환경에서 Snapshot Isolation만으로 해결 불가능한 Write Skew 문제 발생. 이를 해결하기 위해 Redis 기반 Distributed Lock을 도입했으나, 시스템 복잡도 증가와 성능 저하라는 트레이드오프에 직면함.
Technical Solution
- Redis Round-trip 증가로 인한 Write Latency 및 p99 Spike 전이 현상 분석
- Fine-grained Lock 채택 시 발생하는 Deadlock 방지를 위해 Key 정렬 기반의 Canonical Order 강제 적용
- TTL 설정을 통한 Crash Recovery 시도 시, GC Pause나 네트워크 지연으로 인한 Lock 만료 및 데이터 오염 위험 식별
- 외부 Coordination Service 의존성을 제거하고 Coordination 로직을 데이터베이스 내부로 통합하는 구조적 전환 모색
- TTL 기반의 Mutual-exclusion Primitive가 가진 정합성 보장 한계를 인지하고 Strict Isolation 모델로의 대체 필요성 강조
실천 포인트
- Distributed Lock 도입 전 Redis p99 지연 시간이 메인 DB 쓰기 성능에 미치는 영향 평가 - 다중 리소스 잠금 시 Deadlock 방지를 위한 일관된 Key 정렬 순서 정의 및 코드 리뷰 강제 - TTL 기반 락 사용 시, 최대 예상 처리 시간과 GC Pause 시간을 고려한 안전 임계치 검토 - 외부 락 서비스 대신 DB 자체의 원자적 연산이나 트랜잭션 모델을 통한 정합성 확보 방안 우선 검토