글 작성자: Key Ryung

개요

하나의 개선점과 여러 테스트들을 모두 하나의 포스트에 담고 싶었지만 가독성이 떨어질 것이라 예상해서 분리하려고 합니다. 이번에는 물품 목록을 조회하는 API에 대해 테스트를 진행했습니다. 

이해를 돕기 위해 ERD도 첨부했습니다. 물품 목록 조회 API는 Product의 Category를 쿼리 파라미터로 받아 Product Option과 함께 반환해주는 기능입니다. Spring Rest Doc을 통해 생성된 문서를 보면 다음과 같이 요청을 보냅니다.

이렇게 요청을 보내면 다음과 같이 응답이 반환됩니다. 

상품과 함께 사이즈에 따른 수량도 함께 나오는 것이 기획이었기 때문에 Index, N + 1 문제 등 테스트 하기도 전에 걱정되는 API 입니다. 그럼 테스트 결과를 한번 보겠습니다!


물품 조회 API 테스트 결과

테스트 결과를 보고 인프라 개선전 과거에서 테스트했나라는 착각을 했습니다... 다시 마음을 추스리고 원인을 파악하기 위해 Pinpoint를 확인했습니다. 예상을 하나도 벗어나지 못했습니다. 1초 이내로 반환되는 응답은 하나도 없었으며 최대 32초 이상까지 응답이 지연되는 것을 볼 수 있습니다.

원인을 알아야 하니 Inspector를 통해 어플리케이션 서버 상태 또한 기록해놓았습니다. Heap Usage도 마이너 GC가 지속적으로 잘 일어나고 CPU Usage를 확인해보았을 때도 어플리케이션 서버가 병목 지점은 아닐 가능성이 높아 보입니다.

해당 프로젝트는 네이버 클라우드를 활용하여 진행했습니다.