Skip to content

재고 차감 작업 방식 수정 #7

@scars97

Description

@scars97

현재 재고 차감 작업 방식

  • 주문 메서드에서 재고 차감 이벤트 발행 -> 책임 분리 위함
  • 락과 트랜잭션 관계를 고려해 주문 트랜잭션 커밋 후, 재고 차감 작업을 비동기로 실행
    • 사용자는 '주문 접수'로 먼저 응답 받고, 주문 내역 조회를 통해 완료, 실패 결과를 확인할 수 있음
    • 재고 차감 실패 시 주문 작업에 대한 보상 트랜잭션 실행

문제점

서버에서는 주문, 결제 서비스가 분리되어있지만
사용자 입장에서는 주문, 결제가 한 플로우로 이루어짐.

주문 트랜잭션이 커밋된 후, 결제가 진행된다면 재고 차감 작업보다 결제가 먼저 실행될 수 있음.
만약 결제가 먼저 수행되고 재고 차감 실패로 인해 주문이 취소되었다면 데이터 정합성이 깨질 수 있음.

해결 방안

재고 차감 작업이 주문 트랜잭션 안에서 원자적으로 수행될 수 있도록 수정

고려사항

1. 주문 서비스에 많은 책임이 부여됨(재고차감, 쿠폰 사용, 주문 생성...)

2. 재고 차감에 적용된 락 기능 수정 필요
주문과 재고 차감 트랜잭션이 분리되어, 재고 차감에 대한 안정적인 락 처리가 가능했지만
원자적으로 처리하는 경우, 락과 트랜잭션 순서를 다시 정리해야 함.

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