이커머스 오픈소스인 broadleafcommerce의 재고 서비스를 살펴봄으로써, 재고 시스템 구조를 맛보고자 한다.
재고 예약 Flow Diagram
체크아웃을 완료하기 전인 임시 주문 단계에서 재고를 임시로 예약한다. (Soft Reservation)
그리고 체크아웃이 모두 완료되어, 주문서가 만들어지고난 이후 재고를 영구적으로 예약한다. (Hard Reservation)
DB Diagram
inventory transaction은 sku의 재고 히스토리를 관리하기 위한 도메인이다.
inventory transaction의 8개의 타입으로 이루어져있다.
- SOFT_RESERVED
- HARD_RESERVED
- FULFILLED
- CANCELLED
- ORDERED
- RETURNED
- RECEIVED
- SHRINKAGE
SOFT_RESERVED, HARD_RESERVED만 가장 일반적인 용도로 사용된다. SOFT_RESERVED은 사용 가능한 수량을 줄이고, 재고 데이터에 예약된 수량을 늘리는 데에 사용된다. SOFT_RESERVED은 임시적인 값이기 때문에, 특정 기간 내에 HARD_RESERVE으로 변경되지 않으면 롤백될 수 있다. HARD_RESERVED은 영구적인 트랜잭션이다. 보상 트랜잭션인 RETURNED을 제외하면, 롤백되지 않는다.
참고
https://developer.broadleafcommerce.com/services/inventory-services
'소프트웨어-이야기 > 아키텍처' 카테고리의 다른 글
[EDA] 이벤트 발행하기 (0) | 2022.07.30 |
---|---|
Transactional outbox (0) | 2022.07.09 |
레이어드 아키텍처 (0) | 2022.04.10 |
분산 시스템을 위한 유일 ID 생성기 키설계 (0) | 2022.03.19 |
Cursor Pagination - 대용량 데이터에 페이지네이션 적용하기 (1) | 2020.07.25 |