logo
logo
K-Fashion Shop 서버의 설계와 구현
코드너리  |  2022. 03. 07
이커머스
MSA
Event Driven
Clean Architecture
사용된 기술:
springboot-image
content

제품 사용자 정의

  • 도매 회원 - 신상마켓에 이미 가입되어 있는 도매 상인으로서, 신상마켓에 등록되어 있는 상품들을 통해 Shop을 개설하고 운영하는 주체입니다.
  • 방문자 - 서비스에 가입하지 않고 비로그인 상태에서 서비스를 이용하는 사용자로, 잠재적인 소매 회원입니다. 처음에는 ‘소매 사업자’라는 용어를 썼는데 소매 회원과 잘 구분되지 않는다는 피드백이 있어서 ‘방문자’로 바뀌었습니다.
  • 소매 회원 - 서비스에 가입하여 Shop을 이용하는 소매 상인입니다. Shop의 상품들을 조회하면서 거래처 관계도 맺을 수 있습니다. 초기에는 해외의 소매 상인들에 좀 더 초점을 맞춰서 기획이 되었습니다.
  • 운영자 - 사내에서 어드민 콘솔을 통해 서비스를 운영합니다.

구현에 대한 원칙

패키지 레이아웃은 기본적으로는 Domain Driven Design의 Layered Architecture와 Clean Architecture의 Hexagonal Architecture를 참고하여 구성했고, 핵심 비즈니스 영역이 외부 영역에 의존하지 않고 순수하게 도메인 로직을 표현할 수 있게 하는 데에 중점을 뒀습니다.

  1. 첫째, 도메인 영역에서는 외부의 라이브러리나 프레임워크에 의존하지 않고 오직 순수한 자바로 구현하려고 했습니다.
  2. 둘째, 개념 모델에서 유스케이스로 표현된 각 기능 명세를 각각 하나의 유스케이스 객체로 추상화하고자 했습니다.
  3. 셋째, 위에서 패키지 레이아웃을 언급할 때 말씀드렸던 것처럼, 핵심 비즈니스를 포함하고 있는 도메인 영역은 다른 영역에 대해 의존관계를 갖지 않고, 다른 영역에서 제공하는 기능이 필요하다면 도메인 영역에서 인터페이스를 제공하여 의존성을 역전시키는 형태(DIP)로 도메인 영역이 다른 영역의 요구사항으로 인해 불필요하게 오염되는 것을 막고자 했습니다.
  4. 넷째, 도메인 영역의 객체들을 구현할 때는 최대한 다른 영역에 대한 고려 없이, 도메인을 있는 그대로 코드로 표현하기 위해 노력했습니다.

 

 

Copyright © 2024. Codenary All Rights Reserved.