

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

# 아키텍처 세부 정보
<a name="architecture-details"></a>

이 섹션에서는 [이 솔루션을 구성하는 구성 요소 및 AWS 서비스와](#aws-services-in-this-solution) 이러한 구성 요소가 함께 작동하는 방식에 대한 아키텍처 세부 정보를 설명합니다.

AWS의 분산 로드 테스트 솔루션은 [프런트 엔드](front-end.md), [백엔드](back-end.md) 및 선택적 [MCP 서버](MCP-Server.md)라는 세 가지 상위 수준 구성 요소로 구성됩니다.

# 프런트 엔드
<a name="front-end"></a>

프런트 엔드는 솔루션과 상호 작용하기 위한 인터페이스를 제공하며 다음을 포함합니다.
+ 프로그래밍 방식 액세스를 위한 로드 테스트 API
+ 성능 테스트 생성, 예약 및 실행을 위한 웹 콘솔
+ 테스트 결과 및 오류의 AI 지원 분석을 위한 선택적 MCP 서버

## 로드 테스트 API
<a name="load-testing-api"></a>

AWS의 분산 로드 테스트는 솔루션의 RESTful API를 호스팅하도록 Amazon API Gateway를 구성합니다. 사용자는 포함된 웹 콘솔, RESTful API 및 선택적 MCP 서버를 통해 로드 테스트 시스템과 안전하게 상호 작용할 수 있습니다. API는 Amazon DynamoDB에 저장된 테스트 데이터에 액세스하기 위한 "정문" 역할을 합니다. APIs를 사용하여 솔루션에 빌드하는 모든 확장 기능에 액세스할 수도 있습니다.

이 솔루션은 Amazon Cognito 사용자 풀의 사용자 인증 기능을 활용합니다. 사용자를 성공적으로 인증한 후 Amazon Cognito는 콘솔이 솔루션의 APIs(Amazon API Gateway 엔드포인트)에 요청을 제출하도록 허용하는 데 사용되는 JSON 웹 토큰을 발급합니다. HTTPS 요청은 토큰이 포함된 권한 부여 헤더와 함께 콘솔에서 APIs로 전송됩니다.

요청에 따라 API Gateway는 적절한 AWS Lambda 함수를 호출하여 DynamoDB 테이블에 저장된 데이터에 필요한 작업을 수행하고, 테스트 시나리오를 Amazon S3에 JSON 객체로 저장하고, Amazon CloudWatch 지표 이미지를 검색하고, 테스트 시나리오를 AWS Step Functions 상태 시스템에 제출합니다.

솔루션의 API에 대한 자세한 내용은이 가이드의 [분산 로드 테스트 API](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/distributed-load-testing-api.html) 섹션을 참조하세요.

## 웹 콘솔
<a name="web-console"></a>

이 솔루션에는 테스트를 구성 및 실행하고, 실행 중인 테스트를 모니터링하고, 자세한 테스트 결과를 보는 데 사용할 수 있는 웹 콘솔이 포함되어 있습니다. 콘솔은 직관적인 웹 애플리케이션을 구축하기 위한 오픈 소스 설계 시스템인 [Cloudscape](https://cloudscape.design/)로 구축된 ReactJS 애플리케이션입니다. 콘솔은 Amazon S3에서 호스팅되며 Amazon CloudFront를 통해 액세스됩니다. 애플리케이션은 AWS Amplify를 활용하여 Amazon Cognito와 통합하여 사용자를 인증합니다. 웹 콘솔에는 AWS IoT Core에서 해당 주제를 구독하는 실행 중인 테스트의 라이브 데이터를 보는 옵션도 포함되어 있습니다.

웹 콘솔 URL은 CloudFormation 출력에서 콘솔로 찾을 수 있는 CloudFront 배포 도메인 이름입니다. CloudFormation **** CloudFormation 템플릿을 시작하면 웹 콘솔 URL과 로그인하기 위한 일회용 암호가 포함된 이메일도 받게 됩니다.

## MCP 서버(선택 사항)
<a name="mcp-server-front-end"></a>

선택적 모델 컨텍스트 프로토콜(MCP) 서버는 AI 개발 도구가 자연어 상호 작용을 통해 로드 테스트 데이터에 액세스하고 분석할 수 있는 추가 인터페이스를 제공합니다. 이 구성 요소는 솔루션 배포 중에 MCP 서버 옵션을 선택한 경우에만 배포됩니다.

MCP 서버를 사용하면 AI 에이전트가 Amazon Q, Claude 및 기타 MCP 호환 AI 어시스턴트와 같은 도구를 사용하여 테스트 결과를 쿼리하고, 성능 지표를 분석하고, 로드 테스트 데이터에 대한 인사이트를 얻을 수 있습니다. MCP Server 아키텍처 및 구성에 대한 자세한 내용은이 섹션의 [MCP Server](MCP-Server.md)를 참조하세요.

# Backend
<a name="back-end"></a>

백엔드는 테스트에 대한 로드를 생성하는 데 사용하는 컨테이너 이미지 파이프라인과 로드 테스트 엔진으로 구성됩니다. 프런트 엔드를 통해 백엔드와 상호 작용합니다. 또한 각 테스트에 대해 시작된 AWS Fargate의 Amazon ECS 태스크에는 고유한 테스트 식별자(ID)로 태그가 지정됩니다. 이러한 테스트 ID 태그를 사용하여이 솔루션의 비용을 모니터링할 수 있습니다. 자세한 내용은 *AWS Billing and Cost Management 사용 설명서*의 [사용자 정의 비용 할당 태그를 참조하세요](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html).

## 컨테이너 이미지 파이프라인
<a name="container-image-pipeline"></a>

이 솔루션은 [Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/)으로 빌드된 컨테이너 이미지를 [Taurus](https://gettaurus.org/) 로드 테스트 프레임워크가 설치된 기본 이미지로 사용합니다. Taurus는 JMeter, K6, Locust 및 기타 테스트 도구를 지원하는 오픈 소스 테스트 자동화 프레임워크입니다. AWS는 Amazon Elastic Container Registry(Amazon ECR) 퍼블릭 리포지토리에서이 이미지를 호스팅합니다. 이 솔루션은이 이미지를 사용하여 AWS Fargate 클러스터의 Amazon ECS에서 작업을 실행합니다.

자세한 내용은이 가이드의 [컨테이너 이미지 사용자 지정](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/container-image.html) 섹션을 참조하세요.

## 인프라 테스트
<a name="testing-infrastructure"></a>

이 솔루션은 기본 CloudFormation 템플릿 외에도 여러 리전에서 테스트를 실행하는 데 필요한 리소스를 시작하는 리전 템플릿을 제공합니다. 솔루션은이 템플릿을 Amazon S3에 저장하고 웹 콘솔에 해당 템플릿에 대한 링크를 제공합니다. 각 리전 스택에는 라이브 데이터를 처리하기 위한 VPC, AWS Fargate 클러스터 및 Lambda 함수가 포함되어 있습니다.

추가 리전에 테스트 인프라를 배포하는 방법에 대한 자세한 내용은이 가이드의 [다중 리전 배포](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/multi-region-deployment.html) 섹션을 참조하세요.

## 로드 테스트 엔진
<a name="load-testing-engine"></a>

Distributed Load Testing 솔루션은 Amazon Elastic Container Service(Amazon ECS) 및 AWS Fargate를 사용하여 여러 리전에서 수천 명의 동시 사용자를 시뮬레이션하여 지속적인 속도로 HTTP 요청을 생성합니다.

포함된 웹 콘솔을 사용하여 테스트 파라미터를 정의합니다. 이 솔루션은 이러한 파라미터를 사용하여 JSON 테스트 시나리오를 생성하고 Amazon S3에 저장합니다. 테스트 스크립트 및 테스트 파라미터에 대한 자세한 내용은이 섹션의 [테스트 유형을](design-considerations.md#test-types) 참조하세요.

AWS Step Functions 상태 시스템은 AWS Fargate 클러스터에서 Amazon ECS 작업을 실행하고 모니터링합니다. AWS Step Functions 상태 시스템에는 ecr-checker AWS Lambda 함수, task-status-checker AWS Lambda 함수, task-runner AWS Lambda 함수, task-canceler AWS Lambda 함수 및 결과 구문 분석기 AWS Lambda 함수가 포함되어 있습니다. 워크플로에 대한 자세한 내용은이 가이드의 [워크플로 테스트](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-workflow.html) 섹션을 참조하세요. 테스트 결과에 대한 자세한 내용은이 가이드의 [테스트 결과](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-results.html) 섹션을 참조하세요. 테스트 취소 워크플로에 대한 자세한 내용은이 가이드의 [테스트 취소 워크플로](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-cancel-workflow.html) 섹션을 참조하세요.

라이브 데이터를 선택하면 솔루션은 해당 리전의 Fargate 작업에 해당하는 CloudWatch 로그를 통해 각 리전에서 real-time-data-publisher Lambda 함수를 시작합니다. 그런 다음 솔루션은 기본 스택을 시작한 리전 내의 AWS IoT Core에서 데이터를 처리하고 주제에 게시합니다. 자세한 내용은이 가이드의 [라이브 데이터](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/live-data.html) 섹션을 참조하세요.

# MCP 서버
<a name="MCP-Server"></a>

선택적 모델 컨텍스트 프로토콜(MCP) 서버 통합을 통해 AI 에이전트는 자연어 상호 작용을 통해 로드 테스트 데이터에 프로그래밍 방식으로 액세스하고 분석할 수 있습니다. 이 구성 요소는 솔루션 배포 중에 MCP 서버 옵션을 선택한 경우에만 배포됩니다.

MCP 서버는 AI 개발 도구와 DLT 배포 간의 연결 역할을 하여 성능 테스트 결과의 지능형 분석을 위한 표준화된 인터페이스를 제공합니다. 아키텍처는 여러 AWS 서비스를 통합하여 AI 에이전트 상호 작용을 위한 안전하고 확장 가능한 인터페이스를 생성합니다.

## AWS AgentCore 게이트웨이
<a name="AWS-AgentCore-Gateway"></a>

AWS AgentCore Gateway는 MCP 서버에 대해 표준화된 호스팅 및 프로토콜 관리를 제공하는 완전관리형 서비스입니다. 이 솔루션에서 AgentCore Gateway는 로드 테스트 데이터에 대한 액세스를 요청할 때 AI 에이전트가 연결하는 퍼블릭 엔드포인트 역할을 합니다.

서비스는 도구 검색, 인증 토큰 검증 및 요청 라우팅을 포함한 모든 MCP 프로토콜 통신을 처리합니다. AgentCore Gateway는 각 요청에 대한 Cognito 토큰 서명 및 클레임을 검증하는 동시에 퍼블릭 엔드포인트에 대한 일반적인 위협에 대한 보안 보호 기능이 내장된 다중 테넌트 서비스로 작동합니다.

## DLT MCP 서버 Lambda
<a name="MCP-Server-Lambda"></a>

DLT MCP 서버 Lambda 함수는 AI 에이전트의 MCP 요청을 처리하고 이를 DLT 리소스에 대한 쿼리로 변환하는 사용자 지정 서버리스 구성 요소입니다.

이 Lambda 함수는 MCP 통합의 인텔리전스 계층 역할을 하여 DynamoDB 테이블에서 테스트 결과를 검색하고, S3 버킷에 저장된 성능 아티팩트에 액세스하고, 자세한 실행 정보를 위해 CloudWatch 로그를 쿼리합니다. Lambda 함수는 읽기 전용 액세스 패턴을 구현하고 원시 DLT 데이터를 에이전트가 쉽게 해석하고 분석할 수 있는 구조화되고 AI 친화적인 형식으로 변환합니다.

## 인증 통합
<a name="MCP-Auth-Integration"></a>

인증 시스템은 기존 Cognito 사용자 풀 인프라를 활용하여 웹 콘솔과 MCP 서버 인터페이스 모두에서 일관된 액세스 제어를 유지합니다.

이 통합은 OAuth 2.0 토큰 기반 인증을 사용합니다. 사용자는 Cognito 로그인 프로세스를 통해 한 번 인증하고 UI 상호 작용과 MCP 서버 액세스 모두에 적합한 토큰을 수신합니다. 시스템은 웹 인터페이스와 동일한 권한 경계 및 액세스 제어를 유지하여 사용자가 콘솔을 통해 액세스할 수 있는 것과 동일한 로드 테스트 데이터에 AI 에이전트를 통해서만 액세스할 수 있도록 합니다.

## 이 솔루션의 AWS 서비스
<a name="aws-services-in-this-solution"></a>

이 솔루션에는 다음 AWS 서비스가 포함되어 있습니다.


| AWS 서비스 | 설명 | 
| --- | --- | 
|   [Amazon API Gateway](https://aws.amazon.com/api-gateway/)   |   **Core.** 솔루션에서 REST API 엔드포인트를 호스팅합니다.  | 
|   [CloudFormation](https://aws.amazon.com/cloudformation/)   |   **Core.** 솔루션 인프라에 대한 배포를 관리합니다.  | 
|   [Amazon CloudFront](https://aws.amazon.com/cloudfront/)   |   **Core.** Amazon S3에서 호스팅되는 웹 콘텐츠를 제공합니다.  | 
|   [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)()   |   **Core.** 솔루션 로그 및 지표를 저장합니다.  | 
|   [Amazon Cognito](https://aws.amazon.com/cognito/)   |   **Core.** API에 대한 사용자 관리 및 인증을 처리합니다.  | 
|   [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)   |   **Core.** 배포 정보를 저장하고 시나리오 세부 정보 및 결과를 테스트합니다.  | 
|   [Amazon Elastic Container Service](https://aws.amazon.com/ecs/)   |   **Core.** AWS Fargate 컨테이너에서 독립적인 Amazon ECS 작업을 배포하고 관리합니다.  | 
|   [AWS Fargate](https://aws.amazon.com/fargate/)   |   **Core.** 호스트 솔루션의 Amazon ECS 컨테이너  | 
|   [AWS Identity and Access Management](https://aws.amazon.com/iam/)   |   **Core.** 사용자 역할 및 권한 관리를 처리합니다.  | 
|   [Lambda](https://aws.amazon.com/lambda/)   |   **Core.** APIs 구현, 테스트 결과 구문 분석 및 작업자/리더 작업 시작을 위한 로직을 제공합니다.  | 
|   [AWS Step Functions](https://aws.amazon.com/step-functions/)   |   **Core.** 지정된 리전의 AWS Fargate 태스크에서 Amazon ECS 컨테이너 프로비저닝을 오케스트레이션합니다.  | 
|   [Amplify](https://aws.amazon.com/amplify/)   |   **지원.** [AWS Amplify](https://aws.amazon.com/amplify)로 구동되는 웹 콘솔을 제공합니다.  | 
|   [Amazon CloudWatch Events](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)   |   **지원.** 지정된 날짜 또는 반복 날짜에 자동으로 시작되도록 테스트를 예약합니다.  | 
|   [Amazon Elastic 컨테이너 레지스트리](https://aws.amazon.com/ecr/)   |   **지원.** 컨테이너 이미지를 퍼블릭 ECR 리포지토리에 호스팅합니다.  | 
|   [AWS IoT Core](https://aws.amazon.com/iot-core/)   |   **지원.** AWS IoT Core에서 해당 주제를 구독하여 실행 중인 테스트에 대한 라이브 데이터를 볼 수 있습니다.  | 
|   [AWS Systems Manager](https://aws.amazon.com/systems-manager/)   |   **지원.** 리소스 작업 및 비용 데이터에 대한 애플리케이션 수준의 리소스 모니터링 및 시각화를 제공합니다.  | 
|   [Amazon S3](https://aws.amazon.com/s3/)   |   **지원.** 정적 웹 콘텐츠, 로그, 지표 및 테스트 데이터를 호스팅합니다.  | 
|   [Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/)   |   **지원.** AWS Fargate에서 실행되는 솔루션의 Amazon ECS 컨테이너를 포함합니다.  | 
|   [Amazon Bedrock AgentCore](https://aws.amazon.com/bedrock/agentcore/)   |   **지원, 선택 사항.** AI 에이전트와 API 통합을 위한 솔루션의 선택적 원격 모델 컨텍스트 프로토콜(MCP) 서버를 호스팅합니다.  | 

# AWS의 분산 로드 테스트 작동 방식
<a name="how-distributed-load-testing-on-aws-works"></a>

다음 세부 분석에는 테스트 시나리오 실행과 관련된 단계가 나와 있습니다.

**테스트 워크플로**  
 ![\[image3\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/image3.png) 

1. 웹 콘솔을 사용하여 구성 세부 정보가 포함된 테스트 시나리오를 솔루션의 API에 제출합니다.

1. 테스트 시나리오 구성은 Amazon Simple Storage Service(Amazon S3)에 JSON 파일()로 업로드됩니다`s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json`.

1. AWS Step Functions 상태 시스템은 테스트 ID, 작업 수, 테스트 유형 및 파일 유형을 AWS Step Functions 상태 시스템 입력으로 사용하여 실행됩니다. 테스트가 예약된 경우 먼저 지정된 날짜에 AWS Step Functions를 트리거하는 CloudWatch Events 규칙을 생성합니다. 일정 워크플로에 대한 자세한 내용은이 가이드의 [일정 워크플로 테스트](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html) 섹션을 참조하세요.

1. 구성 세부 정보는 Amazon DynamoDB 테이블 시나리오에 저장됩니다.

1. AWS Step Functions 작업 실행기 워크플로에서 task-status-checker AWS Lambda 함수는 Amazon Elastic Container Service(Amazon ECS) 작업이 동일한 테스트 ID에 대해 이미 실행 중인지 확인합니다. 동일한 테스트 ID의 작업이 실행 중인 것으로 확인되면 오류가 발생합니다. AWS Fargate 클러스터에서 실행 중인 Amazon ECS 작업이 없는 경우 함수는 테스트 ID, 작업 수 및 테스트 유형을 반환합니다.

1. 작업 실행기 AWS Lambda 함수는 이전 단계에서 작업 세부 정보를 가져오고 AWS Fargate 클러스터에서 Amazon ECS 작업자 작업을 실행합니다. Amazon ECS API는 RunTask 작업을 사용하여 작업자 작업을 실행합니다. 이러한 작업자 작업이 시작된 다음 테스트를 시작하기 위해 리더 작업의 시작 메시지를 기다립니다. RunTask 작업은 정의당 10개의 작업으로 제한됩니다. 작업 수가 10개를 초과하는 경우 모든 작업자 작업이 시작될 때까지 작업 정의가 여러 번 실행됩니다. 또한 함수는 결과 구문 분석 AWS Lambda 함수에서 현재 테스트를 구분하는 접두사를 생성합니다.

1. task-status-checker AWS Lambda 함수는 모든 Amazon ECS 작업자 작업이 동일한 테스트 ID로 실행 중인지 확인합니다. 태스크가 여전히 프로비저닝 중인 경우 1분 동안 기다렸다가 다시 확인합니다. 모든 Amazon ECS 작업이 실행되면 테스트 ID, 작업 수, 테스트 유형, 모든 작업 IDs 및 접두사를 반환하고 이를 작업 실행기 함수에 전달합니다.

1. Task-runner AWS Lambda 함수가 다시 실행되며, 이번에는 리더 노드 역할을 하는 단일 Amazon ECS 작업을 시작합니다. 이 ECS 태스크는 테스트를 동시에 시작하기 위해 각 작업자 태스크에 테스트 시작 메시지를 보냅니다.

1. task-status-checker AWS Lambda 함수는 Amazon ECS 작업이 동일한 테스트 ID로 실행 중인지 다시 확인합니다. 태스크가 계속 실행 중인 경우 1분 동안 기다렸다가 다시 확인합니다. 실행 중인 Amazon ECS 작업이 없으면 테스트 ID, 작업 수, 테스트 유형 및 접두사를 반환합니다.

1. 작업 실행기 AWS Lambda 함수가 AWS Fargate 클러스터에서 Amazon ECS 작업을 실행하면 각 작업은 Amazon S3에서 테스트 구성을 다운로드하고 테스트를 시작합니다.

1. 테스트가 실행되면 각 작업에 대한 평균 응답 시간, 동시 사용자 수, 성공한 요청 수 및 실패한 요청 수가 Amazon CloudWatch에 로깅되고 CloudWatch 대시보드에서 볼 수 있습니다.

1. 테스트에 라이브 데이터를 포함시킨 경우 솔루션은 구독 필터를 사용하여 CloudWatch에서 실시간 테스트 결과를 필터링합니다. 그런 다음 솔루션은 Lambda 함수에 데이터를 전달합니다.

1. 그런 다음 Lambda 함수는 수신된 데이터를 구조화하여 AWS IoT Core 주제에 게시합니다.

1. 웹 콘솔은 테스트를 위해 AWS IoT Core 주제를 구독하고 주제에 게시된 데이터를 수신하여 테스트가 실행되는 동안 실시간 데이터를 그래프로 표시합니다.

1. 테스트가 완료되면 컨테이너 이미지는 세부 보고서를 XML 파일로 Amazon S3로 내보냅니다. 각 파일에는 파일 이름에 대한 UUID가 부여됩니다. 예: s3://dlte-bucket/test-scenarios/*<\$1TEST\$1ID>*/results/*<\$1UUID>*.json.

1. XML 파일이 Amazon S3에 업로드되면 결과 구문 분석기 AWS Lambda 함수는 접두사로 시작하는 XML 파일의 결과를 읽고 모든 결과를 구문 분석하여 하나의 요약된 결과로 집계합니다.

1. 결과 구문 분석기 AWS Lambda 함수는 집계 결과를 Amazon DynamoDB 테이블에 기록합니다.

## MCP Server 워크플로(선택 사항)
<a name="mcp-server-workflow"></a>

선택적 MCP 서버 통합을 배포하는 경우 AI 에이전트는 다음 워크플로를 통해 로드 테스트 데이터에 액세스하고 분석할 수 있습니다.

 **MCP 서버 아키텍처** 

![\[DLT 구성 요소와의 통합을 보여주는 MCP 서버 아키텍처\]](http://docs.aws.amazon.com/ko_kr/solutions/latest/distributed-load-testing-on-aws/images/mcp-server-architecture.png)


1.  **고객 상호** 작용 - 고객은 AWS AgentCore Gateway에서 호스팅하는 MCP 엔드포인트를 통해 DLT의 MCP와 상호 작용합니다. AI 에이전트는이 엔드포인트에 연결하여 로드 테스트 데이터에 대한 액세스를 요청합니다.

1.  **권한 부여** - AgentCore Gateway는 Solution Cognito 사용자 풀 애플리케이션 클라이언트에 대한 권한 부여를 처리합니다. 게이트웨이는 사용자의 Cognito 토큰을 검증하여 DLT MCP 서버에 액세스할 수 있는 권한이 있는지 확인합니다. 권한 있는 사용자에게는 에이전트 도구 액세스 권한이 읽기 전용 작업으로 제한되어 있는 액세스 권한이 부여됩니다.

1.  **도구 사양** - AgentCore Gateway는 DLT MCP 서버 Lambda 함수에 연결합니다. 도구 사양은 AI 에이전트가 로드 테스트 데이터와 상호 작용하는 데 사용할 수 있는 도구를 정의합니다.

1.  **읽기 전용 API 액세스** - Lambda 함수는 기존 DLT API Gateway 엔드포인트를 통한 읽기 전용 API 액세스로 범위가 지정됩니다. 함수는 네 가지 기본 작업을 제공합니다.
   +  **시나리오 나열** - DynamoDB 시나리오 테이블에서 테스트 시나리오 목록을 검색합니다.
   +  **시나리오 테스트 결과 가져오기** - DynamoDB 및 S3에서 특정 시나리오에 대한 세부 테스트 결과에 액세스
   +  **Fargate 로드 테스트 실행기 가져오기** - ECS 클러스터에서 Fargate 작업을 실행하는 방법에 대한 쿼리 정보
   +  **사용 가능한 리전 스택 가져오기** - CloudFormation에서 배포된 리전 인프라에 대한 정보 검색

MCP Server 통합은 기존 DLT 인프라(API Gateway, Cognito, DynamoDB, S3)를 활용하여 AI 기반 분석 및 인사이트를 위한 테스트 데이터에 대한 안전하고 읽기 전용 액세스를 제공합니다.

# 설계 고려 사항
<a name="design-considerations"></a>

이 섹션에서는 지원되는 애플리케이션, 테스트 유형, 예약 옵션 및 배포 고려 사항을 포함하여 AWS의 분산 로드 테스트 솔루션에 대한 중요한 설계 결정 및 구성 옵션에 대해 설명합니다.

## 지원되는 애플리케이션
<a name="supported-applications"></a>

이 솔루션은 AWS 계정에서 애플리케이션으로 네트워크 연결이 있는 한 클라우드 기반 애플리케이션 및 온프레미스 애플리케이션 테스트를 지원합니다. 솔루션은 HTTP 또는 HTTPS 프로토콜을 사용하는 APIs 지원합니다.

## 테스트 유형
<a name="test-types"></a>

AWS의 분산 로드 테스트는 간단한 HTTP 엔드포인트 테스트, JMeter, K6 및 Locust와 같은 여러 테스트 유형을 지원합니다.

### 간단한 HTTP 엔드포인트 테스트
<a name="single-http-support"></a>

웹 콘솔은 사용자 지정 스크립트를 작성하지 않고도 HTTP 또는 HTTPS 엔드포인트를 테스트할 수 있는 HTTP 엔드포인트 구성 인터페이스를 제공합니다. 엔드포인트 URL을 정의하고 드롭다운 메뉴에서 HTTP 메서드(GET, POST, PUT, DELETE 등)를 선택한 다음 선택적으로 사용자 지정 요청 헤더와 본문 페이로드를 추가합니다. 이 구성을 사용하면 사용자 지정 권한 부여 토큰, 콘텐츠 유형 또는 애플리케이션에 필요한 기타 HTTP 헤더 및 요청 본문을 사용하여 APIs를 테스트할 수 있습니다.

### JMeter 테스트
<a name="jmeter-script-support"></a>

웹 콘솔을 사용하여 테스트 시나리오를 생성할 때 JMeter 테스트 스크립트를 업로드할 수 있습니다. 솔루션은 스크립트를 시나리오 S3 버킷에 업로드합니다. Amazon ECS 작업이 실행되면 S3에서 JMeter 스크립트를 다운로드하고 테스트를 실행합니다.

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

JMeter 입력 파일이 있는 경우 JMeter 스크립트와 함께 입력 파일을 압축할 수 있습니다. 테스트 시나리오를 생성할 때 zip 파일을 선택할 수 있습니다.

플러그인을 포함하려는 경우 번들 zip 파일의 /plugins 하위 디렉터리에 포함된 모든 .jar 파일이 JMeter 확장 디렉터리에 복사되고 로드 테스트에 사용할 수 있습니다.

**참고**  
JMeter 입력 파일을 JMeter 스크립트 파일에 포함하는 경우 JMeter 스크립트 파일에 입력 파일의 상대 경로를 포함해야 합니다. 또한 입력 파일은 상대 경로에 있어야 합니다. 예를 들어 JMeter 입력 파일과 스크립트 파일이 /home/user 디렉터리에 있고 JMeter 스크립트 파일에서 입력 파일을 참조하는 경우 입력 파일의 경로는 이어야 합니다.INPUT\$1FILES. 대신 /home/user/INPUT\$1FILES를 사용하면 입력 파일을 찾을 수 없으므로 테스트가 실패합니다.

JMeter 플러그인을 포함하는 경우 zip 파일의 루트 내에서 .jar 파일을 /plugins라는 하위 디렉터리에 번들링해야 합니다. zip 파일의 루트를 기준으로 jar 파일의 경로는 ./plugins/BUNDLED\$1PLUGIN.jar여야 합니다.

JMeter 스크립트를 사용하는 방법에 대한 자세한 내용은 [JMeter 사용 설명서를 참조하세요](https://jmeter.apache.org/usermanual/index.html).

### K6 테스트
<a name="k6-script-support"></a>

이 솔루션은 K6 프레임워크 기반 테스트를 지원합니다. K6는 [AGPL-3.0 라이선스](https://github.com/grafana/k6/blob/master/LICENSE.md)에 따라 릴리스됩니다. 솔루션은 새 K6 테스트를 생성할 때 라이선스 승인 메시지를 표시합니다. K6 테스트 파일을 필요한 입력 파일과 함께 아카이브 파일에 업로드할 수 있습니다.

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

### Locust 테스트
<a name="locust-script-support"></a>

이 솔루션은 Locust 프레임워크 기반 테스트를 지원합니다. 아카이브 파일에 필요한 입력 파일과 함께 Locust 테스트 파일을 업로드할 수 있습니다.

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

## 테스트 예약
<a name="scheduling-tests"></a>

이 솔루션은 로드 테스트를 실행하기 위한 세 가지 실행 타이밍 옵션을 제공합니다.
+  **지금 실행** - 생성 직후 로드 테스트 실행
+  한 **번 실행** - 향후 특정 날짜 및 시간에 테스트를 실행합니다.
+  **일정에 따라 실행** - cron 표현식을 사용하여 반복 테스트를 생성하여 일정을 정의합니다.

한 **번 실행**을 선택하면 실행 시간을 24시간 형식으로 지정하고 로드 테스트 실행을 시작해야 하는 실행 날짜를 지정합니다.

**일정에 따라 실행을** 선택하면 cron 표현식을 수동으로 입력하거나 일반적인 cron 패턴(예: 매시간, 매일 특정 시간, 평일 또는 매월) 중에서 선택할 수 있습니다. cron 표현식은 분, 시간, 월, 월, 요일 및 연도에 대한 필드와 함께 세분화된 일정 형식을 사용합니다. 또한 예약된 테스트 실행을 중지해야 하는 시기를 정의하는 만료 날짜도 지정해야 합니다. 예약의 작동 방식에 대한 자세한 내용은이 가이드의 [예약 테스트 워크플로](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html) 섹션을 참조하세요.

**참고**  
테스트 기간: 예약 시 총 테스트 기간을 고려합니다. 예를 들어, 램프 업 시간이 10분이고 대기 시간이 40분인 테스트는 완료하는 데 약 80분이 걸립니다.
최소 간격: 예약된 테스트 사이의 간격이 예상 테스트 기간보다 긴지 확인합니다. 예를 들어 테스트에 약 80분이 걸리는 경우 3시간마다 실행되도록 예약합니다.
시간당 제한: 예상 테스트 기간이 1시간 미만인 경우에도 시스템에서는 1시간 차이로만 테스트를 예약할 수 없습니다.

## 동시 테스트
<a name="concurrent-tests"></a>

이 솔루션은 Amazon ECS 클러스터에서 실행 중인 모든 작업의 결합된 출력을 실시간으로 표시하는 각 테스트에 대한 Amazon CloudWatch 대시보드를 생성합니다. CloudWatch 대시보드에는 평균 응답 시간, 동시 사용자 수, 성공한 요청 수, 실패한 요청 수가 표시됩니다. 솔루션은 각 지표를 초 단위로 집계하고 1분마다 대시보드를 업데이트합니다.

## 사용자 관리
<a name="user-management"></a>

초기 구성 중에 Amazon Cognito가 솔루션의 웹 콘솔에 대한 액세스 권한을 부여하는 데 사용하는 사용자 이름과 이메일 주소를 제공합니다. 콘솔은 사용자 관리를 제공하지 않습니다. 사용자를 추가하려면 Amazon Cognito 콘솔을 사용해야 합니다. 자세한 내용은 *Amazon Cognito 개발자 안내서*의 [사용자 풀에서 사용자 관리를 참조하세요](https://docs.aws.amazon.com/cognito/latest/developerguide/managing-users.html).

기존 사용자를 Amazon Cognito 사용자 풀로 마이그레이션하려면 사용자를 [ Amazon Cognito 사용자 풀로 마이그레이션하기 위한 AWS 블로그 접근 방식을 참조하세요](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools).

## 리전 배포
<a name="regional-deployment"></a>

이 솔루션은 특정 AWS 리전에서만 사용할 수 있는 Amazon Cognito를 사용합니다. 따라서 Amazon Cognito를 사용할 수 있는 리전에이 솔루션을 배포해야 합니다. 리전별 최신 서비스 가용성은 [AWS 리전 서비스 목록을](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) 참조하세요.