Prinsip dalam pilar pengoptimalan performa di Google Cloud Framework Arsitektur Baik memberikan rekomendasi untuk membantu Anda menerapkan elastisitas, yaitu kemampuan untuk menyesuaikan resource secara dinamis berdasarkan perubahan persyaratan workload.
Dengan elastisitas, berbagai komponen sistem dapat melakukan penskalaan secara mandiri. Penskalaan yang ditargetkan ini dapat membantu meningkatkan performa dan efisiensi biaya dengan mengalokasikan resource secara tepat sesuai kebutuhan, tanpa penyediaan berlebihan atau penyediaan resource.
Ringkasan prinsip
Persyaratan performa sistem secara langsung memengaruhi kapan dan bagaimana sistem melakukan penskalaan secara vertikal atau horizontal. Anda perlu mengevaluasi kapasitas sistem dan menentukan beban yang diharapkan dapat ditangani sistem pada dasar pengukuran. Kemudian, Anda perlu menentukan cara sistem merespons peningkatan dan penurunan beban.
Saat beban meningkat, sistem harus menyebarkan skala secara horizontal, meningkatkan skala secara vertikal, atau keduanya. Untuk penskalaan horizontal, tambahkan node replika untuk memastikan sistem memiliki kapasitas keseluruhan yang memadai untuk memenuhi peningkatan permintaan. Untuk penskalaan vertikal, ganti komponen yang ada pada aplikasi dengan komponen yang berisi lebih banyak kapasitas, lebih banyak memori, dan lebih banyak penyimpanan.
Saat beban berkurang, sistem harus memperkecil skala (secara horizontal, vertikal, atau keduanya).
Tentukan situasi saat sistem meningkatkan atau menurunkan skala. Rencanakan untuk meningkatkan skala sistem secara manual selama periode traffic tinggi yang diketahui. Gunakan alat seperti penskalaan otomatis, yang merespons peningkatan atau penurunan beban.
Rekomendasi
Untuk memanfaatkan elastisitas, pertimbangkan rekomendasi di bagian berikut.
Rencanakan periode pemuatan puncak
Anda perlu merencanakan jalur penskalaan yang efisien untuk peristiwa yang diketahui, seperti periode yang diharapkan dari peningkatan permintaan pelanggan.
Pertimbangkan untuk meningkatkan skala sistem Anda sebelum periode traffic tinggi yang diketahui. Misalnya, jika Anda adalah organisasi retail, Anda memperkirakan permintaan akan meningkat selama penjualan musiman. Sebaiknya Anda meningkatkan skala atau menskalakan sistem secara manual sebelum penjualan tersebut untuk memastikan sistem dapat segera menangani peningkatan beban atau segera menyesuaikan batas yang ada. Jika tidak, sistem mungkin memerlukan waktu beberapa menit untuk menambahkan resource sebagai respons terhadap perubahan real-time. Kapasitas aplikasi Anda mungkin tidak meningkat cukup cepat dan menyebabkan beberapa pengguna mengalami keterlambatan.
Untuk peristiwa yang tidak diketahui atau tidak terduga, seperti lonjakan permintaan atau traffic yang tiba-tiba, Anda dapat menggunakan fitur penskalaan otomatis untuk memicu penskalaan elastis yang didasarkan pada metrik. Metrik ini dapat mencakup pemakaian CPU, kapasitas layanan load balancer, latensi, dan bahkan metrik kustom yang Anda tentukan di Cloud Monitoring.
Misalnya, pertimbangkan aplikasi yang berjalan pada grup instance terkelola (MIG) Compute Engine. Aplikasi ini memiliki persyaratan bahwa setiap instance berperforma optimal hingga penggunaan CPU rata-rata mencapai 75%. Dalam contoh ini, Anda dapat menentukan kebijakan penskalaan otomatis yang membuat lebih banyak instance saat pemakaian CPU mencapai batas. Instance yang baru dibuat ini membantu menyerap beban, yang membantu memastikan pemakaian CPU rata-rata tetap pada tingkat optimal hingga jumlah instance maksimum yang dikonfigurasi untuk MIG tercapai. Saat permintaan menurun, kebijakan penskalaan otomatis akan menghapus instance yang tidak lagi diperlukan.
Rencanakan reservasi slot resource di BigQuery atau sesuaikan batas konfigurasi penskalaan otomatis di Spanner menggunakan autoscaler terkelola.
Gunakan penskalaan prediktif
Jika komponen sistem menyertakan Compute Engine, Anda harus mengevaluasi apakah penskalaan otomatis prediktif cocok untuk workload Anda. Penskalaan otomatis prediktif memperkirakan beban mendatang berdasarkan tren historis metrik Anda—misalnya, penggunaan CPU. Perkiraan dihitung ulang setiap beberapa menit, sehingga autoscaler dapat dengan cepat menyesuaikan perkiraannya dengan perubahan beban terbaru. Tanpa penskalaan otomatis prediktif, autoscaler hanya dapat menskalakan grup secara reaktif, berdasarkan perubahan beban real-time yang diamati. Penskalaan otomatis prediktif berfungsi dengan data real-time dan data historis untuk merespons beban saat ini dan yang diperkirakan.
Mengimplementasikan arsitektur serverless
Pertimbangkan untuk mengimplementasikan arsitektur serverless dengan layanan serverless yang secara inheren elastis, seperti berikut:
Tidak seperti penskalaan otomatis di layanan lain yang memerlukan aturan penyesuaian (misalnya, Compute Engine), penskalaan otomatis tanpa server bersifat instan dan dapat menurunkan skala hingga nol resource.
Menggunakan mode Autopilot untuk Kubernetes
Untuk aplikasi kompleks yang memerlukan kontrol lebih besar atas Kubernetes, pertimbangkan mode Autopilot di Google Kubernetes Engine (GKE). Mode Autopilot menyediakan otomatisasi dan skalabilitas secara default. GKE otomatis menskalakan node dan resource berdasarkan traffic. GKE mengelola node, membuat node baru untuk aplikasi Anda, serta mengonfigurasi upgrade dan perbaikan otomatis.