· inner-circle

주문 서버 개발기 1편 (도메인)

교보문고·예스24 같은 주문 서버를 맡아 코드를 짜기 전에, 회원·주문·상품·장바구니·결제·배송 여섯 도메인의 관계와 주문 프로세스의 트랜잭션·자동복구·성능 지점을 먼저 그려본 기록.

작성날짜: 24.09.11

📚 Table of Contents

해당 포스팅은 아래의 시리즈로 구성되어 있습니다. 시리즈대로 포스팅을 읽어주세요 🧑🏼‍🌾

  1. 주문 서버 개발기 1편 (도메인)
  2. 주문 서버 개발기 2편 (설계)
  3. 주문 서버 개발기 3편 (구현) (feat.지속 가능한 소프트웨어)

상황

  • 교보문고, 예스24와 같은 서버 개발해야되는 상황
  • 그 중 주문 API 개발 담당
  • 개발 전, 주문 관련 도메인 파악 우선적으로 진행

먼저, 주문과 관련된 도메인을 전체적으로 파악해보자

image
  • 크게 6가지 도메인 필요
  • 결제 도메인 (PAYMENT) 같은 경우 타팀에서 개발한걸 사용하는 방향으로 프로젝트 진행 예정
  • 배송 도메인 (DELIVERY) 같은 경우도 MVP 기간에는 임시 시뮬레이션 처리 필요

다음으로 주문 프로세스 요약해보자

1. 주문 프로세스 요약

image
  • 크게 4가지 진행 프로세스가 필요
  • 이중 결제진행, 배송정보등록 2가지는 임시 결과값으로 처리 후, 주문 프로세스 개발 진행

2. 주문 프로세스 (트랜잭션 처리)

image
  • 여기서 트랜잭션 처리란 비동기 (메시지큐와 같은)
  • 메시지 큐 개발 방향은 고려 (학습 목적으로 카프카 AWS SQS)

3. 주문 프로세스 (자동복구)

image
  • 여기서 자동복구란 아래와 같이 2가지 부분을 생각할 수 있음
    1. 트랜잭션 롤백
    2. 서비스 재시도

4. 주문 프로세스 (성능 최적화)

image
  • 캐시를 이용해 대규모 데이터를 빠르게 조회할 수 있도록 구성 필요로 파악

주문 기본 API 와 연관된 도메인을 연결시켜 보자

주문 기본 API (주문 생성과 같은 말)

image
  • 주문을 중심으로 연관된 도메인 파악

(추가) 주문 조회 (전체, 상세) API

image

다음으로 …🚚

  • 주문 API (생성) 에 필요한 도메인을 파악했으므로 이에 따른 설계를 진행
  • 생각보다 많은 도메인이 엮여있음
  • 추가적으로 배송 도메인에서 이와 별개로 배송 처리 도메인 이 부분도 필요하다고 생각
    • 배송 도메인은 단지 배송관련 데이터를 관리 (배송 정보 - ex. 송장번호)
    • 배송 처리 도메인은 실시간 외부 관계자 (배송, 택배) 이런걸 파악해야되는 도메인이 있어야? 되지 않을까 싶음 (외부 관계자 - ex. CJ대한통운 실시간 배송(출고) 현황)