성능 테스트 도구 알아보기: Silk Performer (4) Workload 설정
Updated:
이번 글에서는 Silk Performer의 Script가 작성 완료된 후, 부하 발생 준비를 위해 필요한 Workload Configuration 작업 수행 과정에 대해 1) Workload 설정, 2) Agent 할당, 3) Pacing 적용 순으로 알아보도록 하겠습니다.
1. Workload 설정
새로운 Workload 생성을 위해, Silk Performer Workbench 화면의 왼쪽 트리 리스트 중에서 ‘Workloads’를 마우스 우클릭을 통해 선택하고, New Workload를 클릭합니다.(이름 미지정시 ‘New Workload’로 임의 지정됨)
1) Select and adjust Workload
이때, ‘Select and adjust Workload’라는 팝업화면이 뜨게 되는데, 상단에는 사용자 유형에 대한 Workload 모델에 대해 ‘Increasing’이 기본으로 설정되어 있습니다. Increasing 외에도 콤보박스 버튼을 클릭해 보면 추가적인 유형들이 나타나는데, 이와 관련하여 Silk Performer에서 제공하는 설명을 잠시 살펴 보도록 하겠습니다.
2) Workload Model for All User Types
Silk Performer에서 제공하는 Workload 모델은 다음과 같습니다.
- Increasing:
부하테스트가 시작될 때, Silk Performer는 사전 정의된 전체 사용자에 대해 시뮬레이션하지 않습니다. 단계적으로 사용자를 증가시키면서 지정된 모든 사용자가 실행될 때까지 Workload를 단계적으로 증가시킵니다. 이 Workload 모델은 시스템이 충돌하는 부하 수준을 찾아내거나, 허용 가능한 응답시간을 벗어나는 지점, 또는 오류 발생 지점을 찾기 원하는 경우에 유용합니다.
- Steady State:
이 모델에서는 테스트 전체에 걸쳐 동일한 수의 가상 사용자를 사용합니다. 모든 가상사용자는 부하 테스트 스크립트에 정의된 트랜잭션을 실행합니다. 작업이 끝난 가상 사용자는 트랜잭션을 다시 시작합니다. 트랜잭션간에 지연이 발생하지 않으면서 지정된 시뮬레이션 시간에 도달하면 테스트가 종료됩니다. 이 Workload 모델은 특정 부하 수준에서 테스트 대상 시스템의 동작을 확인하려는 경우에 유용합니다.
- Dynamic:
테스트가 실행되는 동안 가상 사용자 수를 수동으로 변경할 수 있습니다. 최대 가상 사용자 수를 설정한 후 테스트 중에 언제든지 이 한도 내에서 수를 늘리거나 줄일 수 있습니다. 시뮬레이션 시간은 지정되지 않으므로, 테스트는 수동으로 종료해야 합니다.
- All Day:
이 Workload 모델을 사용하면 유연한 방식으로 부하 분배를 적용할 수 있습니다. 부하 테스트 간격에 따라 다른 수의 가상 사용자를 할당할 수 있으며, 각각의 사용자 유형별로 다른 부하 분산을 적용할 수 있습니다. 이 Workload 모델은 가장 현실적인 방식으로 시나리오를 모델링하려는 경우 유용합니다.
- Queuing:
이 Workload 모델은 큐 메커니즘을 사용하여 여러 요청을 동시에 처리하는 Workload를 시뮬레이션 하는 경우 유용합니다. 최종 사용자가 아닌 웹서버에서 요청을 받는 서블릿 엔진 또는 트랜잭션 서버와 같은 애플리케이션 서버에 대해 대기열 모델을 사용하여 정확하게 테스트할 수 있습니다.
- Verification:
이 테스트는 기능 검증의 확장관점에서 수행될 때 유용하며, 웹기반 애플리케이션의 회귀테스트를 위해 사용될 수 있습니다. 이 Workload는 웹 애플리케이션의 검증을 자동화하고 command line interface에서 검증 테스트를 시작하려는 경우 유용합니다.
Source: https://www.microfocus.com/documentation/silk-performer/195/en/silkperformer-195-webhelp-en/SILKPERF-390794D9-WORKLOADMODELS-CON.html
여기서는, 우리가 사용자 유형을 ‘All Day’로 선택하고 진행하도록 하겠습니다.
세부 Workload 설정을 위해, 메인 화면의 왼쪽 트리 리스트 메뉴들 중, 앞서 Workloads에 새로 생성해 놓은 ‘New Workload’를 더블 클릭하여 ‘Workload Configuration’ 팝업창을 띄웁니다.
※참고.
- Workload 최초 생성 시 이름을 별도로 지정하지 않으면(ex. 01_적정부하테스트) ‘New Workload’라는 명칭으로 기본 생성되나, 이 이름은 추후 수정 가능합니다.
- 여러 개의 Workload가 만들어져 있을때 이들 중 하나를 선택하는 방법은, 사용하고자 하는 Workload 이름에 마우스 우클릭 후, ‘Set as Active Workload’를 클릭하면, 해당 글자가 굵게 표시되면서 활성화 된 것을 확인하실 수 있습니다.
3) Workload Configuration
Workload Configuration 팝업 상단에는 세개의 Tab이 있는데, Workload, Agent Assignment, Pacing으로 구성되어 있습니다.
이 각각의 Tab 세부 기능들이 이번 글에서 우리가 주요하게 살펴보게 될 영역입니다.
Workload Tab 상태에서 왼쪽 하단에 보시면 ‘Configure All Day Workload’라는 버튼이 있는데, 이 버튼을 클릭하면 ‘All Day Workload Configuration’이라는 팝업창이 뜨게 됩니다.
4) All Day Workload Configuration
이 화면에서는 작성된 스크립트별로, Vuser, Ramp Up, Duration 등을 지정할 수 있습니다.
예를들어, ‘메인페이지’와 ‘로그인’ 스크립트 두개를 대상으로 Workload 설정을 한다고 가정하고, 그 설정 방법에 대해 간단히 설명해 보겠습니다.
예시) 부하 설계 기준값
- 총 동시 사용자(Virtual Users) 수: 10명 (MainPage 5명, Login 5명)
- 총 수행시간: 6분 (Ramp Up 30초, Duration 5분, Ramp Down 30초)
위와 같은 기준에 따라 입력값을 적용해 보면, 아래 그림과 같은 결과로 반영됩니다. 실제 입력하는 방법은 그림 하단의 설명을 참조하시기 바랍니다.
입력방법 설명
- 왼쪽 첫번째 스크립트를 선택하고, 오른쪽 입력셀 화면의 첫번째 행부터 입력합니다.
- 첫번째 행은 Ramp Up 관련 VUser와 시간에 대한 정보로, 부하 발생은 VUser 0명에서 시작하여 5명까지 증가하고, 그 시작시간은 00초이고 Duration은 30초로 기입합니다.
- 두번째 행은 Ramp Up이 완료된 후 부하가 지속되는 시간으로, VUsers는 5명을 동일하게 유지하면서, Ramp Up이 완료된 30초를 시작으로 Duration은 5분으로 기입합니다.
- 세번째 행은 Ramp Down이 수행되는 시간으로, 부하지속까지 완료된 5분 30초가 시작시간이고, Duration은 30초로 기입합니다.
위와같이 기입을 완료하면 해당 내용이 곧바로 위의 그래프에 반영됩니다. 첫번째 스크립트에 대한 작업이 완료되면, 왼쪽의 두번째 스크립트에 마우스를 클릭한 후 동일한 작업을 진행합니다.(설정값이 동일한 경우에는, 기입된 셀의 범위를 마우스로 드래그한 후 복사하여 붙일 수도 있습니다.) 작업이 완료되면 하단의 OK를 클릭하여, 다시 Workload Configuration 팝업화면으로 돌아갑니다.
2. Agent 할당
Workload Configuration 팝업화면 상단의 두번째 Tab인 ‘Agent Assingment’ Tab을 클릭해보면, 오른측 상단에 부하 발생시 사용할 Agents 정보가 표시됩니다. 현재는 아직 Agent 컴퓨터들이 등록된 상태가 아니기 때문에, Silk Performer가 설치된 자신의 PC를 Agent로 사용하도록 localhost만 Agent로 표시되어 있는 상태입니다.
1) Agent Pool 구성
일단, Workload 팝업화면을 종료하고 나와서, 메인 화면의 상단 메뉴들 중 Settings > System을 선택합니다.
이때 ‘System Settings - Agents’라는 팝업이 뜨는데, 팝업 왼쪽에 위치한 아이콘 메뉴들 중 ‘Agents’를 클릭한 후, 다시 하단에 나타나는 ‘Add WAN Agent’를 클릭하면 Agent 컴퓨터의 IP를 등록할 수 있는 팝업화면이 나타납니다. IP 정보를 기입하고 확인버튼을 누르면 Agent가 추가되며, 연결이 완료되면 Status 열에 OK 표시가 나타납니다.
2) Project Agent 할당
Agent Pool 구성이 완료되면, 프로젝트에서 사용할 Agent를 할당하기 위한 작업을 이어서 수행합니다. 왼쪽 트리 리스트 중에서 Agents를 마우스 우클릭으로 선택한 후, ‘Configure Project Agents’를 선택합니다.
‘Configure Project Agents’ 팝업 화면이 나타나면, 여기 왼쪽에는 우리가 미리 등록해 놓은 이용가능한 Agent 컴퓨터 리스트들이 관련 정보(IP, Processors, Memory)와 함께 표시됩니다. 원하는 Agent들을 중앙에 있는 버튼(ex. >,»)을 통해 왼쪽에서 오른쪽으로 하나씩 옮기거나 한꺼번에 옮길 수 있습니다.
만약, Available Agents 리스트에 사용하고자 하는 Agent 컴퓨터 정보가 누락되었다면, 왼쪽 하단의 ‘Configure Project Agents’를 클릭하여 다시 Agent Pool 구성 화면으로 돌아간 후 추가 등록이 가능합니다.
등록 작업이 완료되면, Silk Performer Workbench 메인화면 왼쪽 트리 리스트의 Agents 아래에 해당 Agent 컴퓨터들이 추가된 것을 확인하실 수 있습니다.
3) Agent Assignment
Agent Pool 구성 및 Project Agent의 할당이 완료되면, 다시 ‘Workload Configuration’ 화면으로 돌아가서 Agent 설정 작업을 마무리합니다. 왼쪽 트리 리스트의 ‘Workloads’에서 우리가 생성한 Workload를 마우스 우클릭으로 선택하고 ‘Edit Active Workload’를 클릭합니다.
Workload Configuration 팝업 화면에서 두번째 Tab인 ‘Agent Assignment’를 선택하면, 우리가 등록한 Agents들이 오른측에 반영되어 있는 것을 보실 수 있습니다.
왼쪽에는 Assignment type이 있고, 기본적으로 ‘Static assignment to project agents’가 선택되어 있습니다. 이 상태에서 하단의 ‘Even user distribution’을 체크하면 각 스크립트별로 Agent들이 고르게 분포되어 할당됩니다.
※ Assignment type에 대한 추가적인 이해가 필요하신 경우에는, ‘Assigning Agents to Workload’ 도움말 부분을 참조하시기 바랍니다.
3. Pacing 적용
마지막으로 Workload Configuration 화면의 세번째 Tab인 Pacing에 대한 설명입니다.
우선 ‘Pacing’이라는 용어의 개념과 설명에 대해서는, Tech Blog 글들 중 홍성진 수석님의 ‘Introduce to Performance test(1/5)’에 자세히 기술되어 있기 때문에, 해당 내용을 참조하시면 Pacing 관련 개념을 이해하는데 도움을 얻으실 수 있습니다.
Pacing Tab 화면에서 나타나는 정보들 중 ‘Pacing’ 열의 버튼(…)을 클릭하면, ‘Configure Pacing’ 팝업창이 나타나게 됩니다.
우리가 목표로 하는 TPS만큼 일정한 호출 간격으로 부하가 지속될 수 있도록 설정하기 위해서는, Session pacing mode에서 ‘Wait time insertion’을 선택하고, Session pacing mode에서는 ‘Goal Session Time’을 선택한 후, 원하는 호출 간격만큼의 시간(ex. 30초)을 기입하여 주시면 됩니다.
위의 그림에서 다양한 색깔 및 구간 구분을 통해 Pacing의 설정 개념이 잘 표현이 되어 있긴 하지만, 설정값이 가지는 의미에 대한 이해를 돕고자, 간단히 예를 들어 그 구조를 설명해 보도록 하겠습니다.
예시 1) Goal Session Time > Execution Time인 경우
사전에 설정된 호출 간격인 Goal Session Time이 30초이고, 실제 부하 테스트 수행중에 측정되는 Execution Time 5초라면, 이때의 Pacing Wait Time은 25초가 됩니다.
- Goal Session Time = Execution Time + Pacing Wait Time
- 30초 = 5초 + 25초
즉, 5초간 부하발생(요청 및 응답)을 완료하고 25초간 기다렸다가, 다시 부하를 발생함으로써 30초의 호출간격을 지속적으로 유지합니다.
예시 2) Goal Session Time = Execution Time인 경우
사전에 설정된 호출 간격인 Goal Session Time이 30초이고, 실제 수행중에 측정되는 Execution Time 30초라면, 이때 Pacing Wait Time은 0초가 됩니다.
이때에는, 호출간격만큼의 응답시간이 발생했기 때문에, Pacing Wait Time이 전혀없는 상태로 바로 다음 호출을 발생시킵니다.
예시 3) Goal Session Time < Execution Time인 경우
사전에 설정된 호출 간격인 Goal Session Time이 30초이고, 실제 수행중에 측정되는 Execution Time 50초라면, 이때에도 Pacing Wait Time은 0초가 됩니다.
역시, Pacing Wait Time은 없는 상태로 바로 다음 호출을 발생시킵니다.
다만, 예시 1)과 2)에서는 계획된 Goal Session Time 이내로 호출간격이 유지됨으로, 사전에 목표한 TPS만큼 부하를 발생할 수 있게 되어 성공적인 부하 테스트가 되겠지만, 예시 3)의 경우에는 Goal Session Time보다 긴 호출 간격으로 인해 지연 수행되므로, 목표 TPS에 미달하는 결과로 측정되어 실패한 부하 테스트로 종결될 것입니다.
4. 마무리
이번 글에서는 설계과정에서 도출한 목표 성능 수준의 부하를 Silk Performer에서 실제로 발생시키기 위해, Workload를 설정하고, Agent를 할당하며, Pacing을 적용하는 방법들에 대해 살펴보았습니다.
Silk Performer의 구조를 처음보는 구성원 입장에서는 상당히 많은 기능과 화면들(ex.Menu, Icon, Tree, Popup, Tab…)로 인해, 그 전체적인 개념들이 처음부터 직관적으로 와닿기가 생각보다 쉽지 않습니다.(갑자기(!) 이자리를 빌어 Silk Performer에 대한 전반적인 가이드를 아낌없이 지원해 주신 홍성진 수석님께 감사의 말씀을 드립니다.^^)
그래서, 이 글에서는 그 일련의 흐름을 놓치지 않고 한번 따라가 볼 수 있도록 단계별로 가급적 많은 Screenshot과 상세 설명을 담을 수 있도록 작성해 보았습니다. 혹시, 단계 단계 넘어감에 있어 설명이 부족하다 싶으신 부분은 ‘Silk Performer Help’(웹 도움말) 또는 ‘Micro Focus Support and Training’(동영상 강의)에서 제공하는 상세한 설명들을 통해 추가적으로 개념을 잡아가시면 도움이 되실것 같습니다.
다음 글은, 스크립트 작성 및 Workload 설정이 완료된 상태에서 실제 실행하고 그 결과를 분석하는 방법들에 대한 설명을 이어가도록 하겠습니다. 2021년 새해에 뵙겠습니다!
[끝]