Skip to content

feat: 일반 구매와 Flash Sale을 분리한 재고 처리 아키텍처 구축 #92

@koosco

Description

@koosco

배경

일반 구매와 Flash Sale/한정수량 상품은 트래픽 패턴, 재고 확보 전략, 실패 처리 방식이 다르다.
일반 구매는 단순하고 강한 정합성이 중요하고, Flash Sale은 고동시성 환경에서 빠른 선별, 예약, 비동기 반영, 대사/복구가 중요하다.

이번 EPIC의 목표는 다음 두 가지를 동시에 만족하는 것이다.

  • 일반 구매는 단순한 RDB 기반 재고 차감 경로로 유지
  • Flash Sale은 Redis 기반 reservation + 비동기 반영 + reconciliation 구조로 분리

목표

  • 일반 구매와 Flash Sale의 처리 경로를 분리한다.
  • Flash Sale에 대해 예약 -> 결제 성공 시 확정 -> 실패/만료 시 해제 상태 모델을 도입한다.
  • Redis / Stream(or Kafka) / RDB projection / reconciliation까지 포함한 운영 가능한 구조를 만든다.

범위

포함

  • 외부 API 및 내부 API 경로 정리
  • 일반 구매 재고 차감 구현
  • Flash Sale reservation 구현
  • 결제 성공/실패에 따른 confirm/release 구현
  • 이벤트 로그 및 projection 반영
  • reconciliation 및 rebuild 전략
  • 운영 지표/모니터링 포인트 정의

제외

  • 추천/랭킹/검색 최적화
  • ERP/물류 외부 시스템의 실제 연동 상세 구현
  • 관리자 어드민 UI

하위 이슈

  • 공통 도메인/엔드포인트/상태 모델 정의
  • 일반 구매 재고 차감 경로 구현
  • Flash Sale 예약 API 및 Redis reservation 구현
  • Flash Sale 결제 확정/해제 흐름 구현
  • 이벤트 로그 및 projection consumer 구현
  • reconciliation / rebuild / 장애 대응 구현

의존관계

  • 선행 이슈 없음
  • 본 이슈는 전체 parent issue로 사용

작업 순서

  1. 공통 도메인/엔드포인트 정리
  2. 일반 구매 경로 구현
  3. Flash Sale reservation 구현
  4. 결제 확정/해제 구현
  5. 이벤트 반영 및 projection 구현
  6. reconciliation 및 복구 전략 구현

완료 조건

  • 일반 구매와 Flash Sale이 서로 다른 재고 처리 경로를 가진다.
  • Flash Sale은 Redis reservation 기반으로 동작한다.
  • 비동기 반영 실패/지연에 대비한 event log + projection + reconciliation 구조가 준비된다.
  • 각 하위 이슈가 완료되고 문서화된다.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions