테스트 시나리오 생성 - AWS의 분산 로드 테스트

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

테스트 시나리오 생성

테스트 시나리오 생성에는 일반 설정 구성, 시나리오 정의, 트래픽 패턴 구성, 구성 검토의 네 가지 주요 단계가 포함됩니다.

1단계: 일반 설정

테스트 이름, 설명 및 일반 구성 옵션을 포함하여 로드 테스트의 기본 파라미터를 구성합니다.

테스트 식별

  • 테스트 이름(필수) - 테스트 시나리오를 설명하는 이름입니다.

  • 테스트 설명(필수) - 테스트 목적 및 구성에 대한 추가 세부 정보

  • 태그(선택 사항) - 최대 5개의 태그를 추가하여 테스트 시나리오를 분류하고 구성합니다.

예약 옵션

테스트를 실행해야 하는 시기를 구성합니다.

  • 지금 실행 - 생성 직후 테스트를 실행합니다.

    지금 실행 옵션 선택됨
  • 번 실행 - 특정 날짜 및 시간에 실행되도록 테스트를 예약합니다.

    날짜 및 시간 선택기가 있는 한 번 실행 옵션
  • 일정에 따라 실행 - cron 기반 예약을 사용하여 정기적으로 테스트를 자동으로 실행합니다. 일반적인 패턴(매시간, 매일, 매주) 중에서 선택하거나 사용자 지정 cron 표현식을 정의할 수 있습니다.

    cron 패턴 선택기를 사용하여 일정 옵션에서 실행

워크플로 예약

테스트를 예약하면 다음 워크플로가 발생합니다.

  • 일정 파라미터는 Amazon API Gateway로 전송됩니다.

  • API는 지정된 날짜에 실행되도록 예약된 CloudWatch Events 규칙을 생성하는 Lambda 함수에 파라미터를 전달합니다.

  • 일회성 테스트(한 번 실행)의 경우 CloudWatch Events 규칙은 지정된 날짜에 실행되고 api-services Lambda 함수는 테스트를 실행합니다.

  • 반복 테스트(일정에 따라 실행)의 경우 CloudWatch Events 규칙이 지정된 날짜에 활성화되고 api-services Lambda 함수는 지정된 빈도에 따라 즉시 반복적으로 실행되는 새 규칙을 생성합니다.

라이브 데이터

테스트가 실행되는 동안 실시간 지표를 보려면 라이브 데이터 포함 확인란을 선택합니다. 활성화되면 다음을 모니터링할 수 있습니다.

  • 평균 응답 시간입니다.

  • 가상 사용자 수입니다.

  • 성공적인 요청 수입니다.

  • 실패한 요청 수입니다.

라이브 데이터 기능은 1초 간격으로 집계된 데이터를 사용하여 실시간 차트를 제공합니다. 자세한 내용은 라이브 데이터로 모니터링을 참조하세요.

2단계: 시나리오 구성

특정 테스트 시나리오를 정의하고 원하는 테스트 프레임워크를 선택합니다.

테스트 유형 선택

수행할 로드 테스트 유형을 선택합니다.

실행할 테스트 유형 선택
  • 단일 HTTP 엔드포인트 - 간단한 구성으로 단일 API 엔드포인트 또는 웹 페이지를 테스트합니다.

  • JMeter - JMeter 테스트 스크립트(.jmx 파일 또는 .zip 아카이브)를 업로드합니다.

  • K6 - K6 테스트 스크립트(.js 파일 또는 .zip 아카이브)를 업로드합니다.

  • Locust - Locust 테스트 스크립트(.py 파일 또는 .zip 아카이브)를 업로드합니다.

HTTP 엔드포인트 구성 이미지::images/test-types.png[실행할 테스트 유형 선택] "단일 HTTP 엔드포인트"를 선택한 경우 다음 설정을 구성합니다.

HTTP 엔드포인트(필수)

테스트하려는 엔드포인트의 전체 URL을 입력합니다. 예를 들어 https://api.example.com/users 입니다. AWS 인프라에서 엔드포인트에 액세스할 수 있는지 확인합니다.

HTTP 메서드(필수)

요청에 대한 HTTP 메서드를 선택합니다. 기본값은 GET입니다. 기타 옵션에는 POST, PUT, DELETE, PATCH, 및 HEAD가 포함됩니다OPTIONS.

요청 헤더(선택 사항)

요청에 사용자 지정 HTTP 헤더를 추가합니다. 일반적인 예는 다음과 같습니다.

  • Content-Type: application/json

  • Authorization: Bearer <token>

  • User-Agent: LoadTest/1.0

    헤더 추가를 선택하여 여러 헤더를 포함합니다.

본문 페이로드(선택 사항)

POST 또는 PUT 요청에 대한 요청 본문 콘텐츠를 추가합니다. JSON, XML 또는 일반 텍스트 형식을 지원합니다. 예를 들어 {"userId": 123, "action": "test"}입니다.

프레임워크 스크립트 테스트

JMeter, K6 또는 Locust를 사용하는 경우 테스트 스크립트 파일 또는 테스트 스크립트와 지원 파일이 포함된.zip 아카이브를 업로드합니다. JMeter의 경우 .zip 아카이브 내의 /plugins 폴더에 사용자 지정 플러그인을 포함할 수 있습니다.

중요

테스트 스크립트(JMeter, K6 또는 Locust)가 동시성(가상 사용자), 트랜잭션 속도(TPS), 증가 시간 및 기타 로드 파라미터를 정의할 수 있지만 솔루션은 테스트 생성 중에 트래픽 셰이프 화면에서 지정한 값으로 이러한 구성을 재정의합니다. 트래픽 셰이프 구성은 테스트 실행의 작업 수, 동시성(작업당 가상 사용자 수), 증가 기간 및 대기 기간을 제어합니다.

3단계: 트래픽 셰이프

다중 리전 지원을 포함하여 테스트 중에 트래픽이 분산되는 방식을 구성합니다.

트래픽 셰이프 구성 화면

다중 리전 트래픽 구성

로드 테스트를 지리적으로 배포할 AWS 리전을 하나 이상 선택합니다. 선택한 각 리전에 대해 다음을 구성합니다.

작업 수

테스트 시나리오를 위해 Fargate 클러스터에서 시작될 컨테이너(작업) 수입니다. 계정이 "Fargate 리소스에 도달" 한도에 도달하면 추가 작업이 생성되지 않습니다.

동시성

작업당 생성된 동시 가상 사용자 수입니다. 권장 제한은 작업당 vCPUs 2개의 기본 설정을 기반으로 합니다. 동시성은 CPU 및 메모리 리소스에 의해 제한됩니다.

사용자 수 결정

컨테이너가 테스트에 지원할 수 있는 사용자 수는 Amazon CloudWatch에서 사용자 수를 점진적으로 늘리고 성능을 모니터링하여 확인할 수 있습니다. CPU 및 메모리 성능이 제한에 도달하는 것을 관찰하면 컨테이너가 기본 구성(vCPU 2개 및 메모리 4GB)에서 해당 테스트에 지원할 수 있는 최대 사용자 수에 도달한 것입니다.

보정 프로세스

다음 예제를 사용하여 테스트에 대한 동시 사용자 제한을 확인할 수 있습니다.

  1. 사용자가 200명 이하인 테스트를 생성합니다.

  2. 테스트가 실행되는 동안 CloudWatch 콘솔을 사용하여 CPU와 메모리를 모니터링합니다.

    1. 왼쪽 탐색 창의 Container Insights에서 성능 모니터링을 선택합니다.

    2. 성능 모니터링 페이지의 왼쪽 드롭다운 메뉴에서 ECS 클러스터를 선택합니다.

    3. 오른쪽 드롭다운 메뉴에서 Amazon Elastic Container Service(Amazon ECS) 클러스터를 선택합니다.

  3. 모니터링하는 동안 CPU와 메모리를 관찰합니다. CPU가 75%를 초과하지 않거나 메모리가 85%를 초과하지 않는 경우(일회성 피크 무시) 사용자 수가 많은 다른 테스트를 실행할 수 있습니다.

테스트가 리소스 제한을 초과하지 않은 경우 1~3단계를 반복합니다. 선택적으로 컨테이너 리소스를 늘려 동시 사용자 수를 늘릴 수 있습니다. 그러나 이로 인해 비용이 더 많이 듭니다. 자세한 내용은 개발자 안내서를 참조하세요.

참고

정확한 결과를 얻으려면 동시 사용자 제한을 결정할 때 한 번에 하나의 테스트만 실행합니다. 모든 테스트는 동일한 클러스터를 사용하며 CloudWatch 컨테이너 인사이트는 클러스터를 기반으로 성능 데이터를 집계합니다. 이로 인해 두 테스트가 CloudWatch Container Insights에 동시에 보고되어 단일 테스트에 대한 리소스 사용률 지표가 부정확해집니다.

엔진당 사용자 보정에 대한 자세한 내용은 BlazeMeter 설명서의 타우루스 테스트 보정을 참조하세요.

참고

솔루션은 각 리전에 사용 가능한 용량 정보를 표시하므로 사용 가능한 한도 내에서 테스트 구성을 계획하는 데 도움이 됩니다.

사용 가능한 작업 테이블

사용 가능한 작업 테이블에는 선택한 각 리전의 리소스 가용성이 표시됩니다.

  • 리전 - AWS 리전 이름입니다.

  • 작업당 vCPUs - 각 작업에 할당된 가상 CPUs 수(기본값: 2).

  • DLT 작업 제한 - 계정의 Fargate 제한(기본값: 2000)에 따라 생성할 수 있는 최대 작업 수입니다.

  • 사용 가능한 DLT 작업 - 리전에서 사용할 수 있는 현재 작업 수입니다(기본값: 2000).

리전당 사용 가능한 작업을 보여주는 표

작업당 사용 가능한 작업 또는 vCPUs 수를 늘리려면 개발자 안내서를 참조하세요.

테스트 기간

로드 테스트가 실행되는 기간을 정의합니다.

램프 업

대상 동시성에 도달하는 시간입니다. 이 기간 동안 로드가 0에서 구성된 동시성 수준으로 점진적으로 증가합니다.

에 대해 보류

대상 로드를 유지하는 기간입니다. 테스트는이 기간 동안 완전한 동시성으로 계속됩니다.

4단계: 검토 및 생성

테스트 시나리오를 생성하기 전에 모든 구성을 검토합니다. 다음을 확인합니다.

  • 일반 설정(이름, 설명, 일정).

  • 시나리오 구성(테스트 유형, 엔드포인트 또는 스크립트).

  • 트래픽 셰이프(작업, 사용자, 기간, 리전).

검토 후 생성을 선택하여 테스트 시나리오를 저장합니다.

테스트 시나리오 관리

테스트 시나리오를 생성한 후 다음을 수행할 수 있습니다.

  • 편집 - 테스트 구성을 수정합니다. 일반적인 사용 사례는 다음과 같습니다.

    • 원하는 트랜잭션 속도를 달성하기 위해 트래픽 셰이프를 구체화합니다.

  • 복사 - 기존 테스트 시나리오를 복제하여 변형을 생성합니다. 일반적인 사용 사례는 다음과 같습니다.

    • 엔드포인트 업데이트 또는 헤더/본문 파라미터 추가.

    • 테스트 스크립트 추가 또는 수정.

  • 삭제 - 더 이상 필요하지 않은 테스트 시나리오를 제거합니다.