엔터프라이즈 애플리케이션의 복잡도는 갈 수록 증가하고 있다. 그만큰 성능을 보장하기 위한 노력들도 더해지고 있다. 성능을 보장하기 위해서는 가능한 빈번히 성능테스팅을 수행해야 하는데, 성능테스팅을 위한 비용또한 증가하고 있다. 큰 이유중 하나가 애플리케이션 아키텍처가 복잡해지기 때문에 정상적인 성능테스팅을 위한 준비작업들이 어려워 지고 있기 때문이다.
따라서 테스팅이 쉽게 될 수 있도록 애플리케이션 구조를 설계하기 위한 고려사항들을 제시하고자 한다.

Test Gateway를 만들라
서버의 애플리케이션이 단순한 HTTP프로토콜에 의해 호출되는 경우에는 성능테스팅이 쉽다. 하지만 XINTERNET 클라이언트라든지 애플릿혹은 ActiveX클라이언트에 의해 호출되는 애플리케이션을 테스팅하는 것은 가장 효과적인 테스팅 툴을 사용하더라도 많은 시간을 요구한다.
이런 경우 HTTP프로토콜을 사용하는 별도 GateWay를 둠으로써 쉽게 테스팅을 수행할 수 있게된다. 즉 애플리케이션 서버에 쉽게 실제 비즈니스로직을 호출해 볼수 있는 Gateway 역할의 Servlet이나 JSP를 만들어 외부에서 그것을 호출함으로써 쉽게 서버의 애플리케이션 성능을 검증해 볼 수 있을 것이다.

설정에 의한 Bypass 방법을 만들라
애플리케이션의 로직에는 오로지 비즈니스를 위한 로직만 포함되는 것이 아니다. 침임탐지 로직, 권한관리 로직등 비즈니스와 직접 관련이 없는 로직들도 포함되어있다. 이러한 부분은 시스템의 안정성을 위해 필요하지만 그만큼 테스팅을 어렵게 한다. 따라서 테스팅을 위해 필요한 경우 이러한 로직들을 Bypass할 수 있도록 구현해 둘 필요가 있다.

외부서비스와 Junction부에 더미 Stub을 만들라
트랜잭션이 단순히 내부 데이타나 로직만을 기반으로 수행된다면 쉽지만 외부연결(Junction)이 존재하면 외부 시스템까지 테스팅 가능한 상태가 되어야 한다. 그래서 이부분의 연결을 더비 스텁으로 끊어 내면 손쉽게 테스팅을 할 수 있다.
일반적으로 성능을 테스팅할때 외부 시스템때문에 애플리케이션에 충분한 부하를 발생시키지 못한다.이런 문제는 더비 스텁을 통해 해결이 가능하다.

추가이슈
애플리케이션 아키텍처 설계만으로 해결되지 않는 문제들이 있다. 개발 중의 애플리케이션은 계속변경된다. 그렇게 매주마다 추가되고 변경되는 애플리케이션의 성능을 테스팅하기 위해서는 테스팅 파라미터와 이것에 대한 부하를 효과적으로 발생시키기 위한 고려가 필요하다.
  • 어떻게 변경되는 트랜잭션에 대한 테스트 파라미터를 확보할 것인가?
  • 어떻게 부하를 발생시킬 것인가?

'성능과 장애' 카테고리의 다른 글

OOM을 위한 처리옵션  (0) 2012.03.21
<Joe> 성능문제 해결의 일반론  (0) 2009.10.30
Application Monitorability을 위한 설계 고려사항  (0) 2009.10.27
문제 해결을 위한 TOOLS  (0) 2009.10.26
OutOfMemoryError 해결  (0) 2009.10.26
Posted by sjokim
,