Skip to content

Repository files navigation


📌사용한 아키텍처 : 레이어드 인터페이스 아키텍처

선택한 이유

관심사 분리 : 각 레이어는 고유한 책임을 가집니다. 의존성 역전(DIP)와 추상화에 유리합니다. 구현이 아닌 인터페이스에 의존합니다. 테스트 용이: 인터페이스가 있어 테스트 시 구현체 대신 Mock 객체 주입 가능합니다.

레이어와 역할

interfaces : 외부 요청 진입점 (Controller, API, UI 등)

application : 비즈니스 흐름 처리, 서비스 계층 (use-case 수준 로직)

domain : 핵심 비즈니스 규칙, 엔티티, 도메인 서비스, Value Object 등

infrastructure : DB, 외부 API, 메시지큐 등 기술 세부사항 처리

common/config : 공통 유틸리티, 설정 클래스(Spring Config 등)

Repository 저장소는 domain 계층에서 정의하고, infrastructure 계층에서 구현

Application Layer : 비즈니스 흐름을 조정하는 계층, 도메인 객체들을 조합하여 비즈니스 로직을 수행


📌 요구사항 분석

기본 과제

  • 상품 주문에 필요한 메뉴 정보들 구성하고 조회가 가능해야 합니다.
  • 사용자는 상품을 여러개 선택해 주문할 수 있고, 미리 충전한 포인트를 이용합니다.
  • 상품 주문 내역을 통해 판매량이 가장 높은 상품을 추천합니다.

✅[ 기능적 요구사항 ]

💳 포인트 관리

  • 사용자는 본인 계정으로 금액을 충전할 수 있다.
  • 사용자 포인트는 실시간으로 조회 가능하다.
  • 주문 시 포인트는 주문 금액만큼 즉시 차감된다.
  • 최대 포인트 한도를 초과할 수 없다.
  • 충전 시 음수는 허용하지 않는다.

🛍️ 상품 관리

  • 사용자는 상품 목록을 조회할 수 있다.
  • 상품 정보에는 상품 식별자, 이름, 가격, 잔여 수량이 포함된다.
  • 주문 시 상품 재고는 주문 수량만큼 즉시 차감된다.
  • 재고가 부족하면 주문이 실패한다.

📝 주문 및 결제

  • 사용자는 여러 상품을 선택해 한 번에 주문할 수 있다.
  • 결제 시 미리 충전된 포인트에서 결제 금액이 차감된다.
  • 주문 시 상품의 재고는 감소한다.
  • 결제 완료 시 주문 정보가 실시간으로 외부데이터 플랫폼으로 전송된다.
  • 유효한 할인 쿠폰을 제출하면 주문 금액이 할인된다
  • 쿠폰 1번에 주문 1번 할인된다.

🎟️ 선착순 쿠폰

  • 선착순으로 쿠폰 발급이 가능하다 (발급 수량 제한).
  • 사용자는 본인의 보유 쿠폰 목록을 조회할 수 있다.
  • 주문 시 쿠폰을 사용하면 할인 적용 후 결제한다.
  • 할인은 정률 할인으로 한다.
  • 쿠폰은 한 번만 사용 가능하며, 사용 시 즉시 소멸한다.

📊 상위 상품 조회

  • 최근 3일간 가장 많이 팔린 상위 5개 상품을 정보를 제공한다.
  • 판매량 통계는 실시간으로 업데이트된다.

✅ [ 비기능적 요구사항 ]

🔒 동시성 및 데이터 일관성

  • 여러 사용자가 동시에 주문하거나 충전해도 데이터가 일관되게 유지되어야 한다.
  • 사용자 포인트 처리 및 재고 차감 시 트랜잭션 처리가 보장되어야 한다.

프로젝트

Getting Started

Prerequisites

Running Docker Containers

local profile 로 실행하기 위하여 인프라가 설정되어 있는 Docker 컨테이너를 실행해주셔야 합니다.

docker-compose up -d

About

e-커머스 프로젝트

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages