본문 바로가기
Project/StyleLab

StyleLab의 첫 번째 노트: 패션 이커머스의 시작

by 규난 2023. 11. 29.
728x90

프로젝트를 시작하기에 앞서, 평소에 다음과 같은 고민을 자주 해왔습니다.

  • 무신사나 오늘의 집과 같은 이커머스 플랫폼 서비스는 어떻게 만들어졌을까??
  • 많은 사용자가 이용하는 서비스는 어떻게 설계해야 안정적일까??
  • 나도 만들 수 있을까??

머릿속으로만 고민하면 실질적인 경험과 학습은 이루어질 수 없습니다. 따라서 패션 이커머스 플랫폼 프로젝트를 진행하여 직접 만들어보고, 이러한 고민들을 해결하고 실제 경험을 쌓아보려 합니다.

목차

  1. 프로젝트 이름 선정
  2. 프로젝트의 준수 사항과 주요 목표
  3. 도메인과 ERD
  4. 도메인의 기능
  5. API 명세서

1. 프로젝트 이름 선정

무신사와 같은 패션 이커머스 플랫폼 서비스를 만드는 것이 목표이기 때문에 프로젝트 이름은 "스타일을 연구하다"의 의미를 가지는 StyleLab으로 결정하기로 하였습니다.

2. 프로젝트의  준수 사항과 주요 목표

프로젝트를 진행하면서 지켜야 할 준수 사항과 이 프로젝트에서 이루고자 하는 목표는 이와 같습니다.

 

지켜야 할 준수 사항

  • 객체지향 프로그래밍의 설계 원칙인 SOLID를 준수하여 설계합니다.
  • side-effect를 최소화하기 위한 테스트 코드를 필수로 작성하도록 합니다.
  • 모든 클래스, 변수, 메서드는 의미 있는 명칭을 사용하며, 가독성 좋은 코드를 작성하여 코드의 가독성을 높입니다.
  • 사용하는 기술에는 명확한 이유가 있어야 하며, 이를 명시적으로 문서화합니다.
  • 간트 차트를 활용하여 프로젝트 일정을 체계적으로 관리하며, 정해진 일정을 준수합니다.

이루고자 하는 목표

  • 대용량 트래픽에서도 안정적인 서비스를 제공할 수 있는 설계를 구축하는 것입니다.

3. 도메인과 ERD

StyleLab을 만들기 위해 어떤 도메인들이 필요할까요??🤔

크게는 회원, 스토어, 상품, 주문/결제, 배송, 리뷰, 정산, 쿠폰 등 정말 많은 도메인이 존재합니다.

이 도메인들 중 회원, 스토어, 상품, 주문/결제, 배송 도메인을 우선으로 개발을 진행하고 리뷰, 정산, 쿠폰 등의 도메인은 차후에 순차적으로 개발 계획에 포함시키기로 결정하였습니다.

 

위 도메인들에 대해서 설계 중인 ERD 사진입니다. 사진을 클릭하시면 상세하게 보실 수 있습니다.

StyleLab ERD

현재까지 ERD를 설계하면서 고민한 부분이며, 설계가 완료될 때까지 계속 업데이트될 예정입니다.

  • 회원과 스토어 스태프를 별도의 테이블로 분리하여 관리하기로 결정한 이유는 다음과 같습니다.
    • 회원과 스토어 스태프가 각자 다른 목적과 역할을 가지고 있기 때문에 향후 확장성을 고려하였습니다.
    • 회원 수가 스토어 스태프의 수에 비해 상대적으로 많을 것으로 예상되며, 이러한 차이로 인해 회원의 조회 작업이나 다른 관련 작업이 스토어 스태프의 성능에 부정적인 영향을 미치는 것을 방지하기 위해서입니다.
  • 상품마다 상세 옵션의 데이터가 다를 것으로 예상되는데, 어떤 형태로 데이터를 저장하고 관리해야 할지 고민 중입니다.
  • 상품 카테고리 테이블을 경로 열거 테이블 구조로 결정한 이유는 다음과 같습니다.
    • 계층 구조가 크게 변하지 않을거라 예측되며, 구현이 쉽습니다.
    • 계층의 깊이가 크지 않고 상대적으로 고정된 구조를 갖기 때문에 계층 구조를 직관적으로 이해하기 쉽습니다. 
    • 쿠팡, 무신사, 네이버, 오늘의 집 모두 경로 열거형 방식의 계층형 테이블 구조를 사용하는 것으로 판단하였습니다.

네이버 쇼핑, 무신사, 오늘의 집, 쿠팡의 카테고리의 경로 열거 값

4. 도메인의 기능

도메인에 필요한 주요 기능들은 다음과 같습니다. 이 부분도 추후에 계속 업데이트될 예정입니다.

회원

  • 회원 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 배송지 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 로그인
  • 로그아웃

스토어

  • 스토어 스태프 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 스토어 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 스토어 구독 정보의 생성, 조회, 업데이트, 삭제(CRUD)

상품

  • 상품 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 상품 장바구니 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 상품 찜 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 상품에 대한 문의 정보의 생성, 조회, 업데이트, 삭제(CRUD)
  • 상품 문의에 대한 댓글 정보의 생성, 조회, 업데이트, 삭제(CRUD)

주문/결제

  • 주문 정보의 생성, 조회, 업데이트(CRU)
  • 주문 상세 정보의 생성, 조회, 업데이트(CRU)
  • 결제 정보의 생성, 조회, 업데이트(CRU)
  • 결제 히스토리 정보의 생성, 조회, 업데이트(CRU)
  • 배송 정보의 생성, 조회, 업데이트(CRU)

5. API 명세서

https://fringe-actress-f29.notion.site/API-067ba533d0d443ffad09c29c9d6cf4fe?pvs=4

 

API 명세서 | Built with Notion

Built with Notion, the all-in-one connected workspace with publishing capabilities.

fringe-actress-f29.notion.site

 

728x90