부하 테스트란? 🏋🏻♂️🏋🏻♂️🏋🏻♂️
부하 테스트는 이름 그대로 정상/ 비정상적으로 많은 부하가 시스템에 가해졌을 때 시스템이 어떻게 구동될지 테스트 해보는 것이다.
- 목적
- 어플리케이션의 최대 정상 구동 허용 범위 (시스템의 케파라 불리는 것)
- 구성된 인프라가 어플리케이션을 서비스하는테 충분한지
- 더 많은 사용자 서비스 위해서 얼마나 scalable 한지
- 세부 목표
- 각 트랜잭션 발생시의 응답 시간
- 시스템 컴포넌트들 or DB 가 다양한 부하에 따라서 퍼포먼스가 어떻게 달라지는지
- 구조 설계의 결함
- 하드웨어 때문에 생기는 한계 (네트워크 지연 시간, cpu 한계 등등)
- 웹서버, 어플리케이션 서버 등의 소프트웨어 설정값들의 오류
[참고 사이트]
https://stackify.com/what-is-load-testing/
https://reqtest.com/testing-blog/load-testing/
- 사용되는 툴들
Apahce JMeter, the Grinder 등등 이 있다.
나는 사내 스터디를 하면서 the Grinder를 공부해보기로 했다.
The Grinder
공식 사이트에 의하면 세 가지 파트로 이루어져 있다.
- Worker processes
- 테스트 스크립트를 수행하는 파트 여러 쓰레드 통해서 병렬적으로 수행할 수 있다.
Agent processes- 워커 프로세스를 시작하고 멈추는 역할을 한다. 콘솔로부터 부여받은 테스트 스크립트를 워커들한테 나누어줌
The Console- 프로세스들을 컨트롤하고 통계값을 취합한다.
- 워커 프로세스를 시작하고 멈추는 역할을 한다. 콘솔로부터 부여받은 테스트 스크립트를 워커들한테 나누어줌
근데 뭐 말로 설명하면 너무 당연해보이지만 실제로 어떻게 구성해야할지는 해봐야알겠지.
간단히 이해한 바로는 테스트 스크립트나 설정은 콘솔을 통해서만 조절하고 에이전트나 워커는 실제 테스트 하고자하는 어플리케이션의 서버에 대한건 에이젼트에 놓고 조절하는 것 같다.
msa 로 비교해보면, 콘솔이 api gateway 가 될 수 있을 듯.
간단히만 알아봤고 내일부터는 실제로 코드같은게 어떻게 이루어져있는지 봐야겠다.