
초보 집사는 어떤 기준으로 반려동물 식품을 선택해야 하는지에 대한 경험이 부족합니다. 이러한 어려움을 해소하기 위해 보다 쉽고 빠르게 좋은 품질의 반려동물 식품을 선택할 수 있도록 도와주는 서비스, 집사의 고민을 만들게 되었습니다. 현재 사료 정보, 맞춤 사료 추천, 맞춤 리뷰 추천 기능 등을 제공하고 있습니다.
- 프로젝트 기간: 2023.06 ~ 2023.12
- 참여 인원: BE 4인 / FE 3인
- 사용 기술: Java 17 / Spring Boot, Spring MVC / Spring REST Docs, Swagger / Spring Data JPA, QueryDSL / MySQL, H2 / OAuth 2.0, JWT / Nginx, AWS EC2, Docker / GitHub Actions, Jenkins / Prometheus, grafana, loki, promtail
프로젝트 기여 및 진행 내용
1. 조회 기능 커버링 인덱스 및 쿼리 최적화로 응답속도 93.3% 개선(10s → 0.67s)
문제 상황
메인 API인 사료 필터링 기능이 100만 데이터 이상일 때 최소 10초에서 1분 소요
해결 방법
- 페치 조인과 페이지네이션 동시 사용 이슈 해결(6초로 감소**)**
- 일대다에서 페치조인을 하면 데이터가 뻥튀기가 되어 데이터 수가 변해 페이징을 걸 수 없음
- DTO로 필요한 것만(3.71초로 감소**)**
- 불필요한 정보는 제거하고 필요한 것만 받아서 DTO로 반환
- 필요없는 조인 테이블 제거(2.56초까지 감소)
- 서브 쿼리에서 추가적으로 발생하는 2개의 조인 테이블 제거