Haneul's Blog

[스케줄 관리 프로젝트 - 일치(INFRA)] 성능 테스트 준비 과정 본문

일정 관리 프로젝트(일치)

[스케줄 관리 프로젝트 - 일치(INFRA)] 성능 테스트 준비 과정

haneulss 2023. 5. 1. 03:29

성능테스트가 필요한 이유

서비스를 사용하려는 이용자들은 서비스의 응답 속도가 느리다면 다른 대체할만한 서비스가 많다고 판단하고 빠르게 현재 서비스를 이탈하는 경향이 있습니다.

 

그렇다면 이 문제는 서비스 이용자에게 있는 걸까요? 그렇지 않습니다.
서비스를 만든 개발측에서 응답 속도를 느리게 한 잘못이라고 생각을 하고 개선을 하려는 노력을 보여야 합니다.

그것을 위해서는 현재 성능이 어떻게 되고 동접자 몇명까지 수용이 가능한지를 측정할 수 있는 방법이 필요한데 그 방법을 위해서 여러 성능 테스트 도구들이 존재합니다.

 

그 테스트 도구들은 Jmeter, NGrinder, Locust 등의 성능 테스트 도구들이 있지만 저는 여러 자료들을 찾기 쉽고, 초기 학습 비용이 적은 JMeter를 공부하여 적용해보기로 결정하였습니다.

테스트의 종류(성능, 부하, 스트레스)

성능 테스트(Performance Test)

애플리케이션이 현재 어느 정도의 성능을 보이는지를 측정하는 테스트로 어떤 결함을 찾기 위함이 아니며, 성능에 대한 정확하고 면밀한 모니터링을 진행해야 합니다.

부하 테스트(Load Test)

임계치의 한계에 도달할 때까지 시스템에 부하를 꾸준히 증가시키며 진행하는 테스트로 부하 상황에서 시스템이 어떻게 동작하는지를 모니터링하고 정보를 얻는 테스트입니다.

 

이 때 발생시키려는 부하의 정도는 실제 시스템에 적용될 예상 트래픽이어야 하며, 애플리케이션이나 DB, Infra등의 한계를 모두 찾아서 미래에 발생할 부하에 대비하는 것이 목적입니다.

스트레스 테스트(Strees Test)

시스템이 과부하 상태에서 어떻게 작동하는지를 검사하는 테스트로 시스템의 실패를 확인하고 모니터링하면서 혹시나 민감한 정보나 보안상의 문제가 노출되지는 않는지와 장애 조치와 복구 절차가 효과적이고 효율적인지를 확인하는 테스트입니다.

현재 나의 프로젝트(일치 프로젝트) 인프라 구조

현재 인프라 구조는 이와같고, 초기 인프라 설계단계이기 때문에 추후에 성능 개선을 하면서 점차 업그레이드 시킬 예정입니다.

Jmeter 설치 및 열기

//설치
brew install jmeter

// m1 맥북에서 열기
open /opt/homebrew/bin/Jmeter

첫 성능 테스트 결과

제 프로젝트가 작은 회사의 사내에서 사용하는 스케줄 관리 서비스이며 동접자 수 100명이라고 가정하고 테스트를 진행하였습니다. 

 

10초간 100명의 유저가 1초간격으로 api 요청

구독 정보 불러오기 결과

Reference