

# Rancang beban kerja Anda agar dapat beradaptasi dengan perubahan dalam permintaan
<a name="design-your-workload-to-adapt-to-changes-in-demand"></a>

 **Beban kerja** yang dapat diskalakan memberikan elastisitas untuk menambahkan atau mengeluarkan sumber daya secara otomatis sehingga sangat sesuai dengan permintaan saat ini pada titik waktu tertentu. 

**Topics**
+ [REL07-BP01 Menggunakan otomatisasi ketika mendapatkan atau menskalakan sumber daya](rel_adapt_to_changes_autoscale_adapt.md)
+ [REL07-BP02 Mendapatkan sumber daya setelah deteksi gangguan pada beban kerja](rel_adapt_to_changes_reactive_adapt_auto.md)
+ [REL07-BP03 Menambah sumber daya berdasarkan deteksi bahwa beban kerja memerlukan lebih banyak sumber daya](rel_adapt_to_changes_proactive_adapt_auto.md)
+ [REL07-BP04 Beban uji beban kerja Anda](rel_adapt_to_changes_load_tested_adapt.md)

# REL07-BP01 Menggunakan otomatisasi ketika mendapatkan atau menskalakan sumber daya
<a name="rel_adapt_to_changes_autoscale_adapt"></a>

 Landasan keandalan di cloud adalah definisi, penyediaan, dan pengelolaan infrastruktur dan sumber daya Anda secara terprogram. Otomatisasi membantu Anda menyederhanakan penyediaan sumber daya, memfasilitasi deployment yang konsisten dan aman, serta menskalakan sumber daya di seluruh infrastruktur Anda. 

 **Hasil yang diinginkan**: Anda mengelola infrastruktur sebagai kode (IaC). Anda menentukan dan memelihara kode infrastruktur Anda dalam sistem kontrol versi (VCS). Anda mendelegasikan penyediaan sumber daya AWS ke mekanisme otomatis dan memanfaatkan layanan yang dikelola seperti Penyeimbang Beban Aplikasi (ALB), Penyeimbang Beban Jaringan (NLB), dan grup Auto Scaling. Anda menyediakan sumber daya Anda menggunakan pipeline integrasi berkelanjutan/pengiriman berkelanjutan (CI/CD) sehingga perubahan kode secara otomatis memulai pembaruan sumber daya, termasuk pembaruan pada konfigurasi Auto Scaling Anda. 

 **Anti-pola umum:** 
+  Anda melakukan deployment sumber daya secara manual menggunakan baris perintah atau di Konsol Manajemen AWS (juga dikenal sebagai *click-ops*). 
+  Anda melakukan tight coupling terhadap komponen atau sumber daya aplikasi Anda, dan akibatnya menciptakan arsitektur yang tidak fleksibel. 
+  Anda menerapkan kebijakan penskalaan yang tidak fleksibel dan tidak beradaptasi dengan perubahan persyaratan bisnis, pola lalu lintas, atau jenis sumber daya baru. 
+  Anda secara manual memperkirakan kapasitas untuk memenuhi permintaan yang diantisipasi. 

 **Manfaat menjalankan praktik terbaik ini**: Infrastruktur sebagai kode (IaC) memungkinkan infrastruktur didefinisikan secara terprogram. Hal ini membantu Anda mengelola perubahan infrastruktur melalui siklus hidup pengembangan perangkat lunak yang sama dengan perubahan aplikasi, sehingga meningkatkan konsistensi dan pengulangan, serta mengurangi risiko tugas manual yang rawan kesalahan. Anda dapat menyederhanakan lebih lanjut proses penyediaan dan pembaruan sumber daya melalui penerapan IaC dengan pipeline pengiriman otomatis. Anda dapat melakukan deployment pembaruan infrastruktur secara andal dan efisien tanpa perlu intervensi manual. Ketangkasan ini sangat penting ketika menskalakan sumber daya untuk memenuhi permintaan yang berfluktuasi. 

 Anda dapat mencapai penskalaan sumber daya otomatis yang dinamis bersama dengan IaC dan pipeline pengiriman. Dengan memantau metrik utama dan menerapkan kebijakan penskalaan yang telah ditentukan sebelumnya, Auto Scaling dapat secara otomatis menyediakan atau menghentikan penyediaan sumber daya sesuai kebutuhan, sehingga meningkatkan kinerja dan efisiensi biaya. Hal ini mengurangi potensi kesalahan manual atau keterlambatan dalam menanggapi perubahan pada persyaratan aplikasi atau beban kerja. 

 Kombinasi IaC, pipeline pengiriman otomatis, dan Auto Scaling membantu organisasi menyediakan, memperbarui, dan menskalakan lingkungan mereka dengan percaya diri. Otomatisasi ini sangat penting untuk menjaga infrastruktur cloud yang responsif, tangguh, dan dikelola secara efisien. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Tinggi 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Untuk mengatur otomatisasi dengan pipeline CI/CD dan infrastruktur sebagai kode (IaC) untuk arsitektur AWS Anda, pilih sistem kontrol versi seperti Git untuk menyimpan templat dan konfigurasi IaC Anda. Templat ini dapat ditulis menggunakan alat-alat seperti [AWS CloudFormation](https://aws.amazon.com/cloudformation/). Untuk memulai, tentukan komponen infrastruktur Anda (seperti VPC AWS, Grup Amazon EC2 Auto Scaling, dan basis data Amazon RDS) dalam templat-templat ini. 

 Selanjutnya, integrasikan templat IaC ini dengan pipeline CI/CD untuk mengotomatiskan proses deployment. [AWS CodePipeline](https://aws.amazon.com/codepipeline/)menyediakan solusi bawaan AWS yang lancar, atau Anda dapat menggunakan solusi CI/CD pihak ketiga lainnya. Buat pipeline yang aktif saat terjadi perubahan pada repositori kontrol versi Anda. Konfigurasikan pipeline untuk menyertakan tahapan yang melakukan linting dan validasi terhadap templat IaC Anda, melakukan deployment infrastruktur ke lingkungan staging, menjalankan pengujian otomatis, dan terakhir, melakukan deployment ke produksi. Sertakan langkah-langkah persetujuan jika diperlukan untuk mempertahankan kontrol atas perubahan. Pipeline otomatis ini tidak hanya mempercepat deployment, tetapi juga memfasilitasi konsistensi dan keandalan di seluruh lingkungan. 

 Konfigurasikan Auto Scaling sumber daya seperti instans Amazon EC2, tugas Amazon ECS, dan replika basis data di IaC Anda untuk menyediakan penambahan skala dan pengurangan skala secara otomatis sesuai kebutuhan. Pendekatan ini meningkatkan ketersediaan dan kinerja aplikasi serta mengoptimalkan biaya dengan menyesuaikan sumber daya secara dinamis berdasarkan permintaan. Untuk mengetahui daftar sumber daya yang didukung, lihat [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) dan [AWS Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html). 

### Langkah-langkah implementasi
<a name="implementation-steps"></a>

1.  Buat dan gunakan repositori kode sumber untuk menyimpan kode yang mengontrol konfigurasi infrastruktur Anda. Lakukan commit perubahan pada repositori ini untuk mencerminkan perubahan yang sedang berlangsung yang ingin Anda buat. 

1.  Pilih solusi infrastruktur sebagai kode seperti AWS CloudFormation untuk menjaga infrastruktur Anda tetap mutakhir dan mendeteksi inkonsistensi (pergeseran) dari kondisi yang Anda inginkan. 

1.  Integrasikan platform IaC Anda dengan pipeline CI/CD Anda untuk mengotomatiskan deployment. 

1.  Tentukan dan kumpulkan metrik yang sesuai untuk penskalaan sumber daya secara otomatis. 

1.  Konfigurasikan penskalaan otomatis sumber daya menggunakan kebijakan penambahan skala dan pengurangan skala yang sesuai untuk komponen beban kerja Anda. Pertimbangkan untuk menggunakan penskalaan terjadwal untuk pola penggunaan yang dapat diprediksi. 

1.  Pantau deployment untuk mendeteksi kegagalan dan regresi. Terapkan mekanisme rollback dalam platform CI/CD Anda untuk mengembalikan perubahan, jika perlu. 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [AWS Auto Scaling: Cara Kerja Penskalaan](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html) 
+  [AWS Marketplace: produk yang dapat digunakan dengan penskalaan otomatis](https://aws.amazon.com/marketplace/search/results?searchTerms=Auto+Scaling) 
+  [Mengelola Kapasitas Throughput Secara Otomatis dengan Menggunakan Penskalaan Otomatis DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Menggunakan penyeimbang beban dengan grup Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html) 
+  [Apa itu AWS Akselerator Global?](https://docs.aws.amazon.com/global-accelerator/latest/dg/what-is-global-accelerator.html) 
+  [Apa itu Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
+  [Apa itu AWS Auto Scaling?](https://docs.aws.amazon.com/autoscaling/plans/userguide/what-is-aws-auto-scaling.html) 
+  [Apa yang dimaksud dengan Amazon CloudFront?](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html?ref=wellarchitected) 
+  [Apa itu Amazon Route 53?](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) 
+  [Apa itu Penyeimbangan Beban Elastis?](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/what-is-load-balancing.html) 
+  [Apa itu Penyeimbang Beban Jaringan?](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/introduction.html) 
+  [Apa itu Penyeimbang Beban Aplikasi?](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) 
+  [Mengintegrasikan Jenkins dengan AWS CodeBuild dan AWS CodeDeploy](https://aws.amazon.com/blogs/devops/setting-up-a-ci-cd-pipeline-by-integrating-jenkins-with-aws-codebuild-and-aws-codedeploy/) 
+  [Membuat pipeline empat tahap dengan AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-four-stage-pipeline.html) 

 **Video terkait:** 
+  [Back to Basics: Melakukan Deployment Kode Anda ke Amazon EC2](https://www.youtube.com/watch?v=f2wvEQ_sWS8) 
+  [AWS Supports You \$1 Memulai Solusi Infrastruktur sebagai Kode Anda Menggunakan Templat](https://www.youtube.com/watch?v=bgfx76jr7tA) 
+  [Merampingkan Proses Rilis Perangkat Lunak Menggunakan AWS CodePipeline](https://www.youtube.com/watch?v=zMa5gTLrzmQ) 
+  [Memantau Sumber Daya AWS Menggunakan Dasbor Amazon CloudWatch](https://www.youtube.com/watch?v=I7EFLChc07M) 
+  [Membuat Dasbor CloudWatch Lintas Akun & Lintas Wilayah \$1 Amazon Web Services](https://www.youtube.com/watch?v=eIUZdaqColg) 

# REL07-BP02 Mendapatkan sumber daya setelah deteksi gangguan pada beban kerja
<a name="rel_adapt_to_changes_reactive_adapt_auto"></a>

 Skalakan sumber daya secara reaktif saat diperlukan jika ketersediaan terganggu, guna memulihkan ketersediaan beban kerja. 

 Anda terlebih dahulu harus mengonfigurasi pemeriksaan kondisi dan kriteria pada pemeriksaan ini agar memberikan penanda saat ada ketersediaan yang terganggu karena kurangnya sumber daya. Lalu, beri tahu personel yang bersangkutan untuk menskalakan sumber daya secara manual, atau mulai lakukan otomatisasi untuk menskalakannya secara otomatis. 

 Skala dapat disesuaikan secara manual untuk beban kerja Anda (misalnya, penggantian jumlah instans EC2 di grup Auto Scaling atau modifikasi throughput tabel DynamoDB yang dapat dilakukan melalui Konsol Manajemen AWS atau AWS CLI). Namun, otomatisasi harus digunakan bila memungkinkan (silakan lihat **Gunakan otomatisasi saat memperoleh atau menskalakan sumber daya**). 

 **Hasil yang diinginkan:** Aktivitas penskalaan (baik secara otomatis atau manual) dimulai untuk memulihkan ketersediaan setelah mendeteksi adanya kegagalan atau pengalaman pelanggan yang mengalami penurunan kualitas. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Sedang 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Terapkan observabilitas dan pemantauan di semua komponen yang ada dalam beban kerja Anda untuk memantau pengalaman pelanggan dan mendeteksi terjadinya kegagalan. Tentukan prosedur, baik manual ataupun otomatis, yang menskalakan sumber daya yang diperlukan. o Untuk informasi selengkapnya, silakan lihat [REL11-BP01 Memantau semua komponen beban kerja untuk mendeteksi kegagalan](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_withstand_component_failures_monitoring_health.html). 

### Langkah-langkah implementasi
<a name="implementation-steps"></a>
+  Tentukan prosedur, baik manual ataupun otomatis, yang menskalakan sumber daya yang dibutuhkan. 
  +  Prosedur penskalaan tergantung pada bagaimana rancangan berbagai komponen yang ada dalam beban kerja Anda. 
  +  Prosedur penskalaan juga bisa berbeda-beda, tergantung pada teknologi dasar yang digunakan. 
    +  Komponen-komponen yang menggunakan AWS Auto Scaling dapat menggunakan rencana penskalaan untuk mengonfigurasi serangkaian instruksi guna menskalakan sumber daya Anda. Jika Anda menggunakan AWS CloudFormation atau menambahkan tag ke sumber daya AWS, Anda dapat menyiapkan rencana penskalaan untuk berbagai sumber daya, untuk masing-masing aplikasi. Auto Scaling (penskalaan otomatis) memberikan rekomendasi untuk strategi penyekalaan yang disesuaikan dengan setiap sumber daya. Setelah membuat rencana penskalaan, Auto Scaling (penskalaan otomatis) menggabungkan metode penskalaan dinamik dan penskalaan prediktif secara bersama-sama untuk mendukung strategi penskalaan Anda. Untuk detail selengkapnya, silakan lihat [Cara kerja rencana penskalaan](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html). 
    +  Amazon EC2 Auto Scaling membantu Anda memastikan bahwa Anda memiliki jumlah instans Amazon EC2 yang tepat tersedia untuk menangani beban untuk aplikasi Anda. Anda membuat koleksi instans EC2, yang disebut grup Auto Scaling (penskalaan otomatis). Anda dapat menentukan jumlah instans minimum dan maksimum di setiap grup Auto Scaling, dan Amazon EC2 Auto Scaling akan memastikan bahwa grup Anda tidak pernah berada di bawah atau di atas batas yang ditentukan ini. Untuk detail selengkapnya, silakan lihat [Apa itu Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
    +  Penskalaan otomatis Amazon DynamoDB menggunakan layanan Penskalaan Otomatis Aplikasi untuk secara dinamis menyesuaikan kapasitas throughput tersedia untuk merespons pola lalu lintas aktual. Ini memungkinkan tabel atau indeks sekunder global meningkatkan kapasitas baca dan tulis yang disediakan untuk menangani peningkatan lalu lintas tiba-tiba, tanpa throttling. Untuk detail lebih lanjut, silakan lihat [Mengelola kapasitas throughput secara otomatis dengan menggunakan penskalaan otomatis DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html). 

## Sumber daya
<a name="resources"></a>

 **Praktik-praktik terbaik terkait:** 
+ [REL07-BP01 Menggunakan otomatisasi ketika mendapatkan atau menskalakan sumber daya](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_adapt_to_changes_autoscale_adapt.html)
+  [REL11-BP01 Memantau semua komponen beban kerja untuk mendeteksi kegagalan](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/rel_withstand_component_failures_monitoring_health.html) 

 **Dokumen terkait:** 
+  [AWS Auto Scaling: Cara Kerja Penskalaan](https://docs.aws.amazon.com/autoscaling/plans/userguide/how-it-works.html) 
+  [Mengelola Kapasitas Throughput Secara Otomatis dengan Menggunakan Penskalaan Otomatis DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Apa itu Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 

# REL07-BP03 Menambah sumber daya berdasarkan deteksi bahwa beban kerja memerlukan lebih banyak sumber daya
<a name="rel_adapt_to_changes_proactive_adapt_auto"></a>

 Salah satu fitur yang paling berharga dari komputasi cloud adalah kemampuan untuk menyediakan sumber daya secara dinamis. 

 Dalam lingkungan komputasi on-premise tradisional, Anda harus mengidentifikasi dan menyediakan kapasitas yang cukup sebelumnya untuk melayani permintaan puncak. Hal ini menjadi masalah karena mahal dan menimbulkan risiko ketersediaan jika Anda meremehkan kebutuhan kapasitas puncak beban kerja. 

 Di cloud, Anda tidak perlu melakukan ini. Sebagai gantinya, Anda dapat menyediakan komputasi, basis data, dan kapasitas sumber daya lainnya sesuai kebutuhan untuk memenuhi permintaan saat ini maupun perkiraan. Solusi otomatis seperti Amazon EC2 Auto Scaling dan Application Auto Scaling dapat membuat sumber daya siap digunakan berdasarkan metrik yang Anda tentukan. Hal ini dapat membuat proses penskalaan lebih mudah dan terprediksi, serta dapat membuat beban kerja Anda jauh lebih andal dengan memastikan Anda memiliki ketersediaan sumber daya yang memadai setiap saat. 

 **Hasil yang diinginkan**: Anda mengonfigurasi penskalaan otomatis komputasi dan sumber daya lainnya untuk memenuhi permintaan. Anda menyediakan kapasitas tambahan yang cukup dalam kebijakan penskalaan Anda untuk memungkinkan lonjakan lalu lintas dilayani sementara sumber daya tambahan siap digunakan. 

 **Anti-pola umum:** 
+  Anda menyediakan sumber daya yang dapat diskalakan dengan jumlah tetap. 
+  Anda memilih metrik penskalaan yang tidak berkorelasi dengan permintaan aktual. 
+  Anda gagal menyediakan kapasitas tambahan yang cukup dalam rencana penskalaan Anda untuk mengakomodasi lonjakan permintaan. 
+  Kebijakan penskalaan Anda menambahkan kapasitas terlalu lambat, sehingga menyebabkan kehabisan kapasitas dan penurunan layanan saat sumber daya tambahan siap digunakan. 
+  Anda gagal mengonfigurasi jumlah sumber daya minimum dan maksimum dengan benar, sehingga menyebabkan kegagalan penskalaan. 

 **Manfaat menjalankan praktik terbaik ini:** Memiliki sumber daya yang cukup untuk memenuhi permintaan saat ini sangat penting untuk memberikan ketersediaan tinggi beban kerja Anda dan mematuhi tujuan tingkat layanan (SLO) yang Anda tetapkan. Penskalaan otomatis memungkinkan Anda menyediakan jumlah komputasi, database, dan sumber daya lain yang dibutuhkan beban kerja Anda secara tepat untuk melayani permintaan saat ini dan yang diperkirakan. Anda tidak perlu menentukan kebutuhan kapasitas puncak dan mengalokasikan sumber daya secara statis untuk melayaninya. Sebaliknya, ketika permintaan meningkat, Anda dapat mengalokasikan lebih banyak sumber daya untuk mengakomodasi peningkatan tersebut, dan setelah permintaan menurun, Anda dapat menonaktifkan sumber daya untuk mengurangi biaya. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Sedang 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Pertama, tentukan apakah komponen beban kerja cocok untuk penskalaan otomatis. Komponen-komponen ini disebut *dapat diskalakan secara horizontal* karena menyediakan sumber daya yang sama dan berperilaku identik. Contoh komponen yang dapat diskalakan secara horizontal termasuk instans EC2 yang dikonfigurasi sama, tugas [Amazon Elastic Container Service (ECS)](https://aws.amazon.com/ecs/), dan pod yang berjalan di [Amazon Elastic Kubernetes Service (EKS)](https://aws.amazon.com/eks/). Sumber daya komputasi ini biasanya terletak di belakang penyeimbang beban dan disebut sebagai *replika*. 

 Sumber daya lain yang direplikasi dapat meliputi replika baca database, tabel [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), dan klaster [Amazon ElastiCache](https://aws.amazon.com/elasticache/) (Redis OSS). Untuk daftar lengkap sumber daya yang didukung, lihat [Layanan AWS yang dapat Anda gunakan dengan Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/integrated-services-list.html). 

 Untuk arsitektur berbasis kontainer, Anda mungkin perlu menskalakan dengan dua cara berbeda. Pertama, Anda mungkin perlu menskalakan kontainer yang menyediakan layanan yang dapat diskalakan secara horizontal. Kedua, Anda mungkin perlu menskalakan sumber daya komputasi untuk memberi ruang bagi kontainer baru. Mekanisme penskalaan otomatis yang berbeda ada untuk setiap lapisan. Untuk menskalakan tugas ECS, Anda dapat menggunakan [Application Auto Scaling](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-auto-scaling.html). Untuk menskalakan pod Kubernetes, Anda dapat menggunakan [Horizontal Pod Autoscaler (HPA)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) atau [Kubernetes Event-driven Autoscaling (KEDA)](https://keda.sh/). Untuk menskalakan sumber daya komputasi, Anda dapat menggunakan [Penyedia Kapasitas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/asg-capacity-providers.html) untuk ECS, atau untuk Kubernetes, Anda dapat menggunakan [Karpenter](https://karpenter.sh) atau [Penskala Otomatis Klaster](https://kubernetes.io/docs/concepts/cluster-administration/cluster-autoscaling/). 

 Selanjutnya, pilih bagaimana Anda akan melakukan penskalaan otomatis. Ada tiga opsi utama: penskalaan berbasis metrik, penskalaan terjadwal, dan penskalaan prediktif. 

 **Penskalaan berbasis metrik** 

 Penskalaan berbasis metrik menyediakan sumber daya berdasarkan nilai satu *metrik penskalaan* atau lebih. Metrik penskalaan adalah metrik yang sesuai dengan permintaan beban kerja Anda. Cara yang baik untuk menentukan metrik penskalaan yang tepat adalah dengan melakukan pengujian beban di lingkungan non-produksi. Selama pengujian beban Anda, jangan ubah jumlah sumber daya yang dapat diskalakan, dan tingkatkan permintaan secara bertahap (misalnya, throughput, konkurensi, atau pengguna simulasi). Kemudian cari metrik yang meningkat (atau menurun) seiring dengan peningkatan permintaan, dan menurun (atau meningkat) seiring dengan penurunan permintaan. Metrik penskalaan yang umum mencakup pemanfaatan CPU, kedalaman antrean kerja (seperti antrean [Amazon SQS](https://aws.amazon.com/sqs/)), jumlah pengguna aktif, dan throughput jaringan. 

**catatan**  
 AWS mengamati bahwa pada sebagian besar aplikasi, pemanfaatan memori meningkat saat aplikasi dimulai dan mencapai nilai yang stabil setelahnya. Ketika permintaan menurun, pemanfaatan memori biasanya tetap meningkat, bukan menurun secara paralel. Karena pemanfaatan memori tidak berkorelasi dengan permintaan di kedua arah–yaitu, naik dan turun mengikuti permintaan–pertimbangkan dengan cermat sebelum Anda memilih metrik ini untuk penskalaan otomatis. 

 Penskalaan berbasis metrik adalah *operasi laten*. Diperlukan waktu beberapa menit agar metrik pemanfaatan menyebar ke mekanisme penskalaan otomatis, dan mekanisme ini biasanya menunggu sinyal yang jelas akan peningkatan permintaan sebelum bereaksi. Kemudian, saat penskala otomatis menciptakan sumber daya baru, dibutuhkan waktu tambahan bagi sumber daya tersebut untuk sepenuhnya siap beroperasi. Karena itu, penting untuk tidak menetapkan target metrik penskalaan Anda terlalu dekat dengan pemanfaatan penuh (misalnya, 90% penggunaan CPU). Melakukan hal tersebut dapat menghabiskan kapasitas sumber daya yang ada sebelum kapasitas tambahan siap digunakan. Target penggunaan sumber daya tipikal dapat berkisar antara 50-70% untuk ketersediaan optimal, tergantung pada pola permintaan dan waktu yang diperlukan untuk menyediakan sumber daya tambahan. 

 **Penskalaan terjadwal** 

 Penskalaan terjadwal menyediakan atau menghapus sumber daya berdasarkan kalender atau waktu dalam satu hari. Hal ini sering digunakan untuk beban kerja yang memiliki permintaan yang dapat diprediksi, seperti pemanfaatan puncak selama jam kerja pada hari kerja atau aktivitas penjualan. Baik [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-scheduled-scaling.html) dan [Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) mendukung penskalaan terjadwal. [Penskala cron](https://keda.sh/docs/latest/scalers/cron/) KEDA mendukung penskalaan terjadwal pod Kubernetes. 

 **Penskalaan prediktif** 

 Penskalaan prediktif menggunakan machine learning untuk secara otomatis menskalakan sumber daya berdasarkan permintaan yang diantisipasi. Penskalaan prediktif menganalisis nilai historis dari metrik pemanfaatan yang Anda berikan dan terus memprediksi nilai masa depannya. Nilai yang diprediksi kemudian digunakan untuk meningkatkan atau menurunkan skala sumber daya. [Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-predictive-scaling.html) dapat melakukan penskalaan prediktif. 

### Langkah-langkah implementasi
<a name="implementation-steps"></a>

1.  Tentukan apakah komponen beban kerja cocok untuk penskalaan otomatis. 

1.  Tentukan jenis mekanisme penskalaan yang paling sesuai untuk beban kerja: penskalaan berbasis metrik, penskalaan terjadwal, atau penskalaan prediktif. 

1.  Pilih mekanisme penskalaan otomatis yang sesuai untuk komponen. Untuk instans Amazon EC2, gunakan Amazon EC2 Auto Scaling. Untuk layanan AWS lainnya, gunakan Application Auto Scaling. Untuk pod Kubernetes (seperti yang berjalan di klaster Amazon EKS), pertimbangkan Horizontal Pod Autoscaler (HPA) atau Kubernetes Event-driven Autoscaling (KEDA). Untuk simpul Kubernetes atau EKS, pertimbangkan Karpenter dan Cluster Auto Scaler (CAS). 

1.  Untuk penskalaan metrik atau terjadwal, lakukan pengujian beban untuk menentukan metrik penskalaan dan nilai target yang sesuai untuk beban kerja Anda. Untuk penskalaan terjadwal, tentukan jumlah sumber daya yang dibutuhkan pada tanggal dan waktu yang Anda pilih. Tentukan jumlah maksimum sumber daya yang dibutuhkan untuk melayani lalu lintas puncak yang diharapkan. 

1.  Konfigurasikan penskala otomatis berdasarkan informasi yang dikumpulkan di atas. Lihat dokumentasi layanan penskalaan otomatis untuk detailnya. Verifikasi bahwa batas penskalaan maksimum dan minimum dikonfigurasi dengan benar. 

1.  Verifikasi bahwa konfigurasi penskalaan berfungsi sesuai harapan. Lakukan pengujian beban di lingkungan non-produksi dan amati bagaimana sistem bereaksi, dan sesuaikan sesuai kebutuhan. Saat mengaktifkan penskalaan otomatis dalam produksi, konfigurasikan alarm yang sesuai untuk memberi tahu Anda tentang perilaku yang tidak terduga. 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [Apa itu Amazon EC2 Auto Scaling?](https://docs.aws.amazon.com/autoscaling/ec2/userguide/what-is-amazon-ec2-auto-scaling.html) 
+  [Panduan Preskriptif AWS: Memuat aplikasi pengujian](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/) 
+  [AWS Marketplace: produk yang dapat digunakan dengan penskalaan otomatis](https://aws.amazon.com/marketplace/search/results?searchTerms=Auto+Scaling) 
+  [Mengelola Kapasitas Throughput Secara Otomatis dengan Menggunakan Penskalaan Otomatis DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/AutoScaling.html) 
+  [Penskalaan Prediktif untuk EC2, Didukung oleh Machine Learning](https://aws.amazon.com/blogs/aws/new-predictive-scaling-for-ec2-powered-by-machine-learning/) 
+  [Penskalaan terjadwal untuk Amazon EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html) 
+  [Telling Stories About Little's Law](https://brooker.co.za/blog/2018/06/20/littles-law.html) 

# REL07-BP04 Beban uji beban kerja Anda
<a name="rel_adapt_to_changes_load_tested_adapt"></a>

 Adopsi metodologi pengujian beban untuk mengukur apakah aktivitas penskalaan memenuhi persyaratan beban kerja. 

 Pengujian beban yang berkelanjutan penting untuk dilakukan. Tes beban harus menemukan titik puncaknya dan menguji kinerja beban kerja Anda. AWS memudahkan untuk mengatur lingkungan pengujian sementara yang memodelkan skala beban kerja produksi Anda. Di cloud, Anda dapat membuat sebuah lingkungan pengujian berskala produksi sesuai permintaan, menyelesaikan pengujian, dan kemudian menonaktifkan sumber dayanya. Karena Anda hanya membayar lingkungan pengujian saat sedang berjalan, Anda dapat menyimulasikan lingkungan langsung Anda dengan biaya yang lebih murah daripada pengujian on-premise. 

 Pengujian beban di lingkungan produksi juga harus dipertimbangkan sebagai bagian dari game day di mana sistem produksi diberikan tekanan, selama jam-jam penggunaan pelanggan yang lebih rendah, dengan semua personel yang siap untuk menerjemahkan hasilnya dan menangani masalah-masalah yang muncul. 

 **Anti-pola umum:** 
+  Melakukan pengujian beban di lingkungan deployment yang tidak memiliki konfigurasi yang sama dengan lingkungan produksi Anda. 
+  Melakukan pengujian beban hanya pada beban kerja Anda secara terpisah-pisah, bukan pada keseluruhan beban kerja. 
+  Melakukan pengujian beban dengan subset permintaan, bukan set permintaan riil yang representatif. 
+  Melakukan pengujian beban ke satu faktor keselamatan kecil di atas beban yang diharapkan. 

 **Manfaat menerapkan praktik terbaik ini:** Anda mengetahui komponen apa saja di dalam arsitektur Anda yang gagal saat menerima beban, dan mampu mengidentifikasi metrik apa saja yang perlu diamati sebagai indikator bahwa Anda mendekati beban tersebut tepat waktu untuk mengatasi masalah dan mencegah dampak kegagalan tersebut. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Sedang 

## Panduan implementasi
<a name="implementation-guidance"></a>
+  Lakukan pengujian beban untuk mengidentifikasi aspek mana dalam beban kerja Anda yang menunjukkan bahwa Anda harus menambah atau menghapus kapasitas. Pengujian beban harus memiliki lalu lintas representatif yang serupa dengan yang Anda terima di lingkungan produksi. Tingkatkan beban sambil mengamati metrik yang telah Anda instrumentasikan untuk menentukan metrik mana yang menunjukkan kapan Anda harus menambah atau menghapus sumber daya. 
  +  [Pengujian Beban Terdistribusi pada AWS: mensimulasikan ribuan pengguna yang terhubung](https://aws.amazon.com/solutions/distributed-load-testing-on-aws/) 
    +  Identifikasi gabungan permintaan. Anda mungkin memiliki gabungan permintaan yang beragam, sehingga Anda harus melihat berbagai kerangka waktu saat mengidentifikasi gabungan lalu lintas tersebut. 
    +  Implementasikan pendorong beban. Anda dapat menggunakan perangkat lunak kode kustom, sumber terbuka, atau komersial untuk mengimplementasikan pendorong beban. 
    +  Lakukan uji beban di awal dengan menggunakan kapasitas kecil. Anda melihat beberapa efek langsung dengan mendorong beban ke kapasitas yang lebih kecil, kemungkinan seukuran satu instans atau kontainer. 
    +  Uji beban dengan kapasitas yang lebih besar. Efek-efek tersebut akan berbeda di beban yang terdistribusi, sehingga Anda harus melakukan pengujian di lingkungan yang semirip mungkin dengan lingkungan produksi. 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [Pengujian Beban Terdistribusi pada AWS: mensimulasikan ribuan pengguna yang terhubung](https://aws.amazon.com/solutions/distributed-load-testing-on-aws/) 
+  [Aplikasi pengujian beban](https://docs.aws.amazon.com/prescriptive-guidance/latest/load-testing/welcome.html) 

 **Video terkait:** 
+  [AWS Summit ANZ 2023: Mempercepat dengan percaya diri melalui Pengujian Beban AWS Terdistribusi](https://www.youtube.com/watch?v=4J6lVqa6Yh8) 