(주)인첼베이스

공공 등 인터넷 서비스는 개발 초부터 부하 테스트 해야 성공
10개 사이트 중 6개가 웹 화면에 아무런 표시 없이 멈춘다


오늘날 웹 애플리케이션이 비즈니스에 차지하는 비중은 매우 높다. 따라서 웹 애플리케이션이 불안정하여 고객이 불편을 느끼거나 사용할 수 없는 상황이 발생하게 된다면 회사에 심각한 타격을 줄 수 있다. 이러한 웹 애플리케이션을 안정적으로 유지할 수 있도록 해결해 줄 수 있는 솔루션이 있어 주목을 받고 있다. 웹 부하 테스트 솔루션인'NeoLoad'이 바로 그 주인공이다. 이 솔루션에 대해 집중 살펴본다.

서버 통합 시 성능 보장은 누가하나

웹 기반으로 애플리케이션이 개발되면서 기업 업무 시스템 혹은 인터넷 서비스 등에서 대부분 웹을 이용하고 있다. 그러나 서버나 네트워크 장비들은 해마다 성능 개선을 진행하고 있지만, 실제 웹 서비스의 성능이 빨라졌다고 느끼는 사용자는 그리 많지 않을 것이다. 또한 응답속도가 느려지는 문제뿐만 아니라 특별한 에러 메시지 없이 화면에 아무런 내역도 출력되지 않는 경우나, 콘텐츠의 일부만 표시되는 문제가 발생하는 경우가 늘어나고 있다.

미국의 전문 조사 회사인 BIG(Business Internet Group of San Francisco)의 조사 결과에 따르면, 놀랍게도 10개의 사이트 중 6개의 사이트 비율로 고객의 웹 화면에 아무런 메시지 표시 없이 멈춰 있는 것 같은 현상이 발생하거나, 콘텐츠 에러, File Not Found, 인터넷 서버 에러를 표시하는 문제가 발생하고 있다고 한다. 아마 인터넷 이용자의 대부분은 이러한 현상에 자주 접하고 있을 것이다. 이는 웹 서비스 운용 기업에 있어서 절대 가벼운 문제는 아니다.

오늘날의 웹 애플리케이션은 ▲웹 서버 ▲애플리케이션 서버 ▲DB 서버 등과 같은 다양한 역할을 하는 여러 서버로 나누어 운영되며, 또한 이러한 서버들은 로드 밸런스나 SSL가속기 및 방화벽 등과 같은 여러 네트워크 장비를 통한 여러 계층을 가진 복잡한 구성을 가지고 있다.

물론 담당 개발자들이 각각의 모듈을 만들 때는 충분한 성능을 고려하여 개발하고 있다. 그러나 시스템 전체가 통합되었을 때, 얼마나 안정적인 성능을 보장하는지를 파악하는 담당자가 과연 몇 명이나 있을까? 네트워크를 통해서 복잡하게 연결된 만큼 전체 시스템 처리에 대해 누가 성능을 보장할 수 있을 것인가.

이러한 애플리케이션의 성능 보장을 위해서는 기본적으로 부하 테스트를 진행할 필요가 있다. 또한 부하 테스트를 진행할 때 웹 서비스의 변경 없이 정확한 사용자 부하가 발생하여 성능에서 병목을 도출할 수 있어야 한다.

개발 초기 단계부터 부하 테스트 적용 필요.

이러한 성능 문제가 발생하는 근본적인 원인은"부하 테스트를 하지 않았다"는 것과"부하 테스트 방법이 적절하지 않았다"는 점이다. 많은 프로젝트에서 부하 테스트는 시스템이 완성되고 난 후에 수행하는 경우가 많다. 기능 테스트의 경우에는 시스템이 통합돼 있지 않으면 그 동작을 체크할 수 없지만, 부하 테스트의 경우에는 각 기능 모듈 별로 병목 현상을 유발할 수 있는 위험 요소를 개발자 스스로 테스트할 수 있다. 이러한 문제들로 인해 부하 테스트에 대한 적절한 시기를 설정하지 못하는 경우가 많다. 실제 프로젝트 프로세스를 살펴보면, 대부분의 테스트 공정은 개발의 최종 단계로만 설정되어 있다. 시스템이 개발되고 통합된 후에 성능 문제가 발생한다면 병목 현상을 유발하는 지점을 찾기 어려워진다.

복잡하게 구성된 시스템 내에서 병목 현상의 원인을 파악하는 것은 매우 어렵기 때문에 대처 방안으로 문제 요인으로 의심되는 곳을 몇 군데 수정한다 해도 거의 해결하기 어렵고, 문제의 본질적인 원인이 전혀 다른 곳에 있는 경우도 흔히 있다.

그러나 기능 모듈마다 부하 테스트를 수행하여 위험 요소를 미리 제거하면, 시스템이 개발되고 통합된 후에 성능 튜닝을 진행하는데 현저히 적은 비용으로 문제를 해결할 수 있다. 기능 모듈마다의 튜닝이 모두 완료된 후 각 모듈의 연계 부분에만 초점을 맞춰 조정할 수 있기 때문이다. 개발과 테스트를 함께 진행할 수 있기 때문에 전체 개발 기간도 단축할 수 있다.

미국의 조사 기관인 뉴포트 그룹(Newport Group)의 보고서에 의하면, 성능 문제가 발생한 사이트와 발생하지 않은 사이트를 비교했을 경우 부하 테스트의 계획과 실행에 따라 성공 그룹과 실패 그룹이 확연히 구분된다.

부하 테스트를 수행하지 않은 대부분의 사이트가 시스템의 시작 부분부터 실패하고 있는 반면, 사양 결정 단계 혹은 개발의 초기 단계부터 부하 테스트를 계획적으로 수행한 대부분의 사이트는 시작 부분부터 성공하고 있다.

더욱 심각한 문제는 개발 후반부에 부하 테스트를 수행하고 있음에도 시작 단계부터 실패하는 사례가 눈에 띄는 것이다. 이것은 문제가 발생할 것을 미리 예측했음에도 불구하고 기한 문제 등으로 인해 무리하게 시스템을 오픈해 실전 운영에 들어갔던 사이트의 경우에 많이 발생하며 이는 상당히 우려되는 일이다.

사실은 이 부분에서도 이미 한 가지 문제가 숨어 있음을 예상할 수 있는데, 그것은 부하 테스트를 올바르게 하지 않았을 가능성이다. 테스트 툴을 사용해 예상되는 트래픽보다 많은 부하를 걸어 보고 문제 없음을 확인했으나, 실제 운영에서는 그 몇 분의 일 수준의 부하로도 간단하게 시스템이 다운되거나, 심각한 성능 문제가 발생하는 경우가 있기 때문이다.

실제 운영 환경에 대한 정밀 시뮬레이션은 필수

설계 상의 한계 상황을 넘는 테스트를 수행하면서도 성능 부족이 발생하는 이유의 대부분은 실제 애플리케이션의 운영을 무시한 틀에 박힌 듯한 테스트 만을 진행하는 경우가 많기 때문이다.
웹 애플리케이션의 부하 테스트라고 해도 실제로는 5~10명 정도의 테스트 팀에서 동시에 단말로부터 부하를 거는 테스트를 통해 그 때의 시스템의 부하 상황을 로그 분석하는 법을 사용하는 경우가 가장 많다. 이것만으로는 부하 테스트가 될 수 없다는 것을 잘 알겠지만, 많은 경우가 그 정도의 테스트 수준으로 테스트를 끝내는 것이 현실이다.

또 다른 경우는 인터넷 상의 오픈 소스 커뮤니티에서 공개되어 있는 프리웨어로 제공되는 웹 애플리케이션 부하 테스트툴을 사용하는 경우이다. 이 경우에는 설정에 의해서 어느 정도 자세한 부하 시뮬레이션의 시나리오를 작성하여 부하 테스트를 한 것과 같은 성능을 실행할 수 있다. 그러나 병목 현상이 있는지에 대한 문제 검출의 기능이 없고, 여러 계층으로 나누어진 복잡한 시스템 구성에는 대응할 수 없는 문제가 있다. 따라서 원래 목표했던 테스트를 모두 만족할 수 없는 것이다.

마지막으로, 사용자가 자체 개발한 테스트 툴을 사용하는 경우도 있다. 개발에 대한 수고를 감안하지 않는다면 이러한 툴로 복잡한 테스트도 실행할 수 있다. 그렇지만 경험 부족으로 인한, 생각하지 못했던 함정에 빠지는 사례가 많다. 자체 개발한 테스트 툴은 정말로 원하는 만큼의 부하가 생성되고 있는지, 혹은 문제가 발생됐을 때 제대로 발견하고 있는지 등 테스트 툴 자체에 대한 테스트와 검증이 돼 있지 않기 때문이다. 이것은 프리웨어 테스트 툴에도 공통되는 문제이다. 결국, 개발 기간을 단축하면서 정확한 테스트를 실시하는 지름길은 전문 테스트 툴을 도입하는 것이다.

NeoLoad를 통해 쉽고 빠르게 테스트

부하 테스트에서 가장 중요한 역할은 테스트 스크립트의 작성이다. 이 테스트 스크립트를 얼마나 실제 사용자가 사용하는 것과 유사하면서 빠르게 작성할 수 있는지가 부하 테스트ㅜ성공 여부와 전체 진행 시간을 결정하게 되는 부분이다.

㈜인챌베이스에서 공급하는 NeoLoad는 테스트 스크립트ㅜ작성을 기본적으로 단순히 사용자의 웹 브라우저를 통해 웹애플리케이션을 이용하는 것만으로 스크립트를 작성할 수 있도록 한다.
그리고 스냅샷 기능을 통해 테스트 스크립트에서 작성된 각 페이지에 대해 레코딩 시점의 화면을 그대로 캡처하여 화면 구성 및 상태를 정확하게 파악하고, 부하 테스트 시점과 비교하여 보다 쉽게 문제를 파악할 수 있다.

또한 별도의 코딩 작업을 통하지 않고도 보다 복잡한 테스트 스크립트 구성이 가능하도록 사용자 정의 액션들을 제공한다. 실제 사용자가 웹 애플리케이션을 이용할 때는 전체 시나리오 흐름으로 한 번 실행하고 끝내는 것이 아니라 특정 구간에서는 반복적으로 실행하거나, 조건에 따라 특정 구간은 실행하지 않는 등 다양한 사용 패턴을 보여 주게 된다. 하지만 많은 부하 테스트 툴에서는 이러한 기능을 제공하지 않거나, 복잡한 코딩 작업을 통해 구현해야 하는 문제가 있다.

하지만 NeoLoad에서는 Drag and Drop 방식으로 원하는 액션을 위치하고 몇 번의 클릭 작업만으로 간단하게 구현할 수 있도록 제공하고 있다. 그리고 웹 애플리케이션 내의 다양한 전송 데이터 방식을 지원하며, 이러한 전송 데이터를 동적으로 적용할 수 있는 다양한 기능을 제공한다. 웹 페이지의 콘텐츠 결과에 따라 동적으로 페이지 파라미터를 변경하도록 설정하거나, 외부의 파일 또는 쿼리 등을 통해 데이터를 읽어와서 동적으로 변경하도록 설정하는 것도 가능하다.

웹 페이지 파라미터의 동적 변경은 기본적으로 동적으로 변경되는 웹 페이지의 콘텐츠 결과에 따라 변경되도록 하며, 그 외에도 사용자 정의 리스트 및 랜덤(random)하게 수치 및 문자형 데이터 생성, 동적 날짜 생성, 파일 및 쿼리에서 데이터를 읽어 오는 등 다양하게 적용할 수 있다. 또한 이러한 기능은 결과적으로 HTML 콘텐츠의 정합성을 검증하는데 활용할 수 있다. 이를 통해 실제 사용자가 입력할 수 있는 데이터를 완벽하게 적용할 수 있으므로 보다 현실적인 부하 테스트가 가능하다.

부하 실행 시점에도 단일의 스크립트를 실행하는 것이 아니라 다중의 스크립트에 대한 유저 분배를 적용할 수 있을 뿐만 아니라 시나리오 내역을 다양하게 구성하여 동시에 여러 시나리오를 실행하는 것이 가능하도록 한다.

이러한 부하 발생 사용자의 네트워크 환경을 프로그램적으로 조정하게 다양한 가상 네트워크 환경을 구성할 수 있도록 설정할 수도 있다.

또한 부하 발생 유형도 일정 사용자가 지속적으로 유지되도록 할 수도 있고, 일정하게 사용자를 증가시키거나, 순간적인 피크 시점의 재현을 위한 순간 트래픽 피크 상황을 재현할 수 있도록 제공하고 있다. 추가적으로 사용자가 임의 부하 발생 상황을 정의하여 피크 상황, 급격한 사용자 증가/감소 상황, 또는 일정하게 유지되는 상황을 혼합적으로 구성하여 테스트를 진행할 수 있도록 지원한다.

부하가 발생하는 동안 별도의 에이전트 설치 없이 시스템의 상태를 모니터링 할 수 있도록 다양한 모니터링 항목을 제공하고 있으며, 실시간으로 부하 상황과 시스템 상태를 그래프로 보여 줘 성능 병목(저하) 요소를 쉽게 파악할 수 있도록 도와준다.

NeoLoad는 테스트 결과를 단순한 그래프를 생성하여 보내주는 것이 아니라, 테스트 종료와 동시에 보고서 형식으로 전문 테스트 보고서를 자동으로 생성하여 사용자에게 제공한다.

전체 테스트 결과 통계뿐만 아니라 시나리오, 페이지, URL별 응답속도 통계와 함께 에러 내역 및 각 모니터링 시스템에 대한 결과 보고서를 직접 제공하고 있다. 또한 이렇게 생성된 보고서는 보고서 구성을 그대로 유지한 상태로 HTML, WORD, PDF, XML 형태로 전환하여 사용자 보고서 작성을 보다 쉽게 도와준다.

보다 상세한 분석을 위하여 사용자가 원하는 항목만을 추출하여 사용자 정의 그래프를 생성할 수 있도록 제공하며, 이렇게 생성된 그래프는 외부 파일로 내보내거나, 보고서 생성 시점에 사용자 의견을 추가하여 함께 보고서에 첨가할 수 있다. 또한 자동 보고서 생성 기능과 비교 분석 기능을 함께 제공하여, 여러 번에 진행된 테스트 결과를 비교하여 성능 개선 비교 보고서를 자동으로 생성하여 준다.

이를 통해 사용자가 수동으로 성능 튜닝 전과 후에 대한 성능 개선율에 대한 비교 보고서를 따로 작성하지 않고도 간단하게 모든 계산된 통계 데이터를 제공하는 보고서를 작성할 수 있다.

그 외에도 SOAP 및 오라클 Forms, Adobe Flex, Google Web Toolkit 등 WEB2.0 기반 기술에 대한 테스트를 보다 쉽게 진행할 수 있는 모듈을 함께 제공하고 있다.

NeoLoad는 모듈화된 라이센스를 제공하여 기본적으로 저렴한 가격에 사용자가 원하는 모듈만을 구매하는 방식으로 보다 저렴한 부하 테스트를 진행할 수 있도록 지원한다.

㈜인챌베이스 지난 10년간 수백여 사이트의 부하 테스트를 진행한 전문 컨설턴트들로 구성,제품 뿐만 아니라 기술지원, 교육 등을 함께 지원하고 있다. 이를 통해 보다 양질의 부하 테스트가 가능하도록 고객을 지원하고 있다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지