주문 서버 개발기 1편 (도메인)
교보문고·예스24 같은 주문 서버를 맡아 코드를 짜기 전에, 회원·주문·상품·장바구니·결제·배송 여섯 도메인의 관계와 주문 프로세스의 트랜잭션·자동복구·성능 지점을 먼저 그려본 기록.
작성날짜: 24.09.11
📚 Table of Contents
해당 포스팅은 아래의 시리즈로 구성되어 있습니다. 시리즈대로 포스팅을 읽어주세요 🧑🏼🌾
상황
- 교보문고, 예스24와 같은 서버 개발해야되는 상황
- 그 중 주문 API 개발 담당
- 개발 전, 주문 관련 도메인 파악 우선적으로 진행
먼저, 주문과 관련된 도메인을 전체적으로 파악해보자
- 크게 6가지 도메인 필요
- 결제 도메인 (
PAYMENT) 같은 경우 타팀에서 개발한걸 사용하는 방향으로 프로젝트 진행 예정 - 배송 도메인 (
DELIVERY) 같은 경우도 MVP 기간에는 임시 시뮬레이션 처리 필요
다음으로 주문 프로세스 요약해보자
1. 주문 프로세스 요약
- 크게 4가지 진행 프로세스가 필요
- 이중 결제진행, 배송정보등록 2가지는 임시 결과값으로 처리 후, 주문 프로세스 개발 진행
2. 주문 프로세스 (트랜잭션 처리)
- 여기서 트랜잭션 처리란 비동기 (메시지큐와 같은)
- 메시지 큐 개발 방향은 고려 (학습 목적으로
카프카AWS SQS)
3. 주문 프로세스 (자동복구)
- 여기서 자동복구란 아래와 같이 2가지 부분을 생각할 수 있음
트랜잭션 롤백서비스 재시도
4. 주문 프로세스 (성능 최적화)
- 캐시를 이용해 대규모 데이터를 빠르게 조회할 수 있도록 구성 필요로 파악
주문 기본 API 와 연관된 도메인을 연결시켜 보자
주문 기본 API (주문 생성과 같은 말)
- 주문을 중심으로 연관된 도메인 파악
(추가) 주문 조회 (전체, 상세) API
다음으로 …🚚
- 주문 API (생성) 에 필요한 도메인을 파악했으므로 이에 따른 설계를 진행
- 생각보다 많은 도메인이 엮여있음
- 추가적으로 배송 도메인에서 이와 별개로
배송 처리 도메인이 부분도 필요하다고 생각- 배송 도메인은 단지 배송관련 데이터를 관리 (배송 정보 - ex. 송장번호)
- 배송 처리 도메인은 실시간 외부 관계자 (배송, 택배) 이런걸 파악해야되는 도메인이 있어야? 되지 않을까 싶음 (외부 관계자 - ex. CJ대한통운 실시간 배송(출고) 현황)