https://drive.google.com/file/d/13Jez_t-zlCY9VO-dskcfzjaCsl4pcMxr/view
- 의류 E-commerce
- Fashionista, anyone can be
- 대용량 트래픽에서 준수한 속도를 유지
- 다수의 트랜잭션에서 동시성 처리 및 일관성 보장
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% 성능 향상
결과



