Test

( 공부 | 내용 정리 ) 서버 성능테스트, 클릭 한 번으로 끝내볼 수 있을까? #우아콘2021 #첫째날_배민비하인드

박한결 2023. 7. 18. 00:09

 

 



서버 성능테스트, 보통 언제 할까?

📈 트래픽 유입이 높을 것으로 예상되는 신규 서비스 오픈 시

🚷 기존 서비스에 병목이 될 수 있는 변경사항 생기는 경우

📈 평소보다 트래픽을 많이 받아야 하는 경우 

 

자동화로 해결하고 싶은 것 

  • 테스트 환경 구축
  • 성능테스트
  • 결과 지표 

성능테스트 과정

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 에서 테스트 결과 조회

-> 슬랙으로 테스트 결과 레포트 전송 

-> 불필요한 자원 제거 

[1] 11:07