경험 중심 — API 서버 부하 테스트 중 예상 못 한 병목 발견
팀 프로젝트에서 API 서버를 배포하기 전에 locust로 부하 테스트를 처음 해보았습니다. 동시 사용자 100명 기준으로 테스트를 진행했는데, 50명을 넘어가면서 응답 시간이 갑자기 10배 이상 뛰는 지점이 있었습니다.
DB 쿼리 로그를 확인해보니 특정 API에서 N+1 쿼리가 발생하고 있었습니다. 리스트 조회 시 각 아이템마다 추가 쿼리가 나가고 있었는데, 단독으로는 빠르다 보니 기능 테스트에서 발견되지 않았습니다.
@EntityGraph로 Fetch Join을 추가하고 재테스트했더니 100명 동시 요청에서도 p95가 200ms 이내로 유지되었습니다. 비기능 테스트는 기능이 맞게 동작하는지와 별개로 꼭 해야 한다는 것을 이때 배웠습니다. 기능 테스트만으로는 이 병목을 절대 찾지 못했을 것 같습니다.