공동 구매 쇼핑몰 프로젝트 1

Gunjoo Ahn·2022년 9월 21일
0

공동 구매 쇼핑몰

목록 보기
1/6

공동 구매 쇼핑몰

Always를 벤치마킹하여 MSA 프로젝트를 진행하고자 한다.

기능 리스트

유저 서비스 ( USER-SERVICE )

  • 회원가입이 가능해야 한다.
    • 회원가입에 필요한 유저 정보는 아래 서비스에 따라 변경사항이 있을 수 있다.
  • 로그인이 가능해야 하며, 이 인증은 API-GATEWAY 의 프록싱을 통해 진행한다.

상품 등록 ( ITEM-COMMAND-SERVICE )

  • 상품 정보는 재고, 가격을 필수로 가져간다.
  • 상품은 카테고리가 존재하며, 카테고리는 대분류만 존재한다.
  • 판매자(가게? 기업?) 가 존재한다.

상품 조회 ( ITEM-QUERY-SERVICE )

  • 인기순 상품 조회를 전체 및 카테고리별로 제공한다.
    • 단위 시간별(24시간 ~ 일주일) 주문 성사 수
  • 낮은•높은 가격순 상품 조회를 전체 및 카테고리별로 제공한다.

주문 조회 ( ORDER-QUERY-SERVICE )

  • 나의 주문 내역을 확인 할 수 있다. 이 때 주문 성사 여부와는 상관 없다.
  • 현재 공동 구매가 열려있는 주문을 조회할 수 있어야 한다.
    • 전체 및 카테고리 별로 조회 가능하도록 한다.

주문 하기 ( ORDER-COMMAND-SERVICE )

주문은 5가지 단계로 나뉘어 진다.

공동 구매 진행 중

  • 결제는 공동 구매 참여를 위해 필수적으로 진행된다.
  • 공동 구매 실패 시 결제된 금액은 환불처리 되어야 한다.
  • 한 번에 진행될 수 있는 주문 수는 모든 주문이 성공으로 끝나도 해당 상품의 재고를 넘지 않는 선으로 함.
  • 공동 구매 기준이 달성 했을 때 배송 준비 중으로 상태가 전환된다.

배송 준비 중

  • 주문 성사 시 사장님에게 알람을 전송한다.
  • 배송 준비 중인 상태에서 단위 시간동안 송장 등록이 진행되지 않을 때 주문을 자동으로 취소 되고 해당 냉용이 기록된다.
  • 사장님의 송장 등록을 기준으로 배송 시작 상태로 변경된다.
    • 송장 등록 시 배송 시작 상태가 된다.

배송 시작

  • 배송 완료 시 외부 API 통신이 될 것을 가정한다.
  • 배송 완료 시각을 기록한다.
  • 이 때 외부 API 는 MOCK 으로 대체한다.

배송 완료

  • 구매자의 구매 확정시 구매 확정 상태로 넘어간다.
  • 단위 시간이 지나게 되면 환불 불가하게 되며 자동으로 구매 확정이 된다.
  • 환불 정책은 추후 결정한다.

구매 확정

알림 서비스 (NOTIFICATION-COMMAND-SERVICE)

공동 구매 성사 시

  • 각 구매자 에게 구매 성공을 알린다.
  • 판매자에게 팀 구매 성사 여부를 알린다.

배송 시작

  • 배송 시작시 각 구매자에게 배송 시작 여부를 알린다.

배송 완료

  • 배송 완료 시 각 구매자에게 배송 완료 여부를 알리고 이 때 구매확정 역시 요청하도록 한다.

추후 상황에 따라 기획 추가

알림 조회 서비스 (NOTIFICATION-QUERY-SERVICE)

  • 내 알림 내역을 조회할 수 있다.
  • 내 알림 내역을 통해 주문 내역에 접속 가능 해야한다.

SW 아키텍처

아이템, 오더 서비스를 내부적으로도 두 서비스로 나누었는데, 쿼리 서비스의 경우 배치성 작업을 고려하여 나누었다.

간단하고 빠르게 로그 수집을 구현하기 위하여 API Gateway 단에서 로그 수집을 진행하려고한다.

알림 서비스와 통계 서비스는 MQ를 통하여 들어온 정보에 대하여 데이터 처리를 할 예정이다. 통계에 필요한 정보를 정제해서 MQ로 넘기면 해당 정보를 통계 서비스가 받아와 분석하여 DB에 적재할 것이다. Client는 분석이 완료되어 DB에 적재된 내용을 조회할 것이다.

R&R

팀원과 MSA 아키텍처를 간단하게 명세하고 서비스를 나누어 구현하기로 하였다.

팀원

  • 주문 조회 ( ORDER-QUERY-SERVICE )
  • 주문 하기 ( ORDER-COMMAND-SERVICE )
  • 결제 ( Mock Service )

본인

  • 상품 등록 ( ITEM-COMMAND-SERVICE )
  • 상품 조회 ( ITEM-QUERY-SERVICE )
  • 알림 서비스 (NOTIFICATION-SERVICE)

미정

  • 유저 서비스 ( USER-SERVICE )

진행 상황

Item Command Service(기본 CRUD 서비스)를 먼저 JPA로 빠르게 구현하였다. Spring Batch를 이용하여 Item Query Service를 구현할 예정이다. Spring Batch에 대하여 아는 것이 없어 학습이 선행되어야 한다.

팀원이 API Gateway와 서비스 디스커버리를 대신 구축해 주었는데 여기에 서비스 등록을 해야한다.

Item Command Service, Item Query Service 분리?

현재는 분리하지 않을 것이나, 언제든지 분리할 수 있도록 구현할 예정이다.

profile
Backend Developer

0개의 댓글