https://www.youtube.com/watch?v=uqH0D_MbYd0

본 테스트는 로컬 개발 환경(MacBook Pro M1 Pro, 16GB) 내에서 진행되었습니다. 테스트 인프라의 격리와 제어를 위해 Docker 컨테이너 기반으로 아키텍처를 구성했으며, 데이터베이스인 MySQL과 부하 테스트 툴인 nGrinder를 동일한 격리 네트워크 내에 배치했습니다.
추후 실제 운영 환경으로 배포 시 최소 사양의 클라우드 인프라(Instance)를 활용해 비용을 최적화하는 것이 본 프로젝트의 핵심 목적 중 하나입니다. 따라서, 테스트 결과가 로컬 호스트의 유휴 자원에 부풀려지는 현상을 방지하고자 각 도커 컨테이너의 CPU 및 메모리 할당 자원을 명확히 제한(Limit)한 상태에서 부하를 측정했습니다.
| 테스트 시나리오 파일명 | 테스트 목적 | 기대 효과 및 분석 포인트 |
|---|---|---|
search_baseline.groovy |
LIKE 조건이 없는 기본 조회 성능 | 검색 조건이 없을 때의 ORDER BY + LIMIT 순수 비용 측정 |
search_cardinality.groovy |
검색 키워드 카디널리티별 성능 | 매칭 결과 수(ZERO / LOW / HIGH)에 따른 TPS 확인 |
search_pagination_depth.groovy |
페이지네이션 OFFSET 깊이에 따른 부하 | 페이지 심도가 깊어질수록 증가하는 Full Table Scan 비용 추적 |
search_baseline.groovy (vuser: 50)검색 기능을 사용하지 않고 전체 도서 목록을 조회하는 테스트 코드입니다.
search_cardinality.groovy(vuser: 1~200)검색 키워드의 카디널리티에 따라 시스템 처리량이 어떻게 변화하는지 확인하는 테스트 코드입니다. 가상 사용자를 Ramp-Up 사용하여 부하를 선형으로 증가시켜 각 키워드 별로 TPS한계점 파악 할 수 있습니다.