ADR-P-003



LEGACY NOTICE 상태: Superseded Superseded By: ADR-DS-064 비고: 수량 점유/복구의 단일 원천은 ADR-DS-064를 따른다.

수량 차감은 Redeemed(사용 확정) 시점에만 수행한다

  • ADR ID: ADR-003

  • 상태: Accepted

  • 작성일: 2026-03-02

  • 작성자: YSY

  • 관련 ADR: ADR-002


1. 배경 (Context)

타임슬롯 플랫폼에서 수량 차감 시점은 구조적 의미를 가진다.

선택지는 두 가지였다:

  1. Reserved(임시 확보) 시점에 수량 차감

  2. Redeemed(사용 확정) 시점에 수량 차감

Reserved는 15분 유효의 임시 확보 상태다.
이 상태는 실제 방문을 보장하지 않는다.

Reserved 시점에 수량을 차감할 경우:

  • 실제 방문하지 않아도 재고가 잠김

  • 점유 후 방치 시 사용자 경험 악화

  • 발행자 신뢰 저하

본 플랫폼은 예약 상품이 아니라 “즉시 사용 가능한 시간 기회” 구조다.


2. 결정 (Decision)

슬롯 수량은 Redeemed(사용 확정) 시점에만 차감한다.

Reserved 상태에서는 수량을 차감하지 않는다.

REDEEMED 전환과 수량 차감은 서버 트랜잭션 내에서 원자적으로 처리한다.


3. 대안 (Alternatives Considered)

대안 A: Reserved 시점 수량 차감

장점

  • 초과 사용 확정 위험 감소

  • 간단한 재고 모델

단점

  • 15분 점유만으로 수량 잠김

  • 노쇼 시 사용자 경험 저하

  • 동시성 처리 복잡

채택하지 않은 이유
Reserved는 임시 상태이며, 확정 방문이 아니다.
임시 확보에 확정 재고 차감을 적용하는 것은 구조적으로 부정확하다.


대안 B: Reserved 시점 차감 후 만료 시 복구

장점

  • 재고 일관성 명확

단점

  • 만료 시 복구 로직 필요

  • 동시성/경합 상황 복잡

  • 일시적 “가짜 마감” 발생 가능

채택하지 않은 이유
구조 복잡도 증가 및 UX 왜곡 가능성이 높다.


4. 결과 (Consequences)

긍정적 결과

  • 점유 후 방치로 인한 가짜 마감 방지

  • 실제 방문자 중심 재고 관리

  • 구조적 의미 일관성 확보

부정적 결과

  • 극단적 동시 사용 확정 시 초과 위험 존재

  • 서버 트랜잭션 로직 필수


5. 영향 범위 (Impact)

기술

  • REDEEMED 전환 시 트랜잭션 필수

  • remainingQty는 REDEEMED에서만 감소

  • 동시성 처리 필요

UX

  • “확보”와 “확정”의 개념 분리 필요

  • Reserved는 임시임을 명확히 안내

운영

  • 동시 사용 확정 정책 필요(remainingQty > 0 확인)

6. 재검토 조건 (Revisit Conditions)

  • 동시 사용 확정으로 인한 초과 사례가 반복 발생

  • 발행자 불만이 증가

  • 실제 도착률이 구조적으로 낮아 수량 관리가 불안정할 경우


다음으로 중요한 결정은 기술 기반이다.


ADR-004

초기 백엔드는 Supabase(BaaS) 기반으로 시작한다

  • ADR ID: ADR-004

  • 상태: Accepted

  • 작성일: 2026-03-02

  • 작성자: YSY

  • 관련 ADR: ADR-001


1. 배경 (Context)

플랫폼은 1인 개발 기반 MVP 단계에 있다.

초기 단계에서 자체 서버를 구축할 경우:

  • 인프라 설계 비용 증가

  • 인증/권한/DB/배포 복잡성 증가

  • 개발 속도 저하

핵심 목표는 “구조 검증”이지 “인프라 완성도”가 아니다.


2. 결정 (Decision)

초기 백엔드는 Supabase 기반으로 구축한다.

구성:

  • Postgres

  • RLS

  • RPC(Function)

  • Auth

  • Storage(선택)

자체 서버 이전은 확장 단계에서 재검토한다.


3. 대안 (Alternatives Considered)

대안 A: .NET 기반 자체 서버 구축

장점

  • 장기 확장성

  • 구조 통제력 높음

단점

  • 초기 개발 속도 저하

  • DevOps 부담

  • 과설계 위험

채택하지 않은 이유
MVP 단계에서 리소스 대비 과도한 선택이다.


대안 B: Firebase

장점

  • 빠른 구축

  • 실시간 기능 용이

단점

  • 관계형 모델에 불리

  • 복잡한 조건 매칭에 제약

채택하지 않은 이유
타임슬롯 조건 매칭은 관계형 DB가 적합하다.


4. 결과 (Consequences)

긍정적 결과

  • 개발 속도 향상

  • 인증/권한/RLS 빠른 적용

  • 1인 개발에 적합

부정적 결과

  • 벤더 종속성

  • 비용 증가 가능성

  • 복잡한 비즈니스 로직은 RPC에 의존


5. 영향 범위 (Impact)

기술

  • DB 설계가 Postgres 중심

  • 트랜잭션 로직 RPC 기반

운영

  • 비용 모니터링 필요

  • 이전 전략 사전 설계 필요


6. 재검토 조건 (Revisit Conditions)

  • DAU 급증으로 비용 급상승

  • 고급 분석/서비스 분리 필요

  • 서울 전체 밀도 확보 후 전국 확장 단계 진입