ADR-DS-020_슬롯 수량 및 동시성 SoT
ADR-DS-020 슬롯 수량 및 동시성 SoT
1. Metadata
- ADR ID: ADR-DS-020
- Title: Slot Quantity and Concurrency Source of Truth
- Status: draft
- Date: 2026-03-08
- Owner: YSY
- Related ADRs: ADR-DS-000, ADR-DS-010, ADR-DS-030
- Supersedes:
- Superseded By:
2. Context
슬롯 가용 수량 계산 기준이 분산되면 경합 상황에서 과점유와 표시 불일치가 발생한다.
3. Decision
슬롯 가용 수량 계산의 SoT를 서버로 고정한다.
- 가용 수량 계산:
total_quantity - active_hold - active_reserved active_hold:reservation_holds.status='active' and expires_at > now()active_reserved:reservations.status='reserved' and (expires_at is null or expires_at > now())- 가용 수량은 0 미만으로 내려가지 않도록
greatest(..., 0)적용 - 앱은 계산 결과를 표시만 하고 자체 계산으로 확정하지 않는다.
4. Consequences / Impact
- 경합 상황에서 초과 점유를 줄일 수 있다.
- 앱/서버 수량 불일치를 줄일 수 있다.
- 수량 집계 기준 변경 시 DB 함수와 배치 로직 동시 수정이 필요하다.
5. Validation
- 같은 시점 요청에서 가용 수량이 일관되게 계산된다.
-
hold만료 후 가용 수량이 자동 복구된다. -
reserved전환 후 가용 수량이 감소 상태를 유지한다.