
항해 20만원 할인 추천인코드: NYFKU8
🚀 분산락 & 캐시 정리
1. 왜 필요한가?
- 대용량 트래픽 환경에서는 **한정된 자원(쿠폰, 좌석, 재고 등)**에 동시에 접근하는 문제가 자주 발생합니다.
- 단순히 DB 트랜잭션만으로는 성능 한계가 있어 Redis 기반 분산락 + 캐시 전략이 효과적입니다.
2. Redis 기반 분산락
Redis는 Key-Value 저장소이자 원자적 연산을 지원하기 때문에, 락 관리에 적합합니다.
동작 방식
- 락 획득: SETNX key value 로 키가 없을 때만 등록
- 비즈니스 로직 수행
- 락 해제: DEL key 로 해제
- TTL 설정: 장애 시 자동 해제 보장
구현 방식
- Simple Lock
- 실패 즉시 예외 발생 → 빠른 실패 처리
- 단점: 재시도 로직 별도 구현 필요
- Spin Lock
- 실패 시 일정 횟수/시간 동안 재시도
- 장점: 결국 락 획득 확률↑
- 단점: 네트워크 비용 & 스레드 점유 문제
- Pub/Sub Lock
- Redis Pub/Sub 활용 → 락 해제 이벤트 구독 후 대기
- 장점: Spin Lock 대비 효율적
- 단점: 구현 난이도↑
올바른 순서
락 획득 → 트랜잭션 시작 → 로직 실행 → 트랜잭션 종료 → 락 해제
잘못된 순서(트랜잭션 먼저 시작 / 락 먼저 해제)는 데이터 정합성 깨뜨림.
3. 캐시(Cache) 활용
- Redis는 단순 캐시뿐만 아니라 분산락 인프라 역할도 수행.
- 캐시 장점
- DB 부하 감소 → 성능(Throughput) 향상
- TTL 활용 → 데이터 최신성 보장
- 락과 함께 → 정합성 + 성능 동시 달성
4. 정리
- 분산락: 데이터 정합성을 지키기 위한 핵심 기술
- 캐시: 성능 최적화 및 부하 분산
- Redis는 두 역할을 모두 수행할 수 있음
- 결국, 대규모 트래픽 환경에서는
👉 Redis 분산락 + 캐시 전략이 안정적인 서비스 운영의 핵심
📌 과제 링크
Step12 by seuthootDev · Pull Request #12 · seuthootDev/hanghae-plus-backend
📌 PR 제목 규칙 [STEP12] 정승훈 - e-commerce 핵심 체크리스트 ✅ 1️⃣ 분산락 적용 (3개) [✔️] 적절한 곳에 분산락이 사용되었는가? 79a61a7 0f4c3c0 [✔️] 트랜젝션 순서와 락순서가 보장되었는가? ae2
github.com
Step11 by seuthootDev · Pull Request #11 · seuthootDev/hanghae-plus-backend
📌 PR 제목 규칙 [STEP11] 정승훈 - e-commerce 핵심 체크리스트 ✅ 1️⃣ 분산락 적용 (3개) [✔️] 적절한 곳에 분산락이 사용되었는가? 79a61a7 0f4c3c0 [✔️] 트랜젝션 순서와 락순서가 보장되었는가? ae2
github.com
'항해+' 카테고리의 다른 글
| 항해+ 백엔드 코드 8주차 회고 : Event 기반 Transaction (1) | 2025.08.31 |
|---|---|
| 항해+ 백엔드 코드 7주차 회고 : Redis의 자료구조와 활용 (1) | 2025.08.25 |
| 항해+ 백엔드 코드 5주차 회고 : 동시성 처리(Concurrency Control) 과제 정리 – 데이터 정합성과 성능 동시 확보하기 (항해 부트캠프 할인코드 있음) (4) | 2025.08.09 |
| 항해+ 백엔드 코드 4주차 회고 (2) | 2025.08.02 |
| 항해+ 백엔드 코드 3주차 회고 (0) | 2025.07.26 |