issues
search
Vegan-Life
/
VeganLife-Backend
채식주의자를 위한 식단 및 영양관리 앱 BE
2
stars
0
forks
source link
일일/주간/월간/연간 섭취량 조회 API 리팩토링
#275
Closed
O-Wensu
closed
7 months ago
O-Wensu
commented
8 months ago
이슈 번호 (#269 )
변경 내용
일일 섭취량 조회 API
MealLog의
getTotalIntakeNutrients
메서드를 사용하도록 변경 (코드 중복 제거)
기존
getTotalIntakeNutrients
로직과 reduce를 활용한 로직을 비교하였을 때, 기존 로직의 성능이 더 높으므로 기존 방식 채택 (TODO 삭제)
주간/월간/연간 섭취 칼로리 조회 API
MealLog 테이블 복합 인덱스 설정
데이터베이스 조회 시, List
로 반환 받지 않고, List
으로 반환 받도록 변경
DTO Projection에 QueryDsl을 활용
QueryDsl + DTO Projection 변경 이유
Tuple은 런타임에 에러 발생, DTO Proejction은 컴파일 시점에 체크 가능
Tuple 자체가 QueryDsl의 객체로 Repository가 아닌 서비스 계층으로의 전달은 적합하지 않음
JPQL + DTO Projection 방식은 직접 pacakge 명을 작성해야 하므로 휴먼 에러 발생 가능성과, 가독성 문제
QueryDsl을 사용하면 다양하고 간단한 방식으로 DTO Projection을 구현할 수 있음
성능 개선
일일 섭취량 조회 API
TPS 71.2 > 82.5
주간 섭취 칼로리 조회 API
평균 응답 시간 40ms > 19ms
TPS 23.9 > 48
월간 섭취 칼로리 조회 API
평균 응답 시간 32ms > 18ms
TPS 29 > 51.4
연간 섭취 칼로리 조회 API
평균 응답 시간 81ms > 47ms
TPS 11.9 > 20
이슈 번호 (#269 )
변경 내용
일일 섭취량 조회 API
getTotalIntakeNutrients
메서드를 사용하도록 변경 (코드 중복 제거)getTotalIntakeNutrients
로직과 reduce를 활용한 로직을 비교하였을 때, 기존 로직의 성능이 더 높으므로 기존 방식 채택 (TODO 삭제)주간/월간/연간 섭취 칼로리 조회 API
QueryDsl + DTO Projection 변경 이유
성능 개선
일일 섭취량 조회 API
주간 섭취 칼로리 조회 API
월간 섭취 칼로리 조회 API
연간 섭취 칼로리 조회 API