서버 성능테스트, 보통 언제 할까?
📈 트래픽 유입이 높을 것으로 예상되는 신규 서비스 오픈 시
🚷 기존 서비스에 병목이 될 수 있는 변경사항 생기는 경우
📈 평소보다 트래픽을 많이 받아야 하는 경우
자동화로 해결하고 싶은 것
- 테스트 환경 구축
- 성능테스트
- 결과 지표
성능테스트 과정
1. 성능테스트 시나리오 구상
- 시스템의 어느 부분에 어떻게 부하를 줄 것인지 결정 -> input
- 부하 상황에서 시스템의 동작 예측 ( 기계값 설정 ) -> output
- 필요 데이터 준비
2. 테스트 환경 구축
- 서버 수, 서버 스펙 설정
- scale up & scale out
3. 성능테스트 생성 및 수행
- 준비된 시나리오에 따라 실제 요청 발생
4. 테스트 결과 지표 관측 및 기록
- 부하 상황에서 모니터링 보드 지표 관측 및 기록
5. 테스트 결과 분석
- 요청을 잘 처리 하는지 체크
- 시스템이 기대하던 대로 동작 했는지 체크
2~4 : 일종의 파이프라인 ( 반복되는 과정) -> 자동화 하기 쉽고, 해야만 하는 부분
1, 5 : 개발자가 시간을 쏟고 집중해야 하는 부분 -> 자동화가 어려운 부분
자동화에 사용하는 기술 ( nGrinder + AWS CLI + Jenkins )
nGrinder : 네이버에서 만든 오픈소스 프로젝트로 서버부하 테스트를 위한 도구
- REST API 지원
AWS CLI : AWS 제어 도구 ( 일종의 컨트롤러 )
동작 순서 ( Jenkins Pipeline 에서 수행 됨 )
* 테스트 환경 구축
젠킨스 서버 O 파이프라인 구축 O
시나리오 O 테스트 스크립트 O
ASG : 인스턴스 추가 등 ... 테스트환경 구축 & health check
-> Ngrinder : rest api 새로운 테스트 생성 및 수행 ( API 요청 = 부하 발생 )
(Jenkins : 테스트 수행 시간 기록)
-> Ngrinder 에서 테스트 결과 조회
-> 슬랙으로 테스트 결과 레포트 전송
-> 불필요한 자원 제거