Azure Load Testing이란?

Azure Load Testing은 대규모 부하를 생성할 수 있는 완전 관리형 부하 테스트 서비스입니다. 애플리케이션이 호스트되는 위치에 관계없이 이 서비스는 애플리케이션에 대한 트래픽을 시뮬레이션합니다. 개발자, 테스터 및 QA(품질 보증) 엔지니어는 이를 사용하여 애플리케이션 성능, 확장성 또는 용량을 최적화할 수 있습니다.

테스트 도구에 대한 사전 지식 없이 URL을 사용하여 웹 애플리케이션에 대한 부하 테스트를 빠르게 만듭니다. Azure Load Testing은 복잡성과 인프라를 추상화하여 부하 테스트를 대규모로 실행합니다.

고급 부하 테스트 시나리오의 경우 인기 있는 오픈 소스 부하 및 성능 도구인 기존 Apache JMeter 테스트 스크립트를 다시 사용하여 부하 테스트를 만들 수 있습니다. 예를 들어 테스트 계획이 여러 애플리케이션 요청으로 구성되거나, 비 HTTP 엔드포인트를 호출하거나, 입력 데이터 및 매개 변수를 사용하여 더 동적인 테스트를 만들 수 있습니다.

애플리케이션이 Azure에서 호스트되는 경우 Azure Load Testing은 Azure 애플리케이션 구성 요소에서 성능 병목 상태를 식별하는 데 도움이 되는 자세한 리소스 메트릭을 수집합니다.

애플리케이션 성능 저하를 조기에 감지하려면 CI/CD(연속 통합 및 지속적인 배포) 워크플로에 부하 테스트를 추가합니다. 테스트 실패 조건을 활용하여 애플리케이션 품질 요구 사항을 정의하고 유효성을 검사합니다.

Azure Load Testing을 사용하면 온-프레미스에서 호스트하는 프라이빗 애플리케이션 엔드포인트 또는 애플리케이션을 테스트할 수 있습니다. 자세한 내용은 가상 네트워크에서 Azure Load Testing을 배포하기 위한 시나리오를 참조하세요.

다음 다이어그램은 Azure Load Testing의 아키텍처 개요를 보여 줍니다.

Diagram that shows the Azure Load Testing architecture.

참고 항목

개요 이미지는 Azure Load Testing이 Azure Monitor를 사용하여 앱 구성 요소에 대한 메트릭을 캡처하는 방법을 보여 줍니다. 지원되는 Azure 리소스 종류에 대해 자세히 알아봅니다.

Azure Load Testing의 핵심 개념에 대해 자세히 알아봅니다.

사용 시나리오

Azure Load Testing은 Apache JMeter를 사용하며 다양한 애플리케이션 유형 및 통신 프로토콜을 지원합니다. 다음 목록은 지원되는 애플리케이션 또는 엔드포인트 유형의 예를 보여 줍니다.

  • HTTP 또는 HTTPS를 사용하는 웹 애플리케이션
  • REST API
  • JDBC를 통한 데이터베이스
  • TCP 기반 엔드포인트

테스트 스크립트에서 JMeter 플러그 인을 사용하여 더 많은 애플리케이션 유형을 로드할 수 있습니다.

빠른 테스트 환경을 사용하여 단일 URL 기반 HTTP 엔드포인트를 테스트할 수 있습니다. JMeter 스크립트를 업로드하면 모든 JMeter 지원 통신 프로토콜을 사용할 수 있습니다.

Azure Load Testing은 현재 Apache JMeter 이외의 다른 테스트 프레임워크를 지원하지 않습니다.

대규모 부하 테스트를 사용하여 성능 병목 상태 식별

애플리케이션이 로드될 때까지 성능 문제가 검색되지 않은 상태로 유지되는 경우가 많습니다. Azure Portal에서 대규모 부하 테스트를 시작하여 스트레스 상황에서 애플리케이션이 작동하는지 방식을 더 빨리 알아볼 수 있습니다. 테스트가 실행되는 동안 Azure Load Testing 대시보드에서 클라이언트 및 서버 쪽 메트릭의 라이브 업데이트를 제공합니다.

부하 테스트가 완료되면 대시보드를 사용하여 테스트 결과를 분석하고 성능 병목 상태를 식별할 수 있습니다. Azure 호스팅 애플리케이션의 경우 대시보드에는 Azure 애플리케이션 구성 요소의 자세한 리소스 메트릭이 표시됩니다. Azure 호스팅 애플리케이션의 성능 병목 상태를 식별하는 자습서를 시작합니다.

Azure Load Testing은 테스트 실행 기록을 유지하고, 여러 실행을 시각적으로 비교하여 시간에 따른 성능 회귀를 검색할 수 있습니다.

타사 도구에서 분석할 수 있도록 테스트 결과를 다운로드할 수도 있습니다.

자동화된 부하 테스트 사용

Azure Load Testing은 개발 수명 주기 동안 의미 있는 지점에서 CI/CD 파이프라인에 통합할 수 있습니다. 예를 들어 각 스프린트의 끝 또는 스테이징 환경에서 부하 테스트를 자동으로 실행하여 릴리스 후보 빌드의 유효성을 검사할 수 있습니다.

부하 테스트를 CI/CD 워크플로에 추가하여 부하 상태에 있는 애플리케이션의 성능 저하를 빠르게 식별합니다.

테스트 구성에서 테스트 실패 조건을 지정하여 개발 주기 초기에 애플리케이션 성능 또는 안정성 회귀를 포착합니다. 예를 들어 평균 응답 시간 또는 오류 수가 특정 임계값을 초과하면 경고를 받습니다.

Azure Load Testing은 특정 오류 조건에 대응하여 자동화된 부하 테스트를 자동으로 중지합니다. 또는 Apache JMeter 스크립트에서 AutoStop 수신기를 사용할 수도 있습니다. 예를 들어 자동 중지는 잘못 구성된 엔드포인트 URL로 인해 추가 비용이 발생하는 테스트 실패로부터 사용자를 보호합니다. 부하 테스트의 자동 중지를 구성하는 방법을 알아봅니다.

Azure Pipelines 또는 GitHub Actions 워크플로에서 Azure Load Testing을 트리거할 수 있습니다.

Azure Load Testing의 작동 방식

Azure Load Testing은 Apache JMeter를 사용하여 부하 테스트를 실행합니다. https://jmeter-plugins.org에서 Apache JMeter 플러그 인을 사용하거나 사용자 고유의 플러그 인 코드를 업로드할 수 있습니다. Azure Load Testing은 JMeter에서 지원하는 모든 통신 프로토콜을 지원합니다. 예를 들어 데이터베이스 연결 또는 메시지 큐의 부하를 테스트합니다. 지원되는 Apache JMeter 기능에 대해 자세히 알아봅니다.

Azure Load Testing 테스트 엔진은 대규모 부하 테스트를 실행하는 데 필요한 인프라를 추상화합니다. 각 테스트 엔진 인스턴스는 JMeter 스크립트를 실행하여 애플리케이션 엔드포인트에 동시에 액세스하는 많은 수의 가상 사용자를 시뮬레이션합니다. URL(빠른 테스트)을 기반으로 하는 부하 테스트를 만들면 Azure Load Testing에서 JMeter 테스트 스크립트를 자동으로 생성합니다. 부하 테스트를 스케일 아웃하기 위해 테스트 엔진 수를 구성할 수 있습니다.

Azure, 온-프레미스 또는 다른 클라우드에서 로드 중인 애플리케이션을 호스트할 수 있습니다. 퍼블릭 엔드포인트가 없는 서비스의 부하 테스트를 실행하려면 Azure Load Testing을 가상 네트워크에 배포합니다.

부하 테스트 중에 Azure Load Testing은 다음 리소스 메트릭을 수집하여 대시보드에 표시합니다.

  • 클라이언트 쪽 메트릭은 테스트 엔진에서 보고하는 세부 정보를 제공합니다. 이러한 세부 정보에는 가상 사용자 수, 요청 응답 시간 또는 초당 요청 수가 포함됩니다.

  • 서버 쪽 메트릭은 Azure 애플리케이션 구성 요소에 대한 정보를 제공합니다. Azure Load Testing은 Application Insights 및 Container Insights를 포함한 Azure Monitor와 통합되어 Azure 서비스에서 세부 정보를 캡처합니다. 서비스 유형에 따라 다양한 메트릭을 사용할 수 있습니다. 예를 들어 데이터베이스 읽기 수, HTTP 응답 유형 또는 컨테이너 리소스 사용량에 대한 메트릭일 수 있습니다.

테스트가 안전하고 안정적으로 실행되도록 하기 위해 Azure Load Testing은 Azure 네트워킹에 대한 모범 사례를 자동으로 통합합니다. 애플리케이션 엔드포인트 또는 Azure 구성 요소에서 제한 요청을 시작하면 부하 테스트가 자동으로 중지됩니다.

서비스는 Microsoft에서 관리하는 키(서비스 관리형 키)를 사용하여 부하 테스트 리소스에 저장된 모든 데이터를 자동으로 암호화합니다. 예를 들어 Apache JMeter 스크립트, 구성 파일 등의 데이터가 포함됩니다. 또는 고객 관리형 키를 사용하도록 서비스를 구성할 수도 있습니다.

지역 내 데이터 보존

Azure Load Testing은 서비스 인스턴스를 배포하는 지역 외부에서 고객 데이터를 저장하거나 처리하지 않습니다.

다음 단계

Azure Load Testing 사용을 시작합니다.