Skip to content

DDD 방식으로 구현하는 이커머스 도메인 프로젝트

Notifications You must be signed in to change notification settings

jhdl0157/DDD_e-commerce-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

해당 서비스의 주요 이해관계자는 다음과 같다

  1. 유저 - 서비스를 통해 상품을 선택하여 주문하는 고객
  2. 파트너 - 해당 서비스에 입점하여 상품을 판매하는 업체
  3. 내부 운영자 - 해당 서비스을 운영하고 관리하는 담당자

해당 서비스의 주요 도메인은 다음과 같다

  1. 파트너 - 파트너 등록과 운영을 처리함
  2. 상품 - 상품과 상품의 옵션 정보를 등록하고 관리함
  3. 주문 - 유저가 선택한 상품 정보와 주문 정보를 관리하고 결제를 처리함

각 도메인별 주요 요구사항은 다음과 같다

1. 파트너

  • 시스템에 등록된 파트너만이 상품을 등록하고 주문을 처리할 수 있다
  • 파트너 등록 시 파트너명, 사업자등록번호, 이메일은 필수값이다
  • 파트너는 계약이 종료되면 비활성 상태로 전환된다. 단, 파트너 정보 자체는 삭제되지 않고 유지된다
  • 파트너 등록이 성공하면 등록된 이메일로 가입 완료 안내 메일을 발송한다
  • 그 외 시스템을 사용하는 유저가 기본적으로 기대하는 기본 기능들 - 조회, 등록, 수정, 삭제 등의 기능을 제공해야 한다

2. 상품

  • 시스템에 등록되고 활성화된 파트너는 상품을 등록할 수 있다
  • 등록된 상품은 유저의 주문을 받아 판매될 수 있다
  • 상품은 상품명, 가격 등의 기본 정보와 색상, 사이즈와 같은 옵션으로 구성된다
  • 상품은 옵션 정보 없이 기본값으로만 저장될 수도 있다
  • 주문 화면에서 보여지는 상품의 옵션은 파트너사가 원하는 순서에 맞게 노출될 수있어야 한다
  • 상품 구매 시 특정한 옵션을 선택하면 가격이 추가될 수 있다
  • 상품은 판매 준비중, 판매중, 판매 종료와 같은 상태를 가진다
  • 그 외 시스템을 사용하는 유저가 기본적으로 기대하는 기본 기능들 - 조회, 등록, 수정, 삭제 등의 기능을 제공해야 한다

3. 주문

  • 시스템에 등록된 상품은 유저가 주문할 수 있다
  • 주문은 주문 등록, 결제, 배송준비, 배송중, 배송 완료의 단계를 가진다
  • 주문 등록 과정에서는 결제수단을 선택하고 상품 및 상품 옵션을 선택한다
  • 시스템에서 사용 가능한 결제수단은 1) 카드 2) 토스페이 3) 카카오페이 4) 네이버페이 등이 있다
  • 결제 과정에서는 유저가 선택한 결제수단으로 결제를 진행한다
  • 결제완료 후 유저에게 카카오톡으로 주문 성공 알림이 전달된다
  • 결제가 완료되면 배송준비 단계로 넘어간다
  • 배송중, 배송완료의 단계도 순차적으로 진행된다

이번 개발시 주의해야할점

  • Setter는 도메인의 정합성을 깨드리는 메서드로 사용하지 않는다.
  • Entity의 아이디 값을 외부에 노출시키는것이 아니라 대체키를 사용하여 노출시킨다.
  • 의존성 역전 원친(DIP)를 지켜가면서 설계를 한다. DIP란
  • Service와 Service간의 참조는 하지 않는다.참조가 이뤄지는 순간 상하관계가 설정이 되고 TestCode작성시 목킹해야할 것이 많아진다.
  • 읽고 있는 좋은코드, 나쁜코드를 최대한 적용시켜서 좋은코드로 작성해보기

About

DDD 방식으로 구현하는 이커머스 도메인 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages