Skip to content

wpdbs1229/molly-api

 
 

Repository files navigation

패션을 쉽게 MollyMol

📽️ 시연 영상

https://drive.google.com/file/d/13Jez_t-zlCY9VO-dskcfzjaCsl4pcMxr/view


🔖 프로젝트 개요


  • 의류 E-commerce
  • Fashionista, anyone can be

🎯 목표


  • 대용량 트래픽에서 준수한 속도를 유지
  • 다수의 트랜잭션에서 동시성 처리 및 일관성 보장


🧑‍🤝‍🧑 팀 역할


image


📚 기술 스택


image


🌏 서버 아키텍쳐


image


🗺️ ERD


image



🔗주요 기능


1️⃣ 회원가입/ 로그인

  • 이메일을 통해 회원 가입 및 로그인을 할 수 있습니다.
  • 마이페이지에서 회원 정보를 관리할 수 있습니다.

2️⃣ 상품 관리

  • 상품 검색 및 필터링 (필터: 카테고리, 색상, 사이즈, 가격 등/정렬: 최신 순, 조회 많은 순, 구매 많은 순 등)
  • 상품 상세 페이지 - 이미지, 설명, 리뷰, 재고, 배송 정보 표시
  • 상품 등록 - 상품 단건 등록, 상품 다건 (100건 이상부터 1,000,000건 이하) 엑셀로 등록 가능
  • 상품 수정 및 삭제

3️⃣ 장바구니

  • 사용자는 상품을 장바구니에 담을 수 있습니다.
  • 장바구니에서 옵션 및 수량 변경할 수 있습니다.
  • 장바구니 전체 선택, 전체 삭제 할 수 있습니다.

4️⃣ 결제

  • 토스 API를 통해 사용자는 결제를 진행할 수 있습니다.
  • 포인트를 사용하여 결제 할 수 있습니다.

5️⃣ 주문 및 배송 관리

  • 자신의 기본 배송지 설정 및 추가, 변경, 삭제 할 수 있습니다.
  • 마이페이지에서 사용자의 주문 내역을 조회할 수 있습니다.

6️⃣ 리뷰

  • 사용자는 배송완료된 상품의 리뷰를 작성할 수 있습니다.
  • 사용자는 리뷰 작성, 수정, 삭제 할 수 있습니다.
  • 리뷰에 대한 좋아요 기능을 제공합니다.
  • 최근 7일간 누적 좋아요가 많은 인기순위 Top 12를 조회할 수 있습니다.

🌈 개선 사항

1️⃣ 문제 상황

  • 대량 상품 등록시 배치로 처리하고 있는데, 100,000만건 이상의 상품 등록부터 응답 시간이 너무 느림

1차 성능 개선 JPA → JDBC

  • 기존 JPA saveAll()은 대량 데이터 처리 시 개별 쿼리 실행 + 메모리 오버헤드 발생
  • JDBC batchUpdate()로 변경하여 약 95% 이상의 성능 개선 달성

2차 개선: JDBC → MyBatis + 실패 데이터 추적 개선

  • JDBC → MyBatis
    • JDBC와 성능 비교시 차이가 얼마 나지 않음을 확인
    • SQL과 로직 분리를 통해 유지보수성 향상
  • DB 등록 실패 데이터 추적 방식 개선 (MyBatis)
    • 기존: 개별 쿼리 반복 → 성능 5~9배 저하
    • 개선: BULK INSERT 후 DB에서 조회하여 비교 → 기존 대비 3배 성능 개선

3차 개선: 순차 처리 → 병렬 처리

  • 삽입과 등록 실패 추적 로직을 병렬 처리로 전환
  • 2차 개선 대비 약 63% 성능 향상

결과

image

About

molly 의류 쇼핑몰 Back-End

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%