Skip to content

InyongHwang/HotDeal

Repository files navigation

HotDeal


1000만건 이상의 상품데이터를 빠르고 정확하게 검색가능한 이커머스 서비스 핫딜🔥!
내가 원하는 상품 빠르게 검색 가능한 조건 검색 서비스🔎
전날 기준 판매 수량이 가장 많은 인기 상품 조회 서비스🔎
대량의 트래픽 속에도 안정적인 동시성 제어를 통한 구매 서비스🛒

📆 프로젝트 기간

  • 2023.05.19 ~ 2023.06.??

🐾 Project Members

💀 황인용 👨‍⚕️ 김선민 🦇 조양기 🃏 황석빈
🌱 Spring 🌱 Spring 🌱 Spring 🌱 Spring


Service Architecture

Architecture


주요 기능 소개

조건 검색 기능 조건 검색 기능
대,중분류별검색기능 최소,최대가격조건검색기능
- 대, 중분류 별 검색 기능 - 최소, 최대 가격 조건 검색 기능
조건 검색 기능 조건 검색 기능
키워드검색기능 인기상품조회기능
- 키워드 검색 기능 - 인기 상품 조회 기능
회원 가입 기능 로그인 기능
회원가입 로그인
- 회원 가입 기능 - 로그인 기능
구매 기능
구매기능
- 구매 기능


☁️ ERD

펼쳐보기

ERD



성능개선

Trouble Shooting

🚨 Issue 1

데이터 수집 및 생성

A. 크롤링을 통해 데이터를 수집하는 과정에서 크롤링이 일부 진행된 이후 기하급수적으로 빠른 속도로 처리가 되고 프로세스가 종료되는 현상 발생

🛑 cause :

  • 존재하지 않는 페이지에 대해서 빠르게 반복적인 요청을 보냄에 따라 IP가 일시적으로 차단 당했다고 판단하였습니다.

🚥 solution :

  • 크롤링 결과 빈 값을 반환하는 페이지를 마주칠 경우 더 이상 해당 카테고리에 대한 크롤링을 멈추고 다음 카테고리로 넘어가는 코드로 수정하였습니다.
  • 페이지 이동 간 휴식 시간 부여하였습니다.

B. 구매 데이터 확보를 위해 매일 새벽 1만 번의 구매 작업을 진행하는 상황에서 아침에 매번 서버가 다운되어 제대로 동작하지 않는 현상 발생

🚥 solution :

  • 구매 데이터 생성 작업이 서버에 한 번에 일으키는 부하를 줄임으로써 서버가 다운되는 문제를 해결하였습니다.

🚨 Issue 2

테스트 코드 작성

상품 구매에 대한 테스트 코드를 작성했으나 실제 재고가 감소하지 않는 문제 발생

🛑 cause:

  • update 쿼리가 존재하지 않음. 현재 구매 로직에서는 JPA 더티 체킹을 통해 자동으로 update 를 하고 있는데 테스트 코드에서는 더티 체킹이 동작하지 않았다고 판단하였습니다.
  • 테스트 코드 상에서 LimitedProductService 인스턴스를 직접 만들어서 사용하고 있기 때문에 빈 객체가 아니어서 발생한 문제였습니다.

🚥 solution :

  • 테스트 코드에서 LimitedProductService도 @Autowired 를 이용해 주입 받는 것으로 변경해서 해결하였습니다.

🚨 Issue 3

Docker hub 로그인 시 Unauthorized Error

콘솔에서 docker hub 로그인시 unauthorized Error

🛑 cause:

  • docker hub 비밀번호가 ! 로 시작되어 콘솔에서 이벤트로 인식하여 발생한 문제였습니다.

🚥 solution :

  • docker hub 로그인 비밀번호를 수정하였습니다. (!password → password, 맨 앞 느낌표 제거)
  • 블로그 정리 글

🛠 Tools

Backend


Frontend

Platform

DevOps

CI/CD

Test

Dev tools



About

Challenge-18

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •