Desain untuk peluasan skala

Rancang aplikasi Anda sehingga dapat menskalakan secara horizontal

Keuntungan utama dari cloud adalah penskalaan elastis — kemampuan untuk menggunakan kapasitas sebanyak yang Anda butuhkan, scale out saat beban meningkat, dan scale in saat kapasitas ekstra tidak diperlukan. Desain aplikasi Anda sehingga dapat menskalakan secara horizontal, menambahkan atau menghapuskan instans baru sesuai permintaan.

Rekomendasi

Hindari kelekatan instans. Kelekatan, atau afinitas sesi, adalah ketika permintaan dari klien yang sama selalu dialihkan ke server yang sama. Kelekatan membatasi kemampuan aplikasi untuk peluasan skala. Misalnya, lalu lintas dari pengguna volume tinggi tidak akan didistribusikan ke seluruh instans. Penyebab kelekatan termasuk menyimpan keadaan sesi dalam memori, dan menggunakan kunci mesin-khusus untuk enkripsi. Pastikan instans apa pun dapat menangani permintaan apa pun.

Mengidentifikasi penyempitan. Peluasan skala bukanlah perbaikan ajaib untuk setiap masalah performa. Misalnya, jika database backend Anda adalah penyempitan, tidak akan membantu untuk menambahkan lebih banyak server web. Identifikasi dan selesaikan penyempitan dalam sistem terlebih dahulu, sebelum melemparkan lebih banyak contoh ke masalah. Bagian stateful dari sistem adalah penyebab paling mungkin dari penyempitan.

Menguraikan beban kerja menurut persyaratan skalabilitas. Aplikasi sering kali terdiri dari beberapa beban kerja, dengan persyaratan penskalaan yang berbeda. Misalnya, aplikasi mungkin memiliki situs publik dan situs administrasi terpisah. Situs publik mungkin mengalami lonjakan lalu lintas yang tiba-tiba, sedangkan situs administrasi memiliki beban yang lebih kecil dan lebih dapat diprediksi.

Membongkar tugas asinkron secara alami. Tugas seperti mengirim email, tindakan di mana pengguna tidak memerlukan respons langsung, dan integrasi dengan sistem lain semuanya adalah tempat yang baik untuk menggunakan pola olahpesan asinkron.

Membongkar tugas yang membutuhkan banyak sumber daya. Tugas yang membutuhkan banyak sumber daya CPU atau I/O harus dipindahkan ke pekerjaan latar belakang bila memungkinkan, untuk mengecilkan beban antar muka yang menangani permintaan pengguna.

Menggunakan fitur penskalaan otomatis bawaan. Banyak layanan komputasi Azure memiliki dukungan bawaan untuk penskalaan otomatis. Jika aplikasi memiliki beban kerja reguler yang dapat diprediksi, luaskan skalanya sesuai jadwal. Misalnya, turunkan skalanya selama jam kerja. Jika tidak, jika beban kerja tidak dapat diprediksi, gunakan metrik kinerja seperti CPU atau minta panjang antrean untuk memicu penskalaan otomatis. Untuk praktik terbaik penskalaan otomatis, lihat Penskalaan Otomatis.

Pertimbangkan penskalaan otomatis yang agresif untuk beban kerja kritis. Untuk beban kerja kritis, Anda ingin tetap terdepan. Lebih baik tambahkan instans baru dengan cepat di bawah beban berat untuk menangani lalu lintas tambahan, lalu kurangi skala secara bertahap.

Mendesain untuk penurunan skala. Ingatlah bahwa dengan skala elastis, aplikasi akan memiliki periode penskalaan, saat instans dihapus. Aplikasi harus dengan anggun menangani instans yang dihapus. Berikut adalah beberapa cara untuk menangani scalein:

  • Dengarkan peristiwa penonaktifan (jika tersedia) dan matikan dengan bersih.
  • Klien/konsumen layanan harus mendukung penanganan kesalahan sementara dan coba lagi.
  • Untuk tugas yang berjalan lama, pertimbangkan untuk memberhentikan pekerjaan, menggunakan titik pemeriksaan atau pola Pipa dan Filter.
  • Letakkan item pekerjaan dalam antrean sehingga instans lain dapat mengambil pekerjaan, jika sebuah instans dihapus di tengah pemrosesan.

Pertimbangkan penskalaan untuk redundansi. Penskalaan dapat meningkatkan keandalan aplikasi Anda. Misalnya, pertimbangkan untuk memperluas skala di beberapa zona ketersediaan, seperti dengan menggunakan layanan redundansi zona. Pendekatan ini dapat meningkatkan throughput aplikasi Anda serta memberikan ketahanan jika satu zona mengalami pemadaman.