 |
|
난이도 : 초급 Greg Herringer, IT Architect, IBM
2004 년 5 월 01 일 빡빡한 예산과 시간도 얼마 없다면 JMeter를 사용하여 웹과 다른 애플리케이션의 스트레스 테스트를 추천한다. IBM의 Greg Herringer가 순수 자바 애플리케이션을 사용하여 WebSphere 미들웨어 솔루션을 테스트 했던 경험을 나눈다.
이 글은 Apache 오픈 소스 툴인 JMeter가 IBM WebSphere Application Server와
WebSphere Branch Transformation Toolkit (BTT)에 기반한 미들웨어 솔루션을
테스트 하기 위해 개발되었던 방법을 설명한다. 다양한 인터랙티브 Financial eXchange (IFX)
요청 메시지를 사용하는 동시 사용자 부하량을 변경하면서 시뮬레이션 하도록 설계되었다. 프로젝트 퍼포먼스
테스팅 예산이 제한되어 있고 솔루션이 XML 메시징을 사용한다면 퍼포먼스 테스팅 전략 수립에 있어 이 글이
도움이 될 것이다.
뛰어난 가시성 프로젝트를
위한 퍼포먼스 테스팅
금융 기관을 위한 최근의 프로젝트에서, 기업의 핵심 재정 시스템에 액세스하는데 필요한 애플리케이션들을 지원하는데
미들웨어 인프라를 사용하였다. 아키텍쳐 방향은 모든 핵심 금융 시스템 요청이 XML 기반의 IFX 메시징
표준을 사용하여 미들웨어 솔루션을 통해 라우팅되는 것이였다. 그림 1은 이것을(굵은 글씨) 사용하기 위한
첫 번째 애플리케이션과 관계된 미들웨어 인프라이다. 그리고 향후의 애플리케이션과 향후의 백엔드 시스템(회색)
이다.
그림 1. 테스트 될 솔루션
높은 가시성 솔루션이 채택되려면 로드에 대해 최적의 퍼포먼스를 보여야했다. 응답시간에 민감한 클라이언트의
경우 특히 더 중요하다. 또 하나 고려해야 할 점은 선택된 퍼포먼스 테스팅 방식을 새로운 애플리케이션으로
재사용해야 하는 것과 미들웨어의 앞뒤로 온라인이 가능해야 한다.
사용자 인터페이스가 없다!
미들웨어 인프라를 사용하도록 설계된 첫 번째 애플리케이션인 신용 처리 애플리케이션은 미들웨어 프로젝트 완료
후 구현되도록 스케쥴이 되어있었다. 이를 위해서는 테스트 팀은 테스트를 고안하여 미들웨어 요청을 준비하고
제출하는 사용자 인터페이스 도움 없이 제품 부하를 시뮬레이션 해야 했다.
제한된 예산
금융 기관은 미들웨어 퍼포먼스 테스팅을 지원할 적당한 툴 세트를 갖추고 있지 않았다. 따라서 관찰된 미들웨어
퍼포먼스 결과와 툴과 준비에 드는 최소한의 예산을 신중하게 보고하는 것이 도전 과제였다.
구원자 JMeter
사용할 수 있는 오픈 소스 테스팅 툴들을 조사한 결과 Apache JMeter가 미들웨어 퍼포먼스 테스트
요구사항들을 충족시킬 수 있다는 것을 알아냈다. JMeter는 GUI 기반의 애플리케이션을 제공하여 다양한
재사용이 가능한 테스트 플랜을 설계 및 실행할 수 있도록 한다. JMeter는 테스트 결과를 XML 포맷으로
캡쳐하는 것을 지원하여 테스트 후의 통계학적 분석이 가능하다. 이 두 가지 기능은 테스트 팀이 반복적인
테스트 결과를 개발하고 문서화하여 "높은 가시성"을 실현할 수 있도록 도와주었다.
많은 오픈 소스 테스트 툴은 웹 사이트를 테스트 할 수 있도록 설계되었다. 테스트는 한 개 이상의 페이지
또는 형식과 사용자 사이의 인터랙션을 에뮬레이션 해야 한다. 애플리케이션 웹 인터페이스는 그 당시 사용할
수 없었기 때문에 미들웨어 솔루션이 테스트되었고 선택된 툴은 브라우저와 인터랙션 없이 XML 기반의 메시징을
지원해야 했다. JMeter의 SOAP/XML 요청 컴포넌트는 이러한 요구사항을 충족시킨다.
마지막으로 JMeter는 Apache 소프트웨어 재단의 제품이기 때문에 라이센스 비용이 들지 않아 "제한된
예산" 조건에도 맞았다.
테스트 스크립트 설계하기
이 퍼포먼스 테스트의 목적은 다양한 동시 부하 조건 하에서 사전 정의된 IFX 인코딩의 요청 메시지를 무작위로
선택하고 예상된 IFX 인코딩의 응답을 받기까지의 경과 시간을 기록하는 것이다. 다음의 다섯 가지의 JMeter
테스트 플랜 컴포넌트는 퍼포먼스 테스트 스크립트를 준비하는데 사용되었다:
테스트 플랜
이것은 테스트의 핵심 컴포넌트이다. 프로젝트의 네이밍 규약에 따라 테스트 이름이 이 과정 중에 정해진다.
Functional Test Mode 역시 선택되어 전체 IFX 인코딩의 응답이 View Results
Tree 컴포넌트로 관리된 테스트 결과에 캡쳐되었다.
그림 2. JMeter 테스트 플랜
HTTP Header Manager
이 컴포넌트는 미들웨어에 필요한 HTTP 헤더 값을 지정하는데 사용되었다. 미들웨어로 보내진 IFX 인코딩의
각 요청은 이러한 HTTP 헤더 값을 포함하게 된다.
그림 3. JMeter HTTP Header Manager
Thread Group
이 컴포넌트는 특정한 동시 사용자 수를 에뮬레이션 하기 위해 반복되었다. 예를 들어 5 명의 동시 사용자를
에뮬레이션 하기 위해 다섯 개의 Thread Groups 지정되었다.
그림 4. JMeter Thread Group
Thread Group 컴포넌트가 Number of Threads
라는 레이블이 붙은 필드를 갖고 있다는 것을 주목하라. 이 필드는 Thread Group과 관련된 쓰레드의
수를 제어한다. 각 Thread Group 을 하나의 쓰레드로 제한하기로 결정했다. 각 Thread Group은
무작위로 선택된 IFX 인코딩의 요청 세트를 갖고 있기 때문이다. 다중 쓰레드가 한 개 이상의 Thread
Group으로 지정되었다면 같은 메시지 세트가 여러 번 보내졌어야 했다. 이는 무작위 선택 기준의 목적에
어긋난다.
SOAP/XML-RPC Request
이 컴포넌트는 각 Thread Group 이 보낸 IFX-인코딩 요청의 정해진 수
만큼 반복되었다. 실제 IFX 인코딩 요청은 이 컴포넌트에서 지정되었다.
그림 5. JMeter SOAP/XML-RPC Request
View Results Tree
이 컴포넌트는 두 가지 목적을 이룬다. 테스트가 실행될 때 사용자 인터페이스는 메시지가 송수신 되는 테스트
과정을 디스플레이한다. 게다가 이 컴포넌트는 테스트 결과를 나중에 분석용으로 쓰기 위해 파일에 작성한다.
그림 6. JMeter View Results Tree
JMeter 테스트 플랜은 다양한 동시 사용자 로드를 에뮬레이션 하도록 고안되었다. 최소 한 명의 사용자부터
최대 80명의 동시 사용자까지 이른다. 모든 테스트 플랜을 위해 위에 언급된 다섯 개의 컴포넌트가 일관된
방식으로 전개되어 퍼포먼스 테스트 실행을 단순화했다.
테스트 스크립트 구현하기
일단 요구된 제미터 컴포넌트가 구분되고 일반 테스트 플랜 디자인이 인식되면 테스트 스크립트가 구현되어야
했다. 다행히도 300 개의 IFX 인코딩 모델 요청 메시지와 System Integration Test에서
사용할 수 있는 관련 테스트 데이터가 있었다. 문제는 최대 8,000 개의 무작위로 선택된 요청 메시지들을
보낼 수 있는 테스트 스크립트를 준비하는 것이다. JMeter 사용자 인터페이스를 독자적으로 사용하는 것은
메시지를 8,000 개의 SOAP/XML-RPC 요청으로 수동으로 자르고 붙이는 것을 의미한다. 이 작업을
더 복잡하게 만드는 것은 각 요청이 금융 기관의 IFX 스팩에 따라 독자적인 RQUID를 요구한다는 것이다.
테스트 스크립트 생성 자동화
이미 언급했지만 이 프로젝트의 퍼포먼스 테스팅 방법은 앞으로의 미들웨어 릴리스에 재사용 하는 것이다. 이런
이유로 테스트 팀은 특정한 매개변수에 근거한 JMeter XML 인코딩 테스트 스크립트를 내보내는 자바
애플리케이션을 준비했다. 자바 애플리케이션인 Scripter는 지정된 수의 쓰레드와 쓰레드 당 지정된 수의
IFX 인코딩 메시지를 가진 퍼포먼스 테스트 스크립트를 준비할 수 있고 애플리케이션에 의해 무작위로 선택된다.
IFX 인코딩 메시지는 Scripter의 속성 파일에서 지정된 디렉토리에 제공되는 메시지 세트에서 소스를
얻는다.
Scripter 자바 애플리케이션의 소스 코드와 사용법을 다운로드 할 수 있다(참고자료)
테스트 실행하기
JMeter는 2-way IBM eServer™ xSeries® 360 server (2 GB RAM ,
Windows® 2000)에서 실행되었다. 그림 7 은 테스트 설정이다.
그림 7. JMeter performance testing configuration
테스트가 실행되면서 IFX 인코딩 응답은 기록되어 캡쳐된 MQ Time과 Total Time metrics가
분석될 수 있었다. JMeter를 통해 관찰한 JMeter Time 역시 분석되었다.
테스트 팀은 세 사이클의 퍼포먼스 테스트를 감행했다. 애플리케이션 퍼포먼스를 높이기 위해 첫 번째 두
사이클 후에 변경과 설정 튜닝을 했다.
결과 분석
테스트 팀은 Microsoft® Excel 스프레드시트를 사용하여 테스트 결과를 반입하여 경과 시간 메트릭스에
대해 통계를 냈다.
참고자료
- developerWorks worldwide 사이트에서 이 기사에 관한 영어원문.
- JMeter,
Apache
Jakarta Project, Binary
Downloads page.
- Download
the Scripter Java application
- Interactive
Financial eXchange (IFX) Forum
- Microsoft
Excel, Gnumeric,
Open
Office Spreadsheet, Abacus.
- OpenSTA
- Putting
Your DB2 Database to the Test: Measuring Performance with
JMeter.
- Eye
on performance: A load of stress
- Web
application testing with Puffin: Puffin testing framework.
- Beyond
performance testing (developerWorks, April 2004),
- Software
Testing and Verification.
- Performance
Management, Testing, and Scalability Services.
- WebSphere
Application Server, IBM
WebSphere Branch Transformation Toolkit,download
trial versions of many WebSphere products.
- developerWorks
Java technology zone.
- developerWorks
Linux zone.
- Linux
books at discounted prices.
- Speed-start
your Linux app.
필자소개  | |  | Greg Herringer: IT Architect. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|