서버 성능 테스트(1)

2021. 11. 18. 16:48머리속에 궁금했던 것들

서버 성능 테스트(1)

회사에서 api 서버를 개발하다가 최종 단계인 스트레스 테스트가 필요해졌다. 만든 api 서버가 어디서 병목현상이 발생하는지 많은 사람들이 몰렸을 때 어떤 사고가 발생하는지 체크를 해야했다. 그래서 진행할 스트레스가 어떤 종류가 있고 어떤 툴을 사용할지 등의 과정을 정리하려고 한다. 

 

우선 퍼포먼스 테스트가 무엇인지 알아보자

 

Performance Test란

Performance Test란 주어진 상황속에서 시스템의 컴포넌트가 시스템에서 어떻게 수행되는지 탐지해내는 것이다. 

 

Resource의 사용량, 확장성, 신뢰성 등을 테스트를 통해 적합한지 인식할 수 있다. 아래 사진과 같이 각 6개의 테스트가 퍼포먼스테스트에 포함되는 것이다. 

 

 

Load Testing

Load Testing을 보면 일정한 유저의 수를 일정 시간동안 버티는지 체크하는 테스트이다.

Stress Testing

Stress Test는 일정 가상 유저를 진행한 후 버티면 더 많은 가상 유저를 추가 투입 또 버티면 가상 유저를 추가해 어느 정도까지 스트레스를 버틸 수 있는지 테스트를 진행한다. 

Spike Testing

Spike Test는 사용자가 일정하게 진행되는 과정 속에서 갑자기 팍 튀어오르는 상황에 테스트를 의미한다. 

 

나는 이번 api에 세가지를 테스트 해보려고 한다.

 

Test Tool 선택

아래의 선택기준이 중요시 되었다. 

  • 무료로 사용하면서 충분한 레퍼런스가 있을 것.
  • 쿠버네티스에 적용하기 쉬울 것
  • 스크립트 작성하기가 쉬울 것

 

등의 조건이 있었다. 

 

그래서 후보에 생각했던 것이 Jmeter, nGrinder, Locust를 생각했다. 그 중에서도 개인적으로는 Locust를 선호하게 되었다. 아래의 이유에서이다. 

 

  • 쿠버네티스에서 쉽게 설치가 가능했다.
    Helm을 통해서 쉽게 설치했다가 제거할 수 있는 구조였다. 
  • 테스트 시나리오를 python으로 작성할 수 있다.
    nGrinder느 Groovy, Jmeter는 xml을 사용했다. 개발자로서 python을 사용하기에 조금 더 편해보였다. 
  • 웹을 통해서 쉽게 접근할 수 있다. 
  • Jmeter는 Thread 사용 방식, Locust는 이벤트 방식의 비동기
    Locust는 훨씬 더 적은 메모리를 사용한다. 

 

 

 

 

 

 

 

 

'머리속에 궁금했던 것들' 카테고리의 다른 글

Go, Java Garbage Collector  (0) 2021.06.08