Skip to content

lgm1007/hhplus_ecommerce

Repository files navigation

e-커머스 서비스

⚓ 프로젝트 개요

  • e-커머스 상품 주문 서비스를 구현한다.
  • 상품 주문에 필요한 메뉴 정보들을 구성하고 조회가 가능하도록 구현한다.
  • 사용자는 상품을 여러 개 선택해 주문할 수 있고, 미리 충전한 잔액을 이용한다.
  • 상품 주문 내역을 통해 판매량이 가장 높은 상품을 추천한다.

⚙️ 프로젝트 구성 기술스택

  • Kotlin: 1.9.25
  • Spring Boot: 2.7.18
  • JPA: 1.9.24
  • DBMS: H2
  • Testing: JUnit, Mockito, K6
  • Caching: Redis
  • Event Broker: Kafka
  • Monitoring: Grafana

🗃️ 프로젝트 구조

hhplusecommerce
├─application
│  └─src.main.kotlin.com.example.hhplus_ecommerce
│    ├─balance
│    ├─cart
│    ├─config
│    ├─consumer
│    ├─order
│    ├─outbox
│    ├─payment
│    ├─product
│    ├─scheduler
│    └─statistic
├─domain
│  └─src.main.kotlin.com.example.hhplus_ecommerce
│    ├─balance
│    ├─cart
│    ├─messaging
│    ├─order
│    ├─outbox
│    ├─payment
│    ├─product
│    ├─share
│    └─user
├─infrastructure
│  └─src.main.kotlin.com.example.hhplus_ecommerce
│    ├─balance
│    ├─cart
│    ├─config
│    ├─external
│    ├─kafka
│    ├─lock
│    ├─order
│    ├─outbox
│    ├─payment
│    ├─product
│    └─user
└─web
   └─src.main.kotlin.com.example.hhplus_ecommerce
     ├─advice
     ├─balance
     ├─cart
     ├─config
     ├─filter
     ├─interceptor
     ├─order
     ├─payment
     ├─product
     └─statistics

아키텍처 구성도

🚀 애플리케이션 실행

Gradle 기반 로컬 실행 방법

./gradlew bootRun
./gradlew clean build && java -jar build/libs/hhplus_ecommerce-1.0.0.jar

도커 기반 실행 방법

docker build -t ecommerce-api .
docker run -p 8080:8080 ecommerce-api

📜 API 스펙

1️⃣ 잔액 충전 / 조회 API

  • 결제에 사용될 금액을 충전하는 API 를 작성한다.
  • 사용자 식별자 및 충전할 금액을 받아 잔액을 충전한다.
  • 사용자 식별자를 통해 해당 사용자의 잔액을 조회한다.

2️⃣ 상품 조회 API

  • 상품 정보 ( ID, 이름, 가격, 잔여수량 ) 을 조회하는 API 를 작성한다.
  • (조회시점의 상품별 잔여수량이 정확하면 좋다.)

3️⃣ 주문 / 결제 API

  • 사용자 식별자와 (상품 ID, 수량) 목록을 입력받아 주문하고 결제를 수행하는 API 를 작성한다.
  • 결제는 기 충전된 잔액을 기반으로 수행하며 성공할 시 잔액을 차감해야 한다.
  • 데이터 분석을 위해 결제 성공 시에 실시간으로 주문 정보를 데이터 플랫폼에 전송해야 한다.

4️⃣ 상위 상품 조회 API

  • 최근 3일간 가장 많이 팔린 상위 5개 상품 정보를 제공하는 API 를 작성한다.

5️⃣ 장바구니 기능

  • 사용자는 구매 이전에 관심 있는 상품들을 장바구니에 적재할 수 있다.
  • 이 기능을 제공하기 위해 장바구니에 상품 추가/삭제 API 와 장바구니 조회 API 가 필요하다.
  • 위 두 기능을 제공하기 위해 어떤 요구사항의 비즈니스 로직을 설계해야할 지 고민해본다.

🔎 API 명세

💫 요구사항 별 시퀀스 다이어그램

📊 요구사항 별 플로우 차트

💽 ERD

🔒 동시성 제어 시나리오 분석

💾 캐시

🪄 DB 조회 성능 최적화

⛓️ 트랜잭션 범위 및 서비스 확장 대응 보고서

✉️ 카프카 메시지 발행 적용 보고서

⚠️ 부하 테스트 및 가상 장애 대응 보고서

About

⚓항해 플러스 E-Commerce 시나리오🏪

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages