News & 기고POST
Service Management Enterprise Solution 분야의 리더가 되겠습니다.
성능 테스트의 기본 개념
성능 테스트의 기본 개념
신규 시스템의 구축 또는 운영중인 업무 시스템이 안정적 성능을 제공하는지 확인하기 위해서 업무 시스템에 대한 성능 테스트가 필연적으로 요구되어진다.
성능 테스트를 위해 상용 성능테스트 도구를 사용하기도 하지만, 보다 간편하고 빠르게 접근할 수 있는 오픈소스 기반의 성능측정 도구를 많이 사용하기도 한다. 필자는 ITSM 구축 프로젝트를 진행하면서 수행된 성능테스트 방법과 도구의 사용법에 대해 기술하고자 한다.
성능 테스트란?
성능 테스트는 소프트웨어의 효율성을 진단하는 테스트이다. 일반적으로 예상된 부하에 대한 실행시간, 응답시간, 처리능력 등을 체크하고 자원 사용량을 테스트한다.
사용자 관점에서는 사용해야 할 시스템 구성 요소가 특정 상황에서 정상적인 성능을 보이는지를 확인/검증하기 위해 수행되는 테스트라고도 할 수 있다.
성능 테스트는 왜 해야 하는 걸까?
우선 예를 들어 본인 또는 주변에서 쉽게 접할 수 있는 상황으로 콘서트, 항공, 수강신청 등 동 시간대에 순간적으로 접속자가 몰려 서버가 다운되는 경우를 많이 볼 수 있다.
이러한 현상을 최소화하고자 서비스 제공 중 발생할 수 있는 성능 문제를 사전에 점검하여 예방, 조치하고 병목현상을 제거하며 시스템의 신뢰성과 안정성을 확보하기 위함이다.
성능 테스트 유형
여러 테스트 유형이 존재하는데 아래의 3가지 유형이 대표적인 테스트 케이스이다.
1) Load Test: 동시 사용자/요청 수에 의해 생성되는 트랜잭션에 대한 시스템 처리 성능 측정
2) Stress Test: 임계 값 이상의 요청을 통해 시스템의 최대 성능 측정
3) Scalability Test: 장시간 테스트를 진행하여 메모리/성능 정보의 변화를 통해 연속성 측정
성능 테스트 도구
Window에서 제공하는 Perfmon, HP사의 LoadRunner 등 다양한 도구가 존재 하는데 그 중 누구나 쉽게 사용할 수 있는 오픈소스 기반인 “Apache Jmeter”가 대중적으로 사용되기에 Jmeter를 통한 측정과 설정 방법등을 설명하고자 한다.
성능 측정
측정하기 전에 TPS 개념을 먼저 알아야 한다.
TPS : 초당 트랜잭션의 개수로서 서비스 성능의 기준이 되는 지표 (종료한 트랜잭션 수 / 측정 시간)
TPS가 높을수록 좋지만 시스템의 목적에 따라 TPS를 조정할 필요는 있다.
필자는 50 TPS를 목표를 잡고 위에 언급한 유형 3가지 중 Load Test에 대해 설명을 하고자 한다.
Jmeter 설정 중 Thread 수 (동지 접속 가상 사용자), Ramp-up(전체 Thread 유입 시간),
Loop Count(반복횟수)를 작성한다.
[그림 1] 기본 환경 설정
실제 요청을 보낼 페이지의 정보를 설정한다.
[그림 2] 요청 페이지 설정(1/2)
[그림 3] 요청 페이지 설정(2/2)
성능 테스트 결과를 다양한 리포트 형식으로 도출 할 수 있는데 그 중에서 많이 사용하는 TPS 그래프와 종합결과(Summary Report)는 다음과 같다.
[그림 4] TPS 결과 (그래프)
[그림 5] 성능테스트 종합 결과
추가로 Thread 수를 목표치 보다 배수로 올리고 Loop Count(반복 횟수)는 무한으로 체크하여 임 계치 최대 성능을 측정할 수 있는 기능과목표 TPS에 맞게 장시간(최소4시간)을 실행해야 하는데 원하는 시간동안 실행할 수 있는 기능이 존재한다.
[그림 6] 추가 설정
마무리
프로젝트에 투입되어 매번 성능 테스트 진행 시 프로젝트 내부에서 끝난게 대부분이다. 필자도 몇번 성능 테스트를 진행했는데 생각보다 많은 공수가 소비된다. 그래서 이 부분을 개선하고자 자사 솔루션의 성능 테스트 표준 모듈을 구성하여 프로젝트에서 성능 테스트 진행 시 조금이나마 도움을 주려고 한다. 다음에는 프로젝트 내/외부로도 도움이 될만한 부분을 개선과제로 삼아 진행해보고자 한다.㈜에스티이지 PSP팀 강석환 프로