새 Azure Load Testing 사용자를 위한 주요 개념
Azure Load Testing Preview의 주요 개념 및 구성 요소에 대해 알아봅니다. 이 정보를 사용하면 애플리케이션의 성능 이슈를 식별하도록 부하 테스트를 보다 효과적으로 설정하는 데 도움이 될 수 있습니다.
부하 테스트의 일반적인 개념
부하 테스트 실행과 관련된 주요 개념에 대해 알아봅니다.
가상 사용자
가상 사용자는 서버 애플리케이션에 대해 특정 테스트 사례를 실행하고 다른 가상 사용자와 독립적으로 실행됩니다. 여러 가상 사용자를 사용하여 서버 애플리케이션에 대한 동시 연결을 시뮬레이션할 수 있습니다.
Apache JMeter는 가상 사용자를 스레드라고도 합니다. JMeter 테스트 스크립트에서 스레드 그룹 요소를 사용하면 가상 사용자의 풀을 지정할 수 있습니다. Apache JMeter 설명서에서 스레드 그룹에 대해 알아봅니다.
부하 테스트의 총 가상 사용자 수는 테스트 스크립트의 가상 사용자 수와 테스트 엔진 인스턴스 수에 따라 달라집니다.
수식은 총 가상 사용자 = (JMX 파일의 가상 사용자) * (테스트 엔진 인스턴스 수)입니다.
테스트 엔진 인스턴스 수, 테스트 스크립트의 가상 사용자 수 또는 둘 다의 조합을 구성하여 대상 가상 사용자 수를 얻을 수 있습니다.
램프 업 시간
램프 업 시간은 부하 테스트를 위해 전체 가상 사용자 수에 도달하는 데 걸리는 시간입니다. 가상 사용자 수가 20명이고 램프 업 시간이 120초인 경우 20명의 가상 사용자에게 도달하는 데 120초가 걸립니다. 각 가상 사용자는 이전 사용자가 시작된 후 6(120/20)초가 지나서 시작됩니다.
응답 시간
개별 요청의 응답 시간 또는 JMeter의 경과 시간은 마지막 응답이 수신된 직후부터 요청을 보내기 직전까지의 총 시간입니다. 응답 시간에는 응답을 렌더링하는 시간이 포함되지 않습니다. JavaScript와 같은 모든 클라이언트 코드는 부하 테스트 중에 처리되지 않습니다.
대기 시간
개별 요청의 대기 시간은 첫 번째 응답이 수신된 직후부터 요청을 보내기 직전까지의 총 시간입니다. 대기 시간에는 요청을 어셈블하고 응답의 첫 번째 부분을 어셈블하는 데 필요한 모든 처리가 포함됩니다.
초당 요청 수(RPS)
RPS(초당 요청 수) 또는 처리량은 부하 테스트가 초당 생성하는 서버 애플리케이션에 대한 총 요청 수입니다.
수식은 RPS = (요청 수) / (총 시간(초))입니다.
시간은 첫 번째 샘플의 시작부터 마지막 샘플의 끝까지 계산됩니다. 이 시간에는 샘플 간의 간격이 포함됩니다(예: 테스트 스크립트에 타이머가 포함된 경우).
RPS를 계산하는 또 다른 방법은 평균 애플리케이션의 대기 시간 및 가상 사용자 수를 기준으로 합니다. 부하 테스트를 통해 특정 수의 RPS를 시뮬레이션하려면 애플리케이션의 대기 시간을 감안하여 필요한 가상 사용자 수를 계산하면 됩니다.
수식은 가상 사용자 = (RPS) * (대기 시간(초))입니다.
예를 들어 애플리케이션 대기 시간이 20밀리초(0.02초)인 경우 100,000 RPS를 시뮬레이션하려면 2,000명의 가상 사용자(100,000 * 0.02)로 부하 테스트를 구성해야 합니다.
Azure Load Testing 구성 요소
Azure Load Testing Preview의 주요 개념 및 구성 요소에 대해 알아봅니다. 다음 다이어그램에서는 다양한 개념이 서로 어떻게 관련되는지에 대한 개요를 제공합니다.
부하 테스트 리소스
Azure 부하 테스트 리소스는 부하 테스트 작업의 최상위 리소스입니다. 이 리소스는 부하 테스트, 테스트 결과 및 관련 아티팩트를 보고 관리할 수 있는 중앙 집중식 위치를 제공합니다.
부하 테스트 리소스를 만들 때 테스트 엔진의 위치를 결정하는 위치를 지정합니다. Azure Load Testing은 리소스의 모든 아티팩트를 자동으로 암호화합니다. Microsoft 관리형 키 중에서 선택하거나 고유한 고객 관리형 키를 사용하여 암호화할 수 있습니다.
애플리케이션에 대한 부하 테스트를 실행하려면 부하 테스트 리소스에 테스트를 추가합니다. 리소스에는 0개 이상의 테스트가 포함될 수 있습니다.
Azure 역할 기반 액세스 제어를 사용하여 부하 테스트 리소스 및 관련 아티팩트에 대한 액세스 권한을 부여할 수 있습니다.
Azure Load Testing을 사용하면 관리 ID를 사용하여 Azure Key Vault에 액세스하는 방법으로 부하 테스트 비밀 매개 변수 또는 인증서를 저장할 수 있습니다. 사용자가 할당하거나 시스템이 할당한 관리 ID를 사용할 수 있습니다.
테스트
테스트는 애플리케이션에 대한 부하 테스트 구성을 설명합니다. 기존 Azure 부하 테스트 리소스에 테스트를 추가합니다.
테스트에는 애플리케이션 엔드포인트를 호출하는 단계를 설명하는 테스트 계획이 포함됩니다. 다음 세 가지 방법 중 하나로 테스트 계획을 정의할 수 있습니다.
Azure Load Testing은 HTTP 기반 엔드포인트뿐만 아니라 JMeter가 지원하는 모든 통신 프로토콜을 지원합니다. 예를 들어, 테스트 스크립트의 데이터베이스 또는 메시지 큐에서 읽거나 쓰기를 원할 수 있습니다.
Azure Load Testing은 현재 Apache JMeter 및 Locust 이외의 다른 테스트 프레임워크를 지원하지 않습니다.
테스트는 부하 테스트를 실행하기 위한 구성 설정도 지정합니다.
- 부하 테스트 매개 변수(예: 환경 변수, 비밀 및 인증서)
- 여러 테스트 엔진 인스턴스에서 부하 테스트를 스케일 아웃하는 부하 구성
- 테스트가 통과하거나 실패해야 하는 시기를 결정하는 실패 조건
- 테스트 실행 중에 모니터링할 Azure 앱 구성 요소 및 리소스 메트릭의 목록을 구성하는 모니터링 설정
또한 CSV 입력 데이터 파일과 테스트 구성 파일을 부하 테스트에 업로드할 수 있습니다.
테스트를 시작하면 Azure Load Testing이 테스트 스크립트, 관련 파일 및 구성을 테스트 엔진 인스턴스에 배포합니다. 그러면 테스트 엔진 인스턴스가 테스트 스크립트를 시작하여 애플리케이션 부하를 시뮬레이션합니다.
테스트를 시작할 때마다 Azure Load Testing이 테스트 실행을 만들고 테스트에 연결합니다.
테스트 실행
테스트 실행은 부하 테스트를 한 번 실행하는 것을 나타냅니다. 테스트를 실행할 때 테스트 실행에는 연결된 테스트의 구성 설정 복사본이 포함됩니다.
테스트 실행이 완료되면 Azure Portal의 Azure Load Testing 대시보드에서 부하 테스트 결과를 보고 분석할 수 있습니다.
또는 테스트 로그를 다운로드하고 테스트 결과 파일을 내보낼 수 있습니다.
Important
테스트를 업데이트할 때 기존 테스트 실행은 테스트에서 새 설정을 자동으로 상속하지 않습니다. 새 설정은 테스트를 실행할 때 새 테스트 실행에서만 사용됩니다. 기존 테스트 실행을 다시 실행하는 경우 테스트 실행의 원래 설정이 사용됩니다.
테스트 엔진
테스트 엔진은 Microsoft에서 관리하는 컴퓨팅 인프라로, 테스트 스크립트를 실행합니다. 테스트 엔진 인스턴스는 테스트 스크립트를 병렬로 실행합니다. 테스트 엔진 인스턴스 수를 구성하여 부하 테스트를 스케일 아웃할 수 있습니다. 가상 사용자 수를 구성하거나 초당 대상 요청 수를 시뮬레이션하는 방법을 알아봅니다.
테스트 엔진은 Azure Load Testing 리소스와 동일한 위치에 호스트됩니다. Azure 부하 테스트 리소스를 만들 때 Azure 지역을 구성할 수 있습니다.
테스트 스크립트가 실행되는 동안 Azure Load Testing은 모든 테스트 엔진 인스턴스에서 테스트 프레임워크 로그를 수집하고 집계합니다. 부하 테스트 중에 오류를 분석하기 위해 로그를 다운로드할 수 있습니다.
App 구성 요소
Azure 호스트 애플리케이션에 대한 부하 테스트를 실행하는 경우 다양한 Azure 애플리케이션 구성 요소에 대한 리소스 메트릭(서버 쪽 메트릭)을 모니터링할 수 있습니다. 부하 테스트가 실행되는 동안 및 테스트가 완료된 후 Azure Load Testing 대시보드에서 리소스 메트릭을 모니터링하고 분석할 수 있습니다.
부하 테스트를 만들거나 업데이트할 때 Azure Load Testing에서 모니터링할 앱 구성 요소 목록을 구성할 수 있습니다. 각 앱 구성 요소의 기본 리소스 메트릭 목록을 수정할 수 있습니다.
Azure Load Testing에서 지원하는 Azure 리소스 종류에 대해 자세히 알아보세요.
메트릭
부하 테스트 중에 Azure Load Testing은 테스트 실행에 대한 메트릭을 수집합니다. 다음과 같이 두 가지 유형의 메트릭이 있습니다.
테스트 엔진에서 클라이언트 쪽 메트릭을 보고합니다. 이러한 메트릭에는 가상 사용자 수, 요청 응답 시간, 실패한 요청 수 또는 초당 요청 수가 포함됩니다. 이러한 클라이언트 쪽 메트릭을 기반으로 테스트 실패 조건을 정의할 수 있습니다.
서버 쪽 메트릭은 Azure 호스트 애플리케이션에 사용할 수 있으며 Azure 애플리케이션 구성 요소에 대한 정보를 제공합니다. Azure Load Testing은 Application Insights 및 Container Insights를 포함한 Azure Monitor와 통합되어 Azure 서비스에서 세부 정보를 캡처합니다. 서비스 유형에 따라 다양한 메트릭을 사용할 수 있습니다. 예를 들어 데이터베이스 읽기 수, HTTP 응답 유형 또는 컨테이너 리소스 사용량에 대한 메트릭일 수 있습니다.
관련 콘텐츠
지금까지 부하 테스트 만들기를 시작하는 데 필요한 Azure Load Testing의 주요 개념을 알아보았습니다.
- Azure Load Testing의 작동 방식을 알아봅니다.
- 웹 사이트에 대한 URL 기반 부하 테스트를 만들고 실행하는 방법을 알아봅니다.
- Azure 애플리케이션에서 성능 병목 상태를 식별하는 방법을 알아봅니다.
- CI/CD로 자동화된 재발 테스트를 설정하는 방법을 알아봅니다.