go_getter
2025. 7. 14. 05:39
2025. 7. 14. 05:39
성능 테스트 주요 유형
부하 테스트
- 시스템이 예상 수준의 부하를 받았을 때, 정상 처리가 가능한지 테스트
스트레스 테스트
- 시스템이 예상 수준을 넘어선 과도한 부하를 받았을 때, 장애 발생 여부와 최소한의 서비스 유지 여부를 확인하는 테스트
- ex. 평균 방문자 수가 1000명인 웹사이트에 2000명 동시 접속을 가정하여 테스트 (스케일아웃? 지연로딩 화면 노출? 다시 동접 수가 줄었을 때 정상 수준 동작하는지?)
- 비용 관리를 위해 평균 수치를 기준으로 서비스 구축
스파이크 테스트
- 스트레스 테스트와 유사하지만, 스파이크 테스트는 단시간의 급격한 부하 변화에 중점
- ex. 신제품 출시, 시즌 세일, 인기 공연 예매 오픈 등
지속성 테스트
- 일정 시간 이상(최소 몇시간) 지속적으로 부하를 유지하면서 시스템의 정상 동작 테스트
- 메모리 누수, 자원 고갈 문제 관찰
중단점 테스트
- 동시 사용자 수를 점진적으로 증가시키며 테스트
- 점진적으로 늘리면서 최대 수용 가능 범위 파악
- ex. 500명 -> 1000명 ... 점점 트래픽 늘리면서 테스트 (500 -> 2000 -> 1500 이런식으로 와리가리 아님)
성능 테스트 주요 지표
평균 응답 시간
- 1초 이내 응답 (당연함! 500ms 내외가 일반적이고 100ms 내외가 이상적)
- 컨트롤러, 서비스, 데이터 액세스 계층 실행 시간을 세분화하여 측정하면 성능 병목 지점을 정확히 파악할 수 있다.
네트워크 대역폭 사용량
- 데이터 송수신에 사용되는 네트워크 자원 소비량
- 분산 시스템과 마이크로서비스에서 중요
- ex. 직렬화, 역직렬화 시간 비용
CPU 및 메모리 사용률
- CPU, 메모리 사용률이 100%가 되면 앱이 죽음
- 80% 정도의 알람을 걸어두는 게 일반적
외부 리소스 사용률
- DB, 캐시 서버 등의 외부 리소스 사용 현황
- Spring에서는 JPA나 Spring Data를 통한 데이터베이스 상호작용 시 쿼리 성능과 커넥션 풀 관리가 전체 성능에 영향
- Redis나 Memcached와 같은 캐시 시스템의 히트율과 메모리 사용량을 통해 캐싱 전략의 효율성을 평가
- 히트율 : 요청 들어온 데이터가 캐시에 존재해, 바로 반환한 비율 (DB 접근 X)