Pola Konsolidasi Sumber Daya Komputasi

Azure App Service
Azure Kubernetes Service (AKS)

Konsolidasikan beberapa tugas atau operasi menjadi satu unit komputasi. Hal ini dapat meningkatkan pemanfaatan sumber daya komputasi, dan mengurangi biaya dan overhead manajemen yang terkait dengan melakukan pemrosesan komputasi dalam aplikasi yang di-hosting cloud.

Konteks dan masalah

Aplikasi cloud sering menerapkan berbagai operasi. Dalam beberapa solusi, masuk akal untuk mengikuti prinsip desain pemisahan kekhawatiran pada awalnya, dan membagi operasi ini menjadi unit komputasi terpisah yang dihosting dan disebarkan secara individual (misalnya, sebagai aplikasi web App Service terpisah atau Komputer Virtual terpisah). Namun, meskipun strategi ini dapat membantu menyederhanakan desain logis dari solusi, menyebarkan sejumlah besar unit komputasi sebagai bagian dari aplikasi yang sama dapat meningkatkan biaya hosting runtime dan membuat manajemen sistem lebih kompleks.

Sebagai contoh, gambar menunjukkan struktur yang disederhanakan dari solusi cloud-host yang diterapkan menggunakan lebih dari satu unit komputasi. Setiap unit komputasi berjalan di lingkungan virtualnya sendiri. Setiap fungsi telah diterapkan sebagai tugas terpisah (diberi label Tugas A melalui Tugas E) yang berjalan di unit komputasinya sendiri.

Menjalankan tugas di lingkungan cloud menggunakan satu set unit komputasi khusus

Setiap unit komputasi menggunakan sumber daya yang dapat dikenakan biaya, meskipun saat tidak digunakan atau jarang digunakan. Oleh karena itu, ini bukan selalu solusi yang paling hemat biaya.

Di Azure, kekhawatiran ini berlaku untuk App Services, Aplikasi Kontainer, dan Komputer Virtual. Item ini berjalan di lingkungan mereka sendiri. Menjalankan kumpulan situs web terpisah, layanan mikro, atau komputer virtual yang dirancang untuk melakukan serangkaian operasi yang terdefinisi dengan baik, tetapi yang perlu berkomunikasi dan bekerja sama sebagai bagian dari satu solusi, dapat menjadi penggunaan sumber daya yang tidak efisien.

Solusi

Untuk membantu mengurangi biaya, meningkatkan pemanfaatan, meningkatkan kecepatan komunikasi, dan mengurangi manajemen, beberapa tugas atau operasi dapat dikonsolidasikan menjadi satu unit komputasi.

Tugas dapat dikelompokkan sesuai dengan kriteria berdasarkan fitur yang disediakan oleh lingkungan dan biaya yang terkait dengan fitur tersebut. Pendekatan umum adalah mencari tugas yang memiliki profil serupa mengenai skalabilitas, masa pakai, dan persyaratan pemrosesannya. Menggabungkan ini memungkinkan mereka untuk diskalakan sebagai satu unit. Elastisitas yang disediakan oleh banyak lingkungan cloud memungkinkan instans tambahan unit komputasi dimulai dan dihentikan sesuai dengan beban kerja. Misalnya, Azure menyediakan penskalaan otomatis yang dapat Anda terapkan ke App Services dan Virtual Machine Scale Sets. Untuk informasi selengkapnya, lihat Panduan Penskalaan Otomatis.

Sebagai contoh penghitung untuk menunjukkan bagaimana skalabilitas dapat digunakan untuk menentukan operasi mana yang tidak boleh digabungkan, pertimbangkan dua tugas berikut:

  • Tugas 1 melakukan polling untuk pesan yang tidak sensitif terhadap waktu dan jarang dikirim ke antrean.
  • Tugas 2 menangani ledakan volume tinggi lalu lintas jaringan.

Tugas kedua memerlukan elastisitas yang dapat melibatkan memulai dan menghentikan sejumlah besar instans unit komputasi. Menerapkan penskalaan yang sama ke tugas pertama hanya akan mengakibatkan lebih banyak tugas mendengarkan pesan yang jarang terjadi pada antrean yang sama, dan membuang-buang sumber daya.

Di banyak lingkungan cloud, sumber daya yang tersedia dapat ditentukan untuk unit komputasi dalam hal jumlah inti CPU, memori, ruang disk, dan sebagainya. Umumnya, semakin banyak sumber daya yang ditentukan, semakin besar biayanya. Untuk menghemat uang, penting untuk memaksimalkan pekerjaan yang dilakukan unit komputasi yang mahal, dan jangan biarkan menjadi tidak aktif untuk waktu yang lama.

Jika ada tugas yang membutuhkan banyak daya CPU dalam ledakan pendek, pertimbangkan untuk mengonsolidasikannya menjadi satu unit komputasi yang menyediakan daya yang diperlukan. Namun, penting untuk menyeimbangkan kebutuhan ini untuk menjaga sumber daya mahal yang sibuk terhadap ketidaksesuaian yang dapat terjadi jika terlalu ditekan. Misalnya, tugas yang berjalan lama dan intensif komputasi seharusnya tidak berbagi unit komputasi yang sama.

Masalah dan pertimbangan

Pertimbangkan poin-poin berikut saat menerapkan pola ini:

Skalabilitas dan elastisitas. Banyak solusi cloud menerapkan skalabilitas dan elastisitas pada tingkat unit komputasi dengan memulai dan menghentikan instans unit. Hindari mengelompokkan tugas yang memiliki persyaratan skalabilitas yang bertentangan di unit komputasi yang sama.

Masa pakai. Infrastruktur cloud secara berkala mendaur ulang lingkungan virtual yang menjadi meng-hosting unit komputasi. Jika ada banyak tugas yang sudah berjalan lama di dalam unit komputasi, mungkin perlu mengonfigurasi unit agar tidak didaur ulang sampai tugas-tugas ini selesai. Atau, rancang tugas dengan menggunakan pendekatan check-point yang memungkinkan mereka berhenti dengan baik, dan lanjutkan pada titik tugas terganggu saat unit komputasi dimulai ulang.

Lepaskan tempo. Jika penerapan atau konfigurasi tugas sering berubah, mungkin perlu untuk menghentikan unit komputasi yang meng-hosting kode yang diperbarui, mengonfigurasi ulang dan memindahkan unit, lalu memulai ulang unitnya. Proses ini juga akan mengharuskan semua tugas lain dalam unit komputasi yang sama dihentikan, dipindahkan, dan dimulai ulang.

Keamanan. Tugas di unit komputasi yang sama dapat berbagi konteks keamanan yang sama dan dapat mengakses sumber daya yang sama. Harus ada tingkat kepercayaan yang tinggi antara tugas-tugas, dan keyakinan bahwa satu tugas tidak akan merusak atau mempengaruhi tugas lain. Selain itu, meningkatkan jumlah tugas yang berjalan di unit komputasi akan meningkatkan permukaan serangan unit. Setiap tugas hanya akan aman seperti tugas yang memiliki kerentanan paling banyak.

Toleransi kegagalan. Jika satu tugas dalam unit komputasi gagal atau berperilaku tidak normal, hal itu dapat mempengaruhi tugas-tugas lain yang berjalan dalam unit yang sama. Misalnya, jika satu tugas gagal dimulai dengan benar, hal itu dapat menyebabkan seluruh logika startup agar unit komputasi gagal, dan mencegah tugas lain di unit yang sama berjalan.

Ketidaksesuaian. Hindari memperkenalkan ketidaksesuaian antara tugas-tugas yang bersaing untuk sumber daya di unit komputasi yang sama. Idealnya, tugas yang berbagi unit komputasi yang sama harus menunjukkan karakteristik pemanfaatan sumber daya yang berbeda. Misalnya, dua tugas intensif komputasi mungkin tidak boleh berada di unit komputasi yang sama, dan tidak boleh dua tugas yang menggunakan memori dalam jumlah besar. Namun, menggabungkan tugas intensif komputasi dengan suatu tugas yang membutuhkan sejumlah besar memori adalah kombinasi yang bisa dilakukan.

Catatan

Pertimbangkan untuk mengonsolidasikan sumber daya komputasi hanya untuk sistem yang telah diproduksi untuk jangka waktu tertentu sehingga operator dan pengembang dapat memantau sistem dan membuat peta panas yang mengidentifikasi bagaimana setiap tugas menggunakan sumber daya yang berbeda. Peta ini dapat digunakan untuk menentukan tugas mana yang merupakan kandidat yang baik untuk berbagi sumber daya komputasi.

Kompleksitas. Menggabungkan beberapa tugas ke dalam satu unit komputasi menambah kompleksitas kode dalam unit, mungkin membuatnya lebih sulit untuk menguji, men-debug, dan memelihara.

Arsitektur logika yang stabil. Merancang dan menerapkan kode dalam setiap tugas sehingga tidak perlu berubah, meskipun lingkungan fisik tugas berjalan di dalamnya tidak berubah.

Strategi lainnya. Mengonsolidasikan sumber daya komputasi hanyalah salah satu cara untuk membantu mengurangi biaya yang terkait dengan menjalankan beberapa tugas secara bersamaan. Ini membutuhkan perencanaan dan pemantauan yang cermat guna memastikan bahwa hal ini tetap menjadi pendekatan yang efektif. Strategi lain mungkin lebih sesuai, tergantung sifat pekerjaan dan tempat pengguna tugas ini berjalan. Misalnya, dekomposisi fungsional beban kerja (seperti yang dijelaskan oleh Panduan Partisi Komputasi) dapat menjadi pilihan yang lebih baik.

Kapan menggunakan pola ini

Gunakan pola ini untuk tugas yang tidak hemat biaya jika tugas tersebut berjalan di unit komputasinya sendiri. Jika tugas menghabiskan sebagian besar waktunya diam, menjalankan tugas ini di unit khusus bisa mahal.

Pola ini mungkin tidak cocok untuk tugas yang melakukan operasi yang toleran terhadap kesalahan kritis, atau tugas yang memproses data yang sangat sensitif atau privat dan memerlukan konteks keamanannya sendiri. Tugas tersebut harus berjalan di lingkungannya sendiri yang terisolasi, dalam unit komputasi terpisah.

Desain beban kerja

Arsitek harus mengevaluasi bagaimana pola Konsolidasi Sumber Daya Komputasi dapat digunakan dalam desain beban kerja mereka untuk mengatasi tujuan dan prinsip yang tercakup dalam pilar Azure Well-Architected Framework. Contohnya:

Pilar Bagaimana pola ini mendukung tujuan pilar
Pengoptimalan Biaya difokuskan untuk mempertahankan dan meningkatkan pengembalian beban kerja Anda pada investasi. Pola ini memaksimalkan pemanfaatan sumber daya komputasi dengan menghindari kapasitas yang disediakan yang tidak digunakan melalui agregasi komponen atau bahkan seluruh beban kerja pada infrastruktur yang dikumpulkan.

- Konsolidasi CO:14
Keunggulan Operasional membantu memberikan kualitas beban kerja melalui proses standar dan kohesi tim. Konsolidasi dapat menyebabkan platform komputasi yang lebih homogen, yang dapat menyederhanakan manajemen dan pengamatan, mengurangi pendekatan yang berbeda untuk tugas operasional, dan mengurangi jumlah alat yang diperlukan.

- Sistem Pemantauan OE:07
- Desain OE:10 Automation
Efisiensi Performa membantu beban kerja Anda memenuhi tuntutan secara efisien melalui pengoptimalan dalam penskalaan, data, kode. Konsolidasi memaksimalkan pemanfaatan sumber daya komputasi dengan menggunakan kapasitas simpul cadangan dan mengurangi kebutuhan akan provisi berlebih. Instans komputasi besar (diskalakan secara vertikal) sering digunakan dalam kumpulan sumber daya untuk infrastruktur ini.

- Perencanaan kapasitas PE:02
- PE:03 Memilih layanan

Seperti halnya keputusan desain apa pun, pertimbangkan tradeoff terhadap tujuan pilar lain yang mungkin diperkenalkan dengan pola ini.

Pilihan platform aplikasi

Pola ini dapat dicapai dengan cara yang berbeda, tergantung pada layanan komputasi yang Anda gunakan. Lihat contoh layanan berikut:

  • Azure App Service dan Azure Functions: Menyebarkan paket App Service bersama, yang mewakili infrastruktur server hosting. Satu atau beberapa aplikasi dapat dikonfigurasi untuk berjalan pada sumber daya komputasi yang sama (atau dalam paket App Service yang sama).
  • Azure Container Apps: Menyebarkan aplikasi kontainer ke lingkungan bersama yang sama; terutama dalam situasi saat Anda perlu mengelola layanan terkait atau Anda perlu menyebarkan aplikasi yang berbeda ke jaringan virtual yang sama.
  • Azure Kubernetes Service (AKS): AKS adalah infrastruktur hosting berbasis kontainer di mana beberapa aplikasi atau komponen aplikasi dapat dikonfigurasi untuk menjalankan lokasi bersama pada sumber daya komputasi (simpul) yang sama, dikelompokkan berdasarkan persyaratan komputasi seperti kebutuhan CPU atau memori (kumpulan simpul).
  • Komputer virtual: Sebarkan satu set komputer virtual untuk digunakan semua penyewa, dengan cara itu biaya manajemen dibagikan di seluruh penyewa. Virtual Machine Scale Sets adalah fitur yang mendukung manajemen sumber daya bersama, penyeimbangan beban, dan penskalaan horizontal Komputer Virtual.

Pola dan panduan berikut mungkin relevan saat menerapkan pola ini:

  • Panduan Penskalaan Otomatis. Penskalaan otomatis dapat digunakan untuk memulai dan menghentikan instans layanan yang meng-hosting sumber daya komputasi, tergantung permintaan yang diantisipasi untuk pemrosesan.

  • Panduan Partisi Komputasi. Menjelaskan cara mengalokasikan layanan dan komponen dalam layanan cloud dengan cara yang membantu meminimalkan biaya operasional sekaligus mempertahankan skalabilitas, performa, ketersediaan, dan keamanan layanan.

  • Pendekatan arsitektur untuk komputasi dalam solusi multipenyewa. Memberikan panduan tentang pertimbangan dan persyaratan yang penting untuk arsitek solusi, ketika mereka merencanakan layanan komputasi solusi multipenyewa.