내보내기(0) 인쇄
모두 확장

혼합 환경에서 부하 테스트 실행

이 항목에서는 혼합 환경에서 실행되는 Visual Studio 부하 테스트의 실행에 대해 설명합니다. "혼합 환경"은 부하 테스트의 구성 요소가 온-프레미스, Windows Azure 작업자 역할 등, 서로 다른 컨텍스트에서 호스팅되는 환경입니다. 예를 들어 혼합 환경에서는 테스트 에이전트가 온-프레미스로 실행되고 데이터 리포지토리가 Windows Azure SQL 데이터베이스 서버에 배치됩니다. 이는 Windows Azure의 Visual Studio 부하 테스트 개요에서 설명하는 시스템과 대조를 이룹니다. 이 시스템에서는 워크스테이션을 제외한 모든 구성 요소가 Windows Azure 작업자 역할로 실행됩니다.

이러한 혼합 환경에서는 규정상의 이유나 사용자 응용 프로그램과 관련된 이유 때문에 부하 테스트를 실행해야 할 수 있습니다. 이 항목에서는 선택할 수 있는 옵션과 다양한 시나리오를 설정하는 방법을 살펴봅니다.

저자: Jaimie Alva Bravo, Sidney Higa, Paolo Salvatori

다운로드

이러한 절차에 필요한 파일은 VSLoadTestInMixedEnvironments에 있습니다.

동시성

다양한 구성을 비교 평가하는 데 사용되는 한 가지 요소는 대규모 데이터 센터에서 많은 프로세스를 실행하는 데 따른 동시성 증가입니다. 동시성은 몇몇 작업이 동시에 실행되고 상호 작용할 수 있는 시스템의 속성으로 정의됩니다. 동시성을 제한하는 요소는 사용 가능한 IP 주소의 수입니다. 시스템에서 활용하는 IP 주소가 많을수록 동시 처리가 향상됩니다. 일반적으로 사용 가능한 주소의 수는 IP 공급자의 규모에 따라 다릅니다. 서비스 수준 계약이 상당한 수준인 경우 일반적으로 많은 수의 IP 주소가 할당됩니다. 그러나 이러한 계약은 일반적이지 않습니다. 하지만 Windows Azure를 플랫폼으로 사용하는 경우 Microsoft 데이터 센터와 해당 리소스를 사용할 수 있는 이점이 있습니다. 여기에는 IP 주소의 큰 풀이 포함됩니다. Windows Azure에서 호스팅된 서비스에는 가상 IP 주소가 할당됩니다. 이 설명에서 IP 주소는 외부와 접한(인터넷) 부하 분산 장치(호스팅된 서비스가 아님)에서 사용됩니다. 많은 수의 IP 주소 보유는 Microsoft 데이터 센터의 장점입니다. 하지만 이러한 수준의 동시성이 모든 시스템에서 필요한 것은 아닙니다.

동시성을 위한 이러한 용량 증가는 Window Azure에서 부하 테스트를 실행하는 또 다른 큰 이점입니다. 이 수준의 동시성은 대규모 데이터 센터 외부에서 재현하기가 가장 어렵습니다.

요소

동시성에 영향을 주는 6가지 요소가 있습니다. 처음 두 가지 요소는 부하 테스트를 실행하는 컨텍스트인 클라우드와 온-프레미스입니다.

  • 온-프레미스

  • 클라우드

다른 네 가지 요소는 다음과 같은 부하 테스트의 구성 요소입니다.

  • 테스트 컨트롤러

  • 테스트 에이전트

  • 결과 리포지토리

  • 테스트되는 시스템

네 가지 구성 요소를 그래픽으로 나타내면 다음과 같습니다.

로드 테스트 요소

이 그래픽에서 선의 상대적 너비는 전송되는 데이터의 양을 나타냅니다. 선이 두꺼울수록 데이터 양이 많아집니다. 가장 많은 데이터 전송은 테스트 컨트롤러와 결과 리포지토리 간에 발생합니다. 가장 가벼운 부하는 테스트되는 시스템과 컨트롤러 간에 발생합니다. 그러나 실제 부하는 테스트되는 시스템에서 생성하는 로깅의 양으로 결정됩니다. Windows Azure의 Visual Studio 부하 테스트 개요의 그래픽을 참조하십시오.

note참고
명확하게 설명하기 위해 이 그래픽에서는 Visual Studio를 호스팅하는 워크스테이션에서 테스트 컨트롤러도 호스팅하는 것으로 가정합니다. 이 구성은 Visual Studio와 테스트 컨트롤러 간의 통신을 용이하게 합니다. 부하 테스트 중에 컨트롤러는 실시간 성능 모니터링을 위해 많은 양의 데이터를 Visual Studio로 다시 스트리밍합니다.

토폴로지

네 가지 구성 요소와 두 가지 컨텍스트를 기반으로 다양한 토폴로지를 선택할 수 있습니다. 부하 테스트의 네 가지 구성 요소는 한 컨텍스트나 다른 컨텍스트에 존재할 수 있습니다. 예를 들어 가장 단순한 두 가지 토폴로지는 다음과 같습니다.

  1. 클라우드의 모든 구성 요소

  2. 온-프레미스의 모든 구성 요소

명확하게 설명하기 위해 가장 간단한 두 가지 선택 항목을 다음과 같이 표로 정리했습니다.

 

컨트롤러 에이전트 리포지토리 테스트되는 시스템 참고

온-프레미스

온-프레미스

온-프레미스

온-프레미스

제한된 동시성, 건물 외부에 네트워크 트래픽이 없음

클라우드

클라우드

클라우드

클라우드

큰 동시성(IP 주소가 더 많음), 클라우드 외부에 네트워크 트래픽이 없음

이제 토폴로지는 더 복잡해집니다. 단순화하기 위해 아래 표에서는 한 가지 주요 구분을 보여 줍니다. 이 표에서 컨트롤러는 온-프레미스로 실행됩니다.

에이전트에서 테스트되는 시스템으로의 트래픽은 테스트 비용의 일부로 간주되므로 고려되지 않습니다. 또한 다음 표들에서 네트워크 트래픽에는 금전적 비용이 있습니다. 데이터 센터 밖으로 전송된 데이터에 대해 요금이 부과되며 내부 트래픽은 요금이 부과되지 않습니다. 가격 책정에 대해 자세히 알아보려면 가격 책정 정보를 참조하고 "GB 단위로 측정된 데이터 전송"을 검색하십시오.

다음 표에서는 테스트 컨트롤러가 온-프레미스로 실행되는 경우로 크게 구분합니다. 이 경우 구성 요소 간의 트래픽은 구성 요소와 데이터 전송 양에 따라 다양한 수준의 영향력을 가지고 경계를 넘어야 합니다.

온-프레미스로 실행되는 컨트롤러

컨트롤러 에이전트 리포지토리 테스트되는 시스템 참고

온-프레미스

온-프레미스

온-프레미스

클라우드

제한된 동시성, 테스트되는 시스템에서 컨트롤러로 네트워크 트래픽이 전송됨

온-프레미스

온-프레미스

클라우드

온-프레미스

제한된 동시성, 컨트롤러에서 리포지토리로 네트워크 트래픽이 전송됨

온-프레미스

온-프레미스

클라우드

클라우드

제한된 동시성, 테스트되는 시스템에서 컨트롤러로 그리고 다시 리포지토리로 네트워크 트래픽이 전송됨

온-프레미스

클라우드

온-프레미스

온-프레미스

큰 동시성, 에이전트에서 컨트롤러로 네트워크 트래픽이 전송됨

온-프레미스

클라우드

온-프레미스

클라우드

큰 동시성, 에이전트와 테스트되는 시스템에서 컨트롤러로 네트워크 트래픽이 전송됨

온-프레미스

클라우드

클라우드

온-프레미스

큰 동시성, 에이전트에서 컨트롤러로 그리고 다시 리포지토리로 네트워크 트래픽이 전송됨

온-프레미스

클라우드

클라우드

클라우드

큰 동시성, 에이전트와 테스트되는 시스템에서 컨트롤러로 그리고 다시 리포지토리로 네트워크 트래픽이 전송됨

이 표에서는 두 번째 주요 구분을 보여 줍니다. 이 표에서 컨트롤러는 클라우드에서 실행됩니다.

클라우드에서 실행되는 컨트롤러

컨트롤러 에이전트 리포지토리 테스트되는 시스템 참고

클라우드

온-프레미스

온-프레미스

온-프레미스

제한된 동시성, 에이전트와 테스트되는 시스템에서 컨트롤러로 그리고 다시 리포지토리로 네트워크 트래픽이 전송됨

클라우드

온-프레미스

온-프레미스

클라우드

제한된 동시성, 에이전트에서 컨트롤러로 그리고 다시 리포지토리로 네트워크 트래픽이 전송됨

클라우드

온-프레미스

클라우드

온-프레미스

제한된 동시성, 에이전트와 테스트되는 시스템에서 컨트롤러로 네트워크 트래픽이 전송됨

클라우드

클라우드

클라우드

클라우드

큰 동시성, 에이전트에서 컨트롤러로 네트워크 트래픽이 전송됨

클라우드

클라우드

온-프레미스

온-프레미스

큰 동시성, 테스트되는 시스템에서 컨트롤러로 그리고 다시 리포지토리로 네트워크 트래픽이 전송됨

클라우드

클라우드

온-프레미스

클라우드

큰 동시성, 컨트롤러에서 리포지토리로 네트워크 트래픽이 전송됨

클라우드

클라우드

클라우드

온-프레미스

큰 동시성, 테스트되는 시스템에서 컨트롤러로 네트워크 트래픽이 전송됨

클라우드

다중 클라우드

클라우드

클라우드

가장 큰 동시성, 적어도 DC1의 테스트되는 시스템에서 DC2의 컨트롤러로(설정에 따라 더 많을 수 있음) 네트워크 트래픽이 전송됨

권장 사항

이러한 토폴로지는 전체를 보여 주기 위한 것입니다. 선택한 토폴로지가 사용하기에 적합하지 않을 수도 있습니다. 예를 들어 100GB가 넘는 SQL Server 데이터 저장소가 필요한 경우 온-프레미스로 저장해야 합니다. 현재 SQL 데이터베이스의 한도가 100GB입니다. 그러나 여유가 있는 경우 최선의 토폴로지는 다음과 같습니다. 이러한 권장 사항은 가장 효율적이며 두 가지 주요 구분(온-프레미스로 실행되는 컨트롤러 또는 클라우드에서 실행되는 컨트롤러)에서 가장 높은 동시성 수준을 제공합니다.

컨트롤러가 온-프레미스로 실행되는 경우 최선의 토폴로지

컨트롤러 에이전트 리포지토리 테스트되는 시스템 참고

온-프레미스

클라우드

온-프레미스

온-프레미스

큰 동시성, 에이전트에서 컨트롤러로 네트워크 트래픽이 전송됨

온-프레미스

클라우드

온-프레미스

클라우드

큰 동시성, 에이전트와 테스트되는 시스템에서 컨트롤러로 네트워크 트래픽이 전송됨

컨트롤러가 클라우드에서 실행되는 경우 최선의 토폴로지

컨트롤러 에이전트 리포지토리 테스트되는 시스템 참고

클라우드

온-프레미스

클라우드

온-프레미스

제한된 동시성, 에이전트와 테스트되는 시스템에서 컨트롤러로 네트워크 트래픽이 전송됨

클라우드

클라우드

클라우드

클라우드

큰 동시성, 에이전트에서 컨트롤러로 네트워크 트래픽이 전송됨

클라우드

다중 클라우드

클라우드

클라우드

가장 큰 동시성, 적어도 DC1의 테스트되는 시스템에서 DC2의 컨트롤러로(설정에 따라 더 많을 수 있음) 네트워크 트래픽이 전송됨

복잡성 요구 증가

현실 세계에서 구성 요소의 실제 레이아웃은 복잡할 수 있습니다. 테스트되는 시스템에는 많은 하위 구성 요소가 있을 수 있으며, 각 하위 구성 요소는 작업자 역할 또는 웹 역할로 실행되거나 온-프레미스 서비스를 사용합니다. 예를 들어 구성 요소는 시스템을 초기화하거나 유효성 검사 서비스를 제공합니다. 많은 구성 요소가 시스템의 다른 부분과 통신해야 할 수 있습니다. 이 구성 요소 집합은 부하 테스트 시스템 자체(컨트롤러, 에이전트 및 리포지토리로 구성됨)와는 별도로 존재합니다. 다음 그래픽에서는 많은 부분이 있는 시스템을 보여 줍니다. 이 그래픽은 실제 솔루션에는 많은 부분과 많은 통신 요구 사항이 존재할 수 있음을 보여주기 위한 것일 뿐이며, 시스템의 세부 사항은 중요하지 않습니다.

복잡한 구성의 예

복잡성이 이 정도인 경우에도 필요하면 Windows Azure에서나 온-프레미스로 다양한 구성 요소를 배치할 수 있습니다. 다음 섹션에서는 필요한 단계에 대해 설명합니다.

설정

여기에서의 설정은 부하 테스트를 위해 Windows Azure 프로비전 문서에 나와 있는 기본 설정의 대안 집합입니다. 부하 테스트를 위해 Windows Azure 프로비전 문서의 절차에서는 올바른 부분들로 관리 포털을 설정하는 방법을 지정합니다. 예를 들어 저장소 계정을 설정하는 방법과 Windows Azure Connect 그룹을 설정하는 방법에 대해 설명합니다.

여기에서의 첫 번째 대안에서는 SQL 데이터베이스를 결과 리포지토리로 사용할 수 있습니다. 두 번째 대안에서는 각 작업자 역할에서 끝점을 설정하는 방법을 지시합니다. 끝점을 사용하면 에이전트, 테스트되는 시스템, 테스트 컨트롤러 및 (필요한 경우) 보조 요소(Visual Studio를 호스팅하는 워크스테이션) 간에 통신할 수 있습니다. 가장 깨끗한 모드에서 컴퓨터는 온-프레미스로 배치됩니다. 그러나 응용 프로그램에서 테스트 실행 중에 사용해야 하는 경우 Windows Azure 작업자 역할로 호스팅될 수도 있습니다.

사전 요구 사항

다음 작업을 수행해야 합니다.

  • LoadTest2010.bacpac 파일을 다운로드합니다.

  • 선택 사항. 작업자 역할에 Visual Studio 2010 Ultimate를 설치합니다.

    작업자 역할에서 테스트 컨트롤러를 실행하려는 경우 작업자 역할에 Visual Studio 2010 Ultimate를 설치합니다. Visual Studio에서 작업자 역할을 Windows Azure 프로젝트에 추가합니다. 원격 데스크톱이 설정되어 있는지 확인합니다. 온-프레미스 사이트에 연결하기 위해 작업자 역할을 Connect 그룹에 추가합니다. 원격 데스크톱을 사용하여 작업자 역할에 연결한 다음 Visual Studio 2010 Ultimate를 설치합니다.

SQL BACPAC를 사용하여 Windows Azure SQL 데이터베이스 프로비전

SQL 데이터베이스에 결과를 저장하여 부하 테스트 데이터를 저장하려면 이 방법을 사용합니다. LoadTest2010.bacpac라는 파일을 Azure 저장소 계정에 업로드합니다. 다음과 같은 필수 구성 요소도 있어야 합니다.

  1. SQL 데이터베이스 계정

  2. 구독에서 만들어진 SQL Server 인스턴스. 자세한 내용은 Windows Azure SQL 데이터베이스 서버를 만드는 방법을 참조하십시오.

  3. 서버 인스턴스를 수정할 수 있는 권한이 있는 로그인 이름 및 암호

BACPAC를 사용하여 SQL 데이터베이스를 프로비전하려면

  1. LoadTest2010.bacpac 파일을 Azure 저장소 계정에 업로드합니다.

    StorageServicesSmartClient를 사용하여 파일을 공용 컨테이너에 업로드합니다. .dacpac 파일이 업로드되면 관리 포털의 가져오기 기능을 사용하여 데이터베이스를 만들 수 있습니다.

  2. 관리 포털에서 데이터베이스를 클릭합니다.

  3. 사용하는 SQL 데이터베이스 서버가 포함된 구독을 확장하고 서버를 선택합니다.

  4. 리본의 데이터베이스 섹션에서 가져오기를 클릭합니다.

  5. 데이터 계층 응용 프로그램을 가져오는 방법(Windows Azure SQL 데이터베이스)의 지침을 따라 LoadTest2010.bacpac 파일을 가져옵니다.

리포지토리가 SQL 데이터베이스에서 만들어지면 테스트 컨트롤러를 구성합니다. 특히 결과 저장소에 대한 연결 문자열을 설정합니다. 값을 설정하기 위한 대화 상자는 Visual Studio Ultimate에만 있습니다. 그러나 진행하기 전에 다음 중 어떤 방법으로 테스트 컨트롤러를 실행할지를 결정해야 합니다.

  1. 온-프레미스 컴퓨터에서

    온-프레미스 컴퓨터에서 테스트 컨트롤러를 실행하려는 경우 다음 섹션의 지침을 따릅니다.

  2. Visual Studio의 인스턴스를 실행하는 Windows Azure의 작업자 역할에서

    Windows Azure의 작업자 역할에서 테스트 컨트롤러를 실행하려는 경우 다음을 수행합니다.

    1. Windows Azure Connect 그룹을 만듭니다.

    2. 온-프레미스 워크스테이션을 그룹에 추가합니다.

    3. 호스팅된 서비스를 배포한 후 원격 데스크톱을 사용하여 Visual Studio를 호스팅할 작업자 역할에 연결합니다.

    4. 네트워크의 설치(.msi) 파일에서 Visual Studio 2010 Ultimate를 설치합니다.

테스트 컨트롤러의 온-프레미스 인스턴스를 구성하려면

  1. 관리자 권한으로 Visual Studio를 실행합니다.

  2. Visual Studio의 테스트 메뉴에서 테스트 컨트롤러 관리를 클릭합니다.

  3. 부하 테스트 결과 저장소 아래에서 줄임표 단추를 클릭합니다.

  4. 연결 속성 대화 상자에서 SQL 데이터베이스 서버의 이름을 붙여 넣습니다.

  5. 서버에 로그온 아래에서 SQL Server 인증 사용 옵션을 선택합니다.

  6. 사용자 이름 값을 SQL 데이터베이스 관리자의 로그인 이름으로 설정합니다.

  7. 암호 필드 값을 SQL 데이터베이스 관리자의 암호 값으로 설정합니다.

  8. 데이터베이스에 연결 섹션에서 LoadTest2010 데이터베이스를 선택합니다.

    연결 문자열과 자격 증명이 올바른 경우 테스트 컨트롤러 구성 대화 상자를 검사합니다. 대화 상자가 올바른 값으로 채워져 있습니다.

Azure Connect 그룹 대신 끝점 사용

Connect 그룹을 사용하는 대신 인스턴스 간에 통신하기 위해 각 작업자 역할에서 끝점을 구성할 수 있습니다. 여기에는 연결이 보다 안정적이라는 이점이 있습니다. 다음 단계를 사용하여 이 대안을 시도해보십시오.

작업자 역할 인스턴스에서 끝점을 구성하려면

  1. Visual Studio에서 부하 테스트 프로젝트를 엽니다.

  2. 내부 TCP 끝점을 사용하여 각 작업자 역할을 구성합니다. 역할에 끝점을 추가하는 데 대한 일반적인 지침은 역할에 대한 내부 끝점을 정의하는 방법을 참조하십시오. 각 끝점에 대해 서로 다른 개인 포트 번호를 지정합니다. 다음 표에서는 각 역할에 대한 끝점 구성을 보여 줍니다. 이러한 끝점은 모두 TCP 프로토콜을 사용하는 개인 포트입니다.

     

    역할 이름 포트 이름 포트 번호

    에이전트

    SQL

    1433

    에이전트

    WFS

    137-445

    에이전트

    에이전트 수신기 포트

    6910

    에이전트

    에이전트 다운로드

    80

    컨트롤러

    SQL

    1433

    컨트롤러

    WFS

    137-445

    컨트롤러

    컨트롤러

    6910

    컨트롤러

    에이전트 다운로드

    80

    컨트롤러

    컨트롤러 수신기 포트

    6901

    컨트롤러

    에이전트

    6910

    컨트롤러/워크스테이션

    응답

    49152

  3. 컨트롤러에서 에이전트에 메시지를 보낼 수 있도록 특정 포트를 구성합니다. 컨트롤러를 호스팅하는 작업자 역할에서 다음 레지스트리 키를 사용합니다.

    1. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\VisualStudio\10.0\EnterpriseTools\QualityTools\ListenPortRange\PortRangeStart

    2. HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\VisualStudio\10.0\EnterpriseTools\QualityTools\ListenPortRange\PortRangeEnd

  4. 작업자 역할의 시작에서 setupwfw.cmd 파일을 실행합니다.

  5. 각 역할에 대한 원격 데스크톱에서 다음을 수행합니다.

    1. \Windows\System32\drivers\etc\ 디렉터리를 엽니다.

      hosts 파일을 열어 편집합니다. 이 파일은 Notepad.exe를 사용하여 열 수 있습니다. 각 시스템에 호스트 이름과 IP 주소가 있는 "hosts" 파일을 배치합니다. 파일은 수동으로 편집해야 합니다. 역할의 IP 주소를 찾으려면 각 역할에서 명령 창을 열고 IPCONFIG를 입력합니다. Hosts 파일의 예는 다음과 같습니다.

    2. 
      # Copyright (c) 1993-2009 Microsoft Corp.
      #
      # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
      #
      # This file contains the mappings of IP addresses to host names. Each
      # entry should be kept on an individual line. The IP address should
      # be placed in the first column followed by the corresponding host name.
      # The IP address and the host name should be separated by at least one
      # space.
      #
      # Additionally, comments (such as these) may be inserted on individual
      # lines or following the machine name denoted by a '#' symbol.
      #
      # For example:
      #
      #      102.54.94.97     rhino.acme.com          # source server
      #       38.25.63.10     x.acme.com              # x client host
      
      # localhost name resolution is handled within DNS itself.
      #127.0.0.1       localhost
      #::1             localhost
      10.115.222.131 RD00155D317984    # workstation
      10.115.218.125 RD00155D3175BF    # Controller
      10.115.222.142 RD001455316FEE    # Agent00
      10.115.196.26 RD00D32D6747       # Agent01
      10.115.228.52  RD000155D317EBD  # Agent02
      10.115.222.131 RD00155D317984    # Agent03
      
      
  6. 각 역할은 통신할 수 있으며 각 시스템에 이진 파일을 설치할 수 있습니다. 프로세스의 속도를 높이려면 Blob 저장소에 이진 파일을 배치합니다. 또한 시작 작업의 일부인 추가 명령을 실행합니다. 자세한 내용은 역할에 대한 시작 작업을 정의하는 방법)을 참조하십시오.

  7. SQL Server에서 결과 데이터베이스에 액세스하기 위한 컨트롤러와 워크스테이션의 로컬 SQL 계정을 만듭니다. 그런 다음 해당 계정을 사용하도록 리포지토리를 구성합니다. 컨트롤러를 설정할 때 데이터베이스를 만든 다음 IDE에서 계정을 사용하도록 구성합니다.


빌드 날짜:

2013-07-25

커뮤니티 추가 항목

표시:
© 2014 Microsoft