백엔드 & 인프라🔒 10칩
Spring Batch 모니터 데모 제작기
들어가며
「Spring Batch 모니터 데모 제작기」를 정리하게 된 계기는 단순했어요. 같은 문제를 세 번째 만났을 때, 이번엔 기록으로 남겨야겠다고 생각했습니다.
문제 상황
- 트래픽이 몰리는 시간에 응답이 2초 이상 늘어졌어요.
- 로그만으로는 어디서 막히는지 알기 어려웠어요.
- 재현 환경을 만드는 데만 하루가 걸렸어요.
해결 과정
먼저 병목을 숫자로 확인했어요. 측정 없이 고치면 같은 실수를 반복하게 됩니다.
@Transactional(readOnly = true)
public List<FeedResponse> getFeeds(Long userId) {
return feedRepository.findAllWithAuthor(userId).stream()
.map(FeedResponse::from)
.toList();
}조회 쿼리를 하나로 묶고, 응답 DTO 변환을 한 곳으로 모았더니 코드도 성능도 같이 좋아졌어요.
마치며
정답은 상황마다 다르지만, 측정 → 가설 → 검증 순서만 지키면 크게 틀리지 않더라고요. 궁금한 점은 댓글로 남겨 주세요!
- #Spring
- #JPA
- #성능
댓글 3
박준하
측정 → 가설 → 검증 순서, 저도 팀에 공유해야겠어요 👍
곽다윗
fetch join이랑 페이징 같이 쓸 때는 어떻게 하셨어요?
김승조
@곽다윗 컬렉션 fetch join은 페이징이랑 같이 못 써서 batch size로 풀었어요.
딥소스
잘 읽었습니다. 다음 편도 기대할게요!