기능 배포 전 성능 테스트 단계도 필요하다.
성능 테스트에는 부하 테스트와 스트레스 테스트가 있다.
성능 테스트를 통해 최악의 상황을 대비할 수 있다.
OOM (Out of Memory) 문제
코드에 문법 문제가 없더라도, 서버에서 사용자마다 일정한 메모리를 할당할 때 서버의 메모리 용량을 넘으면 문제가 발생할 수 있다.
부하 테스트
예상 부하에서 사용할 때 소프트웨어가 어떻게 수행되는지 테스트하는 것
의도적으로 부하를 증가시켜 좋은 성능을 위한 임계값을 찾고, 정상적인 트래픽에서 시스템이 어떻게 작동하는지 테스트할 수 있다.
스트레스 테스트
예상치 못한 극도의 압력 부하를 받을 때 소프트웨어가 어떻게 수행되는지 테스트하는 것
복구하는 방법을 찾기 위해 부하를 상한까지 높여 테스트한다.
부하 테스트 시 주의할점
실제 서비스중인 서버에 무리하게 부하 테스트를 할 경우 중단될 수 있다
AWS 같은 클라우드 요금제 서버인 경우 과다한 요금이 청구될 수 있다.
--> 실제 서버와 같은 사양의 스테이징 서버에서 테스트를 진행하는 것이 좋다.
성능 측정의 지표
- 처리량
- 응답시간
- 속도
- 안정
- 자원사용
성능 테스트 기준
1. 예상 TPS 보다 여유롭게 성능 목표치를 잡고 인스턴스를 구성해야한다.
2. API에 기대하는 Latency를 만족할때까지 성능 테스트를 해야한다.
단일 요청에 대한 latency가 몇인지 확인하기 (가상 유저수 1)
단일 요청에 대한 latency가 기대 latency보다 높다면 scale out으로 해결할 수 없다. (= 코드가 비효율적 or 네트워크 latency 발생)
성능 테스트를 위한 자동화 도구
테스트 프로세스를 자동화하면 효율성이 향상된다. -> 시간 비용 절약, 정확한 결과를 빠르게 제공
- 아파치 JMeter (무료 / java환경) [링크]
- Ngrinder (java 환경)
- Artillery (Nodejs 환경) [링크] [사용방법 블로그]
- ReadyAPI (유료) [링크]
- BlazeMeter [링크] / 확장 프로그램 [사용방법 블로그]
- Visual Studio Test Professional (유료) [링크]
- Micro Focus LoadRunner (유료) [링크]
관련 용어
PoC (Proof of Concept)
: 기술 검증; 신기술 도입 전 검증을 위해 사용하는 것
BMT (Bench Mark Test)
: 성능 테스트; 실제 운용 환경과 동일한 기준에서 부하테스트, 스트레스 테스트 등을 진행하는 것
유사한 소프트웨어 제품을 측정하는 테스트 -> 유사한 sw 유형 간의 객관적인 비교 결과를 제공한다.
트랜잭션 (Transaction)
: 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 단위
TPS (Transaction Per Second)
: 1초에 처리할 수 있는 트랜잭션 수
성능 테스트의 가장 중요한 지표
PPS (Page Per Second)
: 웹 시스템에서 특정 페이지에 대한 요청
응답시간
: 사용자가 요청을 보낸 시점부터 처리 결과가 보일때까지의 시간
평균 응답 시간이 웹서버 시스템의 성능 분석에서 중요하다.
workload
: 주어진 시간동안 컴퓨터가 처리한 일의 양 ex) HTTP 요청
Reliability
: 에러 간 평균 시간으로 측정
scale-up
: 서버 버신의 스펙을 높이는 방법
유저가 많아지면 스펙업으로 해결이 안된다. 이때는 스케일아웃으로 해결해야한다.
scale-out
: 서버 머신의 수를 늘리는 방법
참고
'개발공부' 카테고리의 다른 글
데일리 스크럼이란? 회사에서 실제로 해본 후기 (0) | 2024.02.24 |
---|---|
GitLab CI/CD 시작하기 (0) | 2023.12.18 |
테스트 주도 개발 TDD (Test Driven Development) (0) | 2023.03.04 |
프로세스 vs 스레드 차이점 그리고 멀티프로세스와 멀티스레드 (0) | 2023.02.05 |
프로그래머스 과제테스트 연습 사이트 (0) | 2023.02.05 |
댓글