

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Detail arsitektur
<a name="architecture-details"></a>

Bagian ini menjelaskan komponen dan [layanan AWS yang membentuk solusi ini](#aws-services-in-this-solution) dan detail arsitektur tentang cara komponen ini bekerja sama.

[Solusi Pengujian Beban Terdistribusi pada AWS terdiri dari tiga komponen tingkat tinggi: [ujung depan](front-end.md), [backend](back-end.md), dan Server MCP opsional.](MCP-Server.md)

# Ujung depan
<a name="front-end"></a>

Ujung depan menyediakan antarmuka untuk berinteraksi dengan solusi dan mencakup:
+ API pengujian beban untuk akses terprogram
+ Konsol web untuk membuat, menjadwalkan, dan menjalankan tes kinerja
+ Server MCP opsional untuk analisis hasil tes dan kesalahan yang dibantu AI

## Muat pengujian API
<a name="load-testing-api"></a>

Pengujian Beban Terdistribusi di AWS mengonfigurasi Amazon API Gateway untuk meng-host RESTful API solusi. Pengguna dapat berinteraksi dengan sistem pengujian beban secara aman melalui konsol web, RESTful API, dan Server MCP opsional yang disertakan. API bertindak sebagai “pintu depan” untuk akses ke data pengujian yang disimpan di Amazon DynamoDB. Anda juga dapat menggunakan APIs untuk mengakses fungsionalitas tambahan apa pun yang Anda buat ke dalam solusi.

Solusi ini memanfaatkan fitur otentikasi pengguna kumpulan pengguna Amazon Cognito. Setelah berhasil mengautentikasi pengguna, Amazon Cognito mengeluarkan token web JSON yang digunakan untuk mengizinkan konsol mengirimkan permintaan ke solusi (titik akhir Amazon API APIs Gateway). Permintaan HTTPS dikirim oleh konsol ke APIs header otorisasi yang menyertakan token.

Berdasarkan permintaan tersebut, API Gateway memanggil fungsi AWS Lambda yang sesuai untuk melakukan tugas yang diperlukan pada data yang disimpan dalam tabel DynamoDB, menyimpan skenario pengujian sebagai objek JSON di Amazon S3, mengambil gambar metrik CloudWatch Amazon, dan mengirimkan skenario pengujian ke mesin status AWS Step Functions.

Untuk informasi selengkapnya tentang API solusi, lihat bagian [API pengujian beban terdistribusi](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/distributed-load-testing-api.html) dari panduan ini.

## Konsol web
<a name="web-console"></a>

Solusi ini mencakup konsol web yang dapat Anda gunakan untuk mengonfigurasi dan menjalankan pengujian, memantau pengujian yang sedang berjalan, dan melihat hasil pengujian terperinci. Konsol adalah aplikasi ReactJS yang dibangun dengan [Cloudscape](https://cloudscape.design/), sistem desain sumber terbuka untuk membangun aplikasi web yang intuitif. Konsol ini di-host di Amazon S3 dan diakses melalui Amazon. CloudFront Aplikasi ini memanfaatkan AWS Amplify untuk berintegrasi dengan Amazon Cognito untuk mengautentikasi pengguna. Konsol web juga berisi opsi untuk melihat data langsung untuk pengujian yang sedang berjalan, di mana ia berlangganan topik yang sesuai di AWS IoT Core.

URL konsol web adalah nama domain CloudFront distribusi yang dapat ditemukan di CloudFormation output sebagai **Konsol**. Setelah Anda meluncurkan CloudFormation template, Anda juga akan menerima email yang berisi URL konsol web dan kata sandi satu kali untuk masuk ke dalamnya.

## MCP Server (Opsional)
<a name="mcp-server-front-end"></a>

Server Model Context Protocol (MCP) opsional menyediakan antarmuka tambahan untuk alat pengembangan AI untuk mengakses dan menganalisis data pengujian beban melalui interaksi bahasa alami. Komponen ini hanya digunakan jika Anda memilih opsi MCP Server selama penerapan solusi.

Server MCP memungkinkan agen AI untuk menanyakan hasil pengujian, menganalisis metrik kinerja, dan mendapatkan wawasan tentang data pengujian beban Anda menggunakan alat seperti Amazon Q, Claude, dan asisten AI lain yang kompatibel dengan MCP. Untuk informasi rinci tentang arsitektur dan konfigurasi MCP Server, lihat [MCP Server](MCP-Server.md) di bagian ini.

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

Backend terdiri dari pipa gambar kontainer dan mesin pengujian beban yang Anda gunakan untuk menghasilkan beban untuk pengujian. Anda berinteraksi dengan backend melalui ujung depan. Selain itu, Amazon ECS pada tugas AWS Fargate yang diluncurkan untuk setiap pengujian ditandai dengan pengenal pengujian (ID) unik. Tag ID uji ini dapat digunakan untuk membantu Anda memantau biaya untuk solusi ini. Untuk informasi tambahan, lihat [Tag Alokasi Biaya yang Ditentukan Pengguna](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html) di Panduan Pengguna *AWS Billing and* Cost Management.

## Pipa gambar kontainer
<a name="container-image-pipeline"></a>

Solusi ini menggunakan gambar kontainer yang dibangun dengan [Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) sebagai gambar dasar dengan kerangka pengujian beban [Taurus](https://gettaurus.org/) diinstal. Taurus adalah kerangka kerja otomatisasi pengujian open-source yang mendukung JMeter, K6, Locust, dan alat pengujian lainnya. AWS menghosting gambar ini di repositori publik Amazon Elastic Container Registry (Amazon ECR). Solusinya menggunakan gambar ini untuk menjalankan tugas di Amazon ECS di klaster AWS Fargate.

Untuk informasi selengkapnya, lihat bagian [kustomisasi gambar Container](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/container-image.html) dari panduan ini.

## Infrastruktur pengujian
<a name="testing-infrastructure"></a>

Selain CloudFormation templat utama, solusinya menyediakan templat regional untuk meluncurkan sumber daya yang diperlukan untuk menjalankan pengujian di beberapa Wilayah. Solusinya menyimpan template ini di Amazon S3 dan menyediakan tautan ke sana di konsol web. Setiap tumpukan regional mencakup VPC, kluster AWS Fargate, dan fungsi Lambda untuk memproses data langsung.

Untuk informasi selengkapnya tentang cara menerapkan infrastruktur pengujian di Wilayah tambahan, lihat bagian [penyebaran Multi-Region](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/multi-region-deployment.html) dari panduan ini.

## Mesin uji beban
<a name="load-testing-engine"></a>

Solusi Pengujian Beban Terdistribusi menggunakan Amazon Elastic Container Service (Amazon ECS) Container Service (Amazon ECS) dan AWS Fargate untuk mensimulasikan ribuan pengguna bersamaan di beberapa Wilayah, menghasilkan permintaan HTTP dengan kecepatan berkelanjutan.

Anda menentukan parameter pengujian menggunakan konsol web yang disertakan. Solusinya menggunakan parameter ini untuk menghasilkan skenario pengujian JSON dan menyimpannya di Amazon S3. Untuk informasi selengkapnya tentang skrip pengujian dan parameter pengujian, lihat [Jenis pengujian](design-considerations.md#test-types) di bagian ini.

Mesin status AWS Step Functions menjalankan dan memantau tugas Amazon ECS di klaster AWS Fargate. Mesin status AWS Step Functions mencakup fungsi AWS Lambda ecr-checker, fungsi AWS Lambda, fungsi AWS Lambda yang menjalankan tugas, fungsi task-status-checker AWS Lambda pembatal tugas, dan fungsi AWS Lambda parser hasil. Untuk informasi selengkapnya tentang alur kerja, lihat bagian [Alur kerja Uji](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-workflow.html) panduan ini. Untuk informasi lebih lanjut tentang hasil tes, lihat bagian [Hasil tes](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-results.html) dari panduan ini. Untuk informasi selengkapnya tentang alur kerja pembatalan pengujian, lihat bagian Alur [kerja pembatalan pengujian pada panduan](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-cancel-workflow.html) ini.

Jika Anda memilih data langsung, solusi akan memulai fungsi real-time-data-publisher Lambda di setiap Wilayah dengan CloudWatch log yang sesuai dengan tugas Fargate di Wilayah tersebut. Solusinya kemudian memproses dan menerbitkan data ke topik di AWS IoT Core dalam Wilayah tempat Anda meluncurkan tumpukan utama. Untuk informasi selengkapnya, lihat bagian [Data langsung](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/live-data.html) dari panduan ini.

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

Integrasi Server Model Context Protocol (MCP) opsional memungkinkan agen AI mengakses dan menganalisis data pengujian beban Anda secara terprogram melalui interaksi bahasa alami. Komponen ini hanya digunakan jika Anda memilih opsi MCP Server selama penerapan solusi.

MCP Server bertindak sebagai jembatan antara alat pengembangan AI dan penyebaran DLT Anda, menyediakan antarmuka standar untuk analisis cerdas hasil pengujian kinerja. Arsitektur ini mengintegrasikan beberapa layanan AWS untuk menciptakan antarmuka yang aman dan dapat diskalakan untuk interaksi agen AI:

## AgentCore Gerbang AWS
<a name="AWS-AgentCore-Gateway"></a>

AWS AgentCore Gateway adalah layanan yang dikelola sepenuhnya yang menyediakan hosting standar dan manajemen protokol untuk server MCP. Dalam solusi ini, AgentCore Gateway berfungsi sebagai titik akhir publik yang terhubung dengan agen AI saat meminta akses ke data pengujian beban Anda.

Layanan ini menangani semua komunikasi protokol MCP, termasuk penemuan alat, validasi token otentikasi, dan perutean permintaan. AgentCore Gateway beroperasi sebagai layanan multi-penyewa dengan perlindungan keamanan bawaan terhadap ancaman umum terhadap titik akhir publik, sambil memvalidasi tanda tangan token Cognito dan klaim untuk setiap permintaan.

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

Fungsi DLT MCP Server Lambda adalah komponen tanpa server khusus yang memproses permintaan MCP dari agen AI dan menerjemahkannya ke dalam kueri terhadap sumber daya DLT Anda.

Fungsi Lambda ini bertindak sebagai lapisan intelijen integrasi MCP, mengambil hasil pengujian dari tabel DynamoDB, mengakses artefak kinerja yang disimpan dalam bucket S3, dan menanyakan log untuk informasi eksekusi terperinci. CloudWatch Fungsi Lambda mengimplementasikan pola akses hanya-baca dan mengubah data DLT mentah menjadi format terstruktur dan ramah AI yang dapat dengan mudah ditafsirkan dan dianalisis oleh agen.

## Integrasi otentikasi
<a name="MCP-Auth-Integration"></a>

Sistem otentikasi memanfaatkan infrastruktur kumpulan pengguna Cognito yang ada untuk mempertahankan kontrol akses yang konsisten di konsol web dan antarmuka Server MCP.

Integrasi ini menggunakan OAuth otentikasi berbasis token 2.0. Pengguna mengautentikasi sekali melalui proses login Cognito dan menerima token yang berfungsi untuk interaksi UI dan akses Server MCP. Sistem mempertahankan batas izin dan kontrol akses yang sama dengan antarmuka web, memastikan bahwa pengguna hanya dapat mengakses melalui agen AI data pengujian beban yang sama yang dapat mereka akses melalui konsol.

## Layanan AWS dalam solusi ini
<a name="aws-services-in-this-solution"></a>

Layanan AWS berikut disertakan dalam solusi ini:


| AWS service | Deskripsi | 
| --- | --- | 
|   [Amazon API Gateway](https://aws.amazon.com/api-gateway/)   |   **Inti.** Menghosting titik akhir REST API dalam solusi.  | 
|   [AWS CloudFormation](https://aws.amazon.com/cloudformation/)   |   **Inti.** Mengelola penyebaran untuk infrastruktur solusi.  | 
|   [Amazon CloudFront](https://aws.amazon.com/cloudfront/)   |   **Inti.** Melayani konten web yang dihosting di Amazon S3.  | 
|   [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/)   |   **Inti.** Menyimpan log dan metrik solusi.  | 
|   [Amazon Cognito](https://aws.amazon.com/cognito/)   |   **Inti.** Menangani manajemen pengguna dan otentikasi untuk API.  | 
|   [Amazon DynamoDB](https://aws.amazon.com/dynamodb/)   |   **Inti.** Menyimpan informasi penyebaran dan menguji detail skenario dan hasil.  | 
|   [Layanan Kontainer Elastis Amazon](https://aws.amazon.com/ecs/)   |   **Inti.** Menerapkan dan mengelola tugas Amazon ECS independen di kontainer AWS Fargate.  | 
|   [AWS Fargate](https://aws.amazon.com/fargate/)   |   **Inti.** Wadah Amazon ECS solusi host  | 
|   [AWS Identity and Access Management](https://aws.amazon.com/iam/)   |   **Inti.** Menangani peran pengguna dan manajemen izin.  | 
|   [AWS Lambda](https://aws.amazon.com/lambda/)   |   **Inti.** Menyediakan logika untuk APIs implementasi, menguji hasil parsing, dan meluncurkan workers/leader tugas.  | 
|   [AWS Step Functions](https://aws.amazon.com/step-functions/)   |   **Inti.** Mengatur penyediaan kontainer Amazon ECS pada tugas AWS Fargate di wilayah yang ditentukan  | 
|   [AWS Amplify](https://aws.amazon.com/amplify/)   |   **Mendukung.** Menyediakan konsol web yang didukung oleh [AWS Amplify](https://aws.amazon.com/amplify).  | 
|   [ CloudWatch Acara Amazon](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html)   |   **Mendukung**. Menjadwalkan tes untuk secara otomatis dimulai pada tanggal tertentu atau pada tanggal berulang.  | 
|   [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/)   |   **Mendukung**. Menghosting gambar kontainer di repositori ECR publik.  | 
|   [AWS IoT Core](https://aws.amazon.com/iot-core/)   |   **Mendukung.** Memungkinkan melihat data langsung untuk pengujian yang sedang berjalan dengan berlangganan topik terkait di AWS IoT Core.  | 
|   [AWS Systems Manager](https://aws.amazon.com/systems-manager/)   |   **Mendukung.** Menyediakan pemantauan sumber daya tingkat aplikasi dan visualisasi operasi sumber daya dan data biaya.  | 
|   [Amazon S3](https://aws.amazon.com/s3/)   |   **Mendukung.** Menghosting konten web statis, log, metrik, dan data pengujian.  | 
|   [Amazon Virtual Private Cloud](https://aws.amazon.com/vpc/)   |   **Mendukung.** Berisi wadah Amazon ECS solusi yang berjalan di AWS Fargate.  | 
|   [Amazon Bedrock AgentCore](https://aws.amazon.com/bedrock/agentcore/)   |   **Mendukung, Opsional.** Menghosting Server Remote Model Context Protocol (MCP) opsional solusi untuk integrasi agen AI dengan API.  | 

# Cara Kerja Pengujian Beban Terdistribusi di AWS
<a name="how-distributed-load-testing-on-aws-works"></a>

Rincian rinci berikut menunjukkan langkah-langkah yang terlibat dalam menjalankan skenario pengujian.

**Alur kerja uji**  
 ![\[image3\]](http://docs.aws.amazon.com/id_id/solutions/latest/distributed-load-testing-on-aws/images/image3.png) 

1. Anda menggunakan konsol web untuk mengirimkan skenario pengujian yang menyertakan detail konfigurasi ke API solusi.

1. Konfigurasi skenario pengujian diunggah ke Amazon Simple Storage Service (Amazon S3) sebagai file JSON (). `s3://<bucket-name>/test-scenarios/<$TEST_ID>/<$TEST_ID>.json`

1. Mesin status AWS Step Functions berjalan menggunakan ID pengujian, jumlah tugas, jenis pengujian, dan jenis file sebagai input mesin status AWS Step Functions. Jika pengujian dijadwalkan, pengujian akan membuat aturan CloudWatch Acara terlebih dahulu, yang memicu AWS Step Functions pada tanggal yang ditentukan. Untuk detail selengkapnya tentang alur kerja penjadwalan, lihat bagian Alur [kerja penjadwalan pengujian pada panduan](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html) ini.

1. Detail konfigurasi disimpan dalam tabel skenario Amazon DynamoDB.

1. Dalam alur kerja runner tugas AWS Step Functions, fungsi AWS task-status-checker Lambda memeriksa apakah tugas Amazon Elastic Container Service (Amazon ECS) Container Service (Amazon ECS) sudah berjalan untuk ID pengujian yang sama. Jika tugas dengan ID pengujian yang sama ditemukan berjalan, itu menyebabkan kesalahan. Jika tidak ada tugas Amazon ECS yang berjalan di klaster AWS Fargate, fungsi akan mengembalikan ID pengujian, jumlah tugas, dan jenis pengujian.

1. Fungsi AWS Lambda pelari tugas mendapatkan detail tugas dari langkah sebelumnya dan menjalankan tugas pekerja Amazon ECS di klaster AWS Fargate. Amazon ECS API menggunakan RunTask tindakan untuk menjalankan tugas pekerja. Tugas pekerja ini diluncurkan dan kemudian menunggu pesan awal dari tugas pemimpin untuk memulai tes. RunTask Tindakan ini dibatasi hingga 10 tugas per definisi. Jika jumlah tugas Anda lebih dari 10, definisi tugas akan berjalan beberapa kali hingga semua tugas pekerja dimulai. Fungsi ini juga menghasilkan awalan untuk membedakan pengujian saat ini dalam fungsi AWS Lambda yang mengurai hasil.

1. Fungsi task-status-checker AWS Lambda memeriksa apakah semua tugas pekerja Amazon ECS berjalan dengan ID pengujian yang sama. Jika tugas masih disediakan, ia menunggu selama satu menit dan memeriksa lagi. Setelah semua tugas Amazon ECS berjalan, ia mengembalikan ID pengujian, jumlah tugas, jenis pengujian, semua tugas IDs dan awalan dan meneruskannya ke fungsi task-runner.

1. Fungsi AWS Lambda pelari tugas berjalan lagi, kali ini meluncurkan satu tugas Amazon ECS untuk bertindak sebagai node pemimpin. Tugas ECS ini mengirimkan pesan uji awal ke setiap tugas pekerja untuk memulai pengujian secara bersamaan.

1. Fungsi task-status-checker AWS Lambda kembali memeriksa apakah tugas Amazon ECS berjalan dengan ID pengujian yang sama. Jika tugas masih berjalan, ia menunggu selama satu menit dan memeriksa lagi. Setelah tidak ada tugas Amazon ECS yang berjalan, ia mengembalikan ID pengujian, jumlah tugas, jenis pengujian, dan awalan.

1. Saat fungsi AWS Lambda pelari tugas menjalankan tugas Amazon ECS di klaster AWS Fargate, setiap tugas mengunduh konfigurasi pengujian dari Amazon S3 dan memulai pengujian.

1. Setelah pengujian berjalan, waktu respons rata-rata, jumlah pengguna bersamaan, jumlah permintaan yang berhasil, dan jumlah permintaan yang gagal untuk setiap tugas dicatat di Amazon CloudWatch dan dapat dilihat di CloudWatch dasbor.

1. Jika Anda menyertakan data langsung dalam pengujian, solusi akan memfilter hasil pengujian real-time CloudWatch menggunakan filter langganan. Kemudian solusinya meneruskan data ke fungsi Lambda.

1. Fungsi Lambda kemudian menyusun data yang diterima dan menerbitkannya ke topik AWS IoT Core.

1. Konsol web berlangganan topik AWS IoT Core untuk pengujian dan menerima data yang dipublikasikan ke topik untuk membuat grafik data waktu nyata saat pengujian sedang berjalan.

1. Saat pengujian selesai, gambar kontainer mengekspor laporan terperinci sebagai file XHTML ke Amazon S3. Setiap file diberi UUID untuk nama file. *Misalnya, s3://dlte-bucket/test-scenarios/ *<\$1TEST\$1ID> /results/ <\$1UUID>* .json.*

1. Saat file XHTML diunggah ke Amazon S3, fungsi AWS Lambda parser hasil membaca hasil dalam file XMLyang dimulai dengan awalan dan mem-parsing dan menggabungkan semua hasil menjadi satu hasil yang diringkas.

1. Fungsi AWS Lambda parser hasil menulis hasil agregat ke tabel Amazon DynamoDB.

## Alur kerja MCP Server (Opsional)
<a name="mcp-server-workflow"></a>

Jika Anda menerapkan integrasi MCP Server opsional, agen AI dapat mengakses dan menganalisis data pengujian beban Anda melalui alur kerja berikut:

 **Arsitektur MCP Server** 

![\[Arsitektur MCP Server menunjukkan integrasi dengan komponen DLT\]](http://docs.aws.amazon.com/id_id/solutions/latest/distributed-load-testing-on-aws/images/mcp-server-architecture.png)


1.  **Interaksi pelanggan** - Pelanggan berinteraksi dengan MCP DLT melalui MCP Endpoint yang diselenggarakan oleh AWS Gateway. AgentCore Agen AI terhubung ke titik akhir ini untuk meminta akses memuat data pengujian.

1.  **Otorisasi** - AgentCore Gateway menangani otorisasi terhadap klien aplikasi kumpulan pengguna Cognito Solusi. Gateway memvalidasi token Cognito pengguna untuk memastikan mereka memiliki izin untuk mengakses server DLT MCP. Pengguna yang berwenang diberikan akses dengan akses alat agen terbatas pada operasi hanya-baca.

1.  **Spesifikasi alat** - AgentCore Gateway terhubung ke fungsi Lambda Server MCP DLT. Spesifikasi alat mendefinisikan alat yang tersedia yang dapat digunakan agen AI untuk berinteraksi dengan data pengujian beban Anda.

1.  **Akses API hanya-baca** - Fungsi Lambda dicakup untuk akses API hanya-baca melalui titik akhir DLT API Gateway yang ada. Fungsi ini menyediakan empat operasi utama:
   +  **Daftar skenario** - Mengambil daftar skenario pengujian dari tabel skenario DynamoDB
   +  **Dapatkan hasil tes skenario - Akses hasil** pengujian terperinci untuk skenario tertentu dari DynamoDB dan S3
   +  **Dapatkan pelari uji beban Fargate** - Kueri informasi tentang menjalankan tugas Fargate di cluster ECS
   +  **Dapatkan tumpukan Regional yang tersedia** - Ambil informasi tentang infrastruktur regional yang digunakan dari CloudFormation

Integrasi MCP Server memanfaatkan infrastruktur DLT yang ada (API Gateway, Cognito, DynamoDB, S3) untuk menyediakan akses yang aman dan hanya-baca untuk menguji data untuk analisis dan wawasan yang didukung AI.

# Pertimbangan desain
<a name="design-considerations"></a>

Bagian ini menjelaskan keputusan desain penting dan opsi konfigurasi untuk solusi Pengujian Beban Terdistribusi pada AWS, termasuk aplikasi yang didukung, jenis pengujian, opsi penjadwalan, dan pertimbangan penerapan.

## Aplikasi-aplikasi yang didukung
<a name="supported-applications"></a>

Solusi ini mendukung pengujian aplikasi berbasis cloud dan aplikasi lokal selama Anda memiliki konektivitas jaringan dari akun AWS ke aplikasi Anda. Solusinya mendukung APIs yang menggunakan protokol HTTP atau HTTPS.

## Jenis tes
<a name="test-types"></a>

Pengujian Beban Terdistribusi di AWS mendukung beberapa jenis pengujian: pengujian titik akhir HTTP sederhana,, K6 JMeter, dan Locust.

### Tes titik akhir HTTP sederhana
<a name="single-http-support"></a>

Konsol web menyediakan antarmuka Konfigurasi Titik Akhir HTTP yang memungkinkan Anda menguji titik akhir HTTP atau HTTPS apa pun tanpa menulis skrip khusus. Anda menentukan URL endpoint, pilih metode HTTP (GET, POST, PUT, DELETE, dll.) Dari menu dropdown, dan secara opsional menambahkan header permintaan kustom dan muatan tubuh. Konfigurasi ini memungkinkan Anda untuk menguji APIs dengan token otorisasi kustom, jenis konten, atau header HTTP lainnya dan badan permintaan yang diperlukan oleh aplikasi Anda.

### JMeter tes
<a name="jmeter-script-support"></a>

Saat membuat skenario pengujian menggunakan konsol web, Anda dapat mengunggah skrip JMeter pengujian. Solusinya mengunggah skrip ke bucket skenario S3. Saat tugas Amazon ECS berjalan, mereka mengunduh JMeter skrip dari S3 dan menjalankan pengujian.

**penting**  
Meskipun JMeter skrip Anda dapat menentukan konkurensi (pengguna virtual), tingkat transaksi (TPS), waktu peningkatan, dan parameter pemuatan lainnya, solusinya akan mengganti konfigurasi ini dengan nilai yang Anda tentukan di layar Bentuk Lalu Lintas selama pembuatan pengujian. Konfigurasi Bentuk Lalu Lintas mengontrol jumlah tugas, konkurensi (pengguna virtual per tugas), durasi peningkatan, dan durasi penahanan untuk eksekusi pengujian.

Jika Anda memiliki file JMeter input, Anda dapat zip file input bersama dengan JMeter skrip. Anda dapat memilih file zip saat membuat skenario pengujian.

Jika Anda ingin menyertakan plugin, file.jar apa pun yang disertakan dalam subdirektori /plugins dalam file zip yang dibundel akan disalin ke direktori JMeter ekstensi dan tersedia untuk pengujian beban.

**catatan**  
Jika Anda menyertakan file JMeter input dengan file JMeter skrip Anda, Anda harus menyertakan jalur relatif dari file input dalam file JMeter skrip Anda. Selain itu, file input harus berada di jalur relatif. Misalnya, ketika file JMeter input dan file skrip Anda berada di/home/user directory and you refer to the input files in the JMeter script file, the path of input files must be ./INPUT\$1FILES. If you use /home/user/INPUT\$1FILES sebagai gantinya, pengujian akan gagal karena tidak akan dapat menemukan file input.

Jika Anda menyertakan JMeter plugin, file.jar harus dibundel dalam subdirektori bernama /plugins dalam root file zip. Sehubungan dengan root file zip, jalur ke file jar harus. /plugins/bundled\$1plugin.jar.

Untuk informasi selengkapnya tentang cara menggunakan JMeter skrip, lihat [Panduan JMeter Pengguna](https://jmeter.apache.org/usermanual/index.html).

### Tes K6
<a name="k6-script-support"></a>

Solusinya mendukung pengujian berbasis kerangka kerja K6. K6 dirilis di bawah lisensi [AGPL-3.0](https://github.com/grafana/k6/blob/master/LICENSE.md). Solusinya menampilkan pesan pengakuan lisensi saat membuat tes K6 baru. Anda dapat mengunggah file uji K6 bersama dengan file input yang diperlukan dalam file arsip.

**penting**  
Meskipun skrip K6 Anda dapat menentukan konkurensi (pengguna virtual), tahapan, ambang batas, dan parameter beban lainnya, solusinya akan mengganti konfigurasi ini dengan nilai yang Anda tentukan di Bentuk Lalu Lintas layar selama pembuatan pengujian. Konfigurasi Bentuk Lalu Lintas mengontrol jumlah tugas, konkurensi (pengguna virtual per tugas), durasi peningkatan, dan durasi penahanan untuk eksekusi pengujian.

### Tes belalang
<a name="locust-script-support"></a>

Solusinya mendukung pengujian berbasis kerangka kerja Locust. Anda dapat mengunggah file uji Locust bersama dengan file input yang diperlukan dalam file arsip.

**penting**  
Meskipun skrip Locust Anda dapat menentukan konkurensi (jumlah pengguna), laju spawn, dan parameter pemuatan lainnya, solusinya akan mengganti konfigurasi ini dengan nilai yang Anda tentukan di Layar Bentuk Lalu Lintas selama pembuatan pengujian. Konfigurasi Bentuk Lalu Lintas mengontrol jumlah tugas, konkurensi (pengguna virtual per tugas), durasi peningkatan, dan durasi penahanan untuk eksekusi pengujian.

## Tes penjadwalan
<a name="scheduling-tests"></a>

Solusinya menyediakan tiga opsi waktu eksekusi untuk menjalankan tes beban:
+  **Jalankan Sekarang** - Jalankan uji beban segera setelah pembuatan
+  **Jalankan Once** - Jalankan tes pada tanggal dan waktu tertentu di masa depan
+  **Jalankan pada Jadwal** - Buat tes berulang menggunakan ekspresi cron untuk menentukan jadwal

Ketika Anda memilih **Run Once**, Anda menentukan waktu berjalan dalam format 24 jam dan tanggal berjalan ketika uji beban harus mulai berjalan.

Ketika Anda memilih **Run on a Schedule**, Anda dapat memasukkan ekspresi cron secara manual atau memilih dari pola cron umum (seperti setiap jam, setiap hari pada waktu tertentu, hari kerja, atau bulanan). Ekspresi cron menggunakan format jadwal berbutir halus dengan bidang untuk menit, jam, hari bulan, bulan, hari dalam seminggu, dan tahun. Anda juga harus menentukan tanggal kedaluwarsa, yang menentukan kapan tes terjadwal harus berhenti berjalan. Untuk informasi selengkapnya tentang cara kerja penjadwalan, lihat bagian [Alur kerja penjadwalan pengujian](https://docs.aws.amazon.com/solutions/latest/distributed-load-testing-on-aws/test-scheduling-workflow.html) pada panduan ini.

**catatan**  
Durasi tes: Pertimbangkan total durasi tes saat menjadwalkan. Misalnya, tes dengan waktu ramp-up 10 menit dan waktu penahanan 40 menit akan memakan waktu sekitar 80 menit untuk menyelesaikannya.
Interval minimum: Pastikan interval antara tes terjadwal lebih lama dari perkiraan durasi tes. Misalnya, jika tes memakan waktu sekitar 80 menit, jadwalkan untuk berjalan tidak lebih sering dari setiap 3 jam.
Batasan per jam: Sistem tidak mengizinkan tes dijadwalkan dengan perbedaan hanya satu jam meskipun perkiraan durasi tes kurang dari satu jam.

## Tes bersamaan
<a name="concurrent-tests"></a>

Solusi ini membuat CloudWatch dasbor Amazon untuk setiap pengujian yang menampilkan output gabungan dari semua tugas yang berjalan di cluster Amazon ECS secara real time. CloudWatch Dasbor menunjukkan waktu respons rata-rata, jumlah pengguna bersamaan, jumlah permintaan yang berhasil, dan jumlah permintaan yang gagal. Solusinya menggabungkan setiap metrik per detik dan memperbarui dasbor setiap menit.

## Manajemen pengguna
<a name="user-management"></a>

Selama konfigurasi awal, Anda memberikan nama pengguna dan alamat email yang digunakan Amazon Cognito untuk memberi Anda akses ke konsol web solusi. Konsol tidak menyediakan administrasi pengguna. Untuk menambahkan pengguna tambahan, Anda harus menggunakan konsol Amazon Cognito. Untuk informasi selengkapnya, lihat [Mengelola Pengguna di Kumpulan Pengguna](https://docs.aws.amazon.com/cognito/latest/developerguide/managing-users.html) di Panduan *Pengembang Amazon Cognito*.

Untuk memigrasikan pengguna yang ada ke kumpulan pengguna Amazon Cognito, lihat [Pendekatan blog AWS untuk memigrasikan pengguna ke kumpulan pengguna Amazon Cognito](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools).

## Penyebaran regional
<a name="regional-deployment"></a>

Solusi ini menggunakan Amazon Cognito yang hanya tersedia di Wilayah AWS tertentu. Oleh karena itu, Anda harus menerapkan solusi ini di wilayah tempat Amazon Cognito tersedia. Untuk ketersediaan layanan terbaru menurut Wilayah, lihat [Daftar Layanan Regional AWS](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/).