Pertimbangan platform aplikasi untuk beban kerja misi penting di Azure
Azure menyediakan banyak layanan komputasi untuk menghosting aplikasi yang sangat tersedia. Layanan ini berbeda dalam kemampuan dan kompleksitas. Kami menyarankan agar Anda memilih layanan berdasarkan:
- Persyaratan non-fungsional untuk keandalan, ketersediaan, performa, dan keamanan.
- Faktor keputusan seperti skalabilitas, biaya, pengoperasian, dan kompleksitas.
Pilihan platform hosting aplikasi adalah keputusan penting yang memengaruhi semua area desain lainnya. Misalnya, perangkat lunak pengembangan warisan atau kepemilikan mungkin tidak berjalan di layanan PaaS atau aplikasi kontainer. Batasan ini akan memengaruhi pilihan platform komputasi Anda.
Aplikasi penting misi dapat menggunakan lebih dari satu layanan komputasi untuk mendukung beberapa beban kerja komposit dan layanan mikro, masing-masing dengan persyaratan yang berbeda.
Area desain ini memberikan rekomendasi terkait pilihan komputasi, desain, dan opsi konfigurasi. Kami juga menyarankan agar Anda membiaskan diri dengan pohon keputusan Komputasi.
Penting
Artikel ini adalah bagian dari seri beban kerja misi penting Azure Well-Architected Framework. Jika Anda tidak terbiasa dengan seri ini, kami sarankan Anda memulai dengan Apa itu beban kerja misi penting?.
Distribusi global sumber daya platform
Pola umum untuk beban kerja misi penting mencakup sumber daya global dan sumber daya regional.
Layanan Azure, yang tidak dibatasi ke wilayah Azure tertentu, disebarkan atau dikonfigurasi sebagai sumber daya global. Beberapa kasus penggunaan termasuk mendistribusikan lalu lintas di beberapa wilayah, menyimpan status permanen untuk seluruh aplikasi, dan penembolokan data statis global. Jika Anda perlu mengakomodasi arsitektur unit skala dan distribusi global, pertimbangkan bagaimana sumber daya didistribusikan atau direplikasi secara optimal di seluruh wilayah Azure.
Sumber daya lain disebarkan secara regional. Sumber daya ini, yang disebarkan sebagai bagian dari stempel penyebaran, biasanya sesuai dengan unit skala. Namun, suatu wilayah dapat memiliki lebih dari satu stempel, dan stempel dapat memiliki lebih dari satu unit. Keandalan sumber daya regional sangat penting karena mereka bertanggung jawab untuk menjalankan beban kerja utama.
Gambar berikut menunjukkan desain tingkat tinggi. Pengguna mengakses aplikasi melalui titik masuk global pusat yang kemudian mengalihkan permintaan ke stempel penyebaran regional yang sesuai:
Metodologi desain misi-kritis membutuhkan penyebaran multi-wilayah. Model ini memastikan toleransi kesalahan regional, sehingga aplikasi tetap tersedia bahkan ketika seluruh wilayah turun. Saat Anda merancang aplikasi multi-wilayah, pertimbangkan strategi penyebaran yang berbeda, seperti aktif/aktif dan aktif/pasif, bersama dengan persyaratan aplikasi, karena ada trade-off yang signifikan untuk setiap pendekatan. Untuk beban kerja misi penting, kami sangat merekomendasikan model aktif/aktif.
Tidak setiap beban kerja mendukung atau mengharuskan menjalankan beberapa wilayah secara bersamaan. Anda harus menimbang persyaratan aplikasi tertentu terhadap trade-off untuk menentukan keputusan desain yang optimal. Untuk skenario aplikasi tertentu yang memiliki target keandalan yang lebih rendah, aktif/pasif atau sharding dapat menjadi alternatif yang sesuai.
Zona ketersediaan dapat menyediakan penyebaran regional yang sangat tersedia di berbagai pusat data dalam suatu wilayah. Hampir semua layanan Azure tersedia dalam konfigurasi zonal, di mana layanan didelegasikan ke zona tertentu, atau konfigurasi zona-redundan, di mana platform secara otomatis memastikan bahwa layanan mencakup seluruh zona dan dapat menahan pemadaman zona. Konfigurasi ini memberikan toleransi kesalahan hingga tingkat pusat data.
Pertimbangan Desain
Kemampuan regional dan zonal. Tidak semua layanan dan kemampuan tersedia di setiap wilayah Azure. Pertimbangan ini dapat memengaruhi wilayah yang Anda pilih. Selain itu, zona ketersediaan tidak tersedia di setiap wilayah.
Pasangan regional. Wilayah Azure dikelompokkan ke dalam pasangan regional yang terdiri dari dua wilayah dalam satu geografi. Beberapa layanan Azure menggunakan wilayah berpasangan untuk memastikan kelangsungan bisnis dan untuk memberikan tingkat perlindungan terhadap kehilangan data. Misalnya, penyimpanan geo-redundan Azure (GRS) mereplikasi data ke wilayah berpasangan sekunder secara otomatis, memastikan bahwa data tahan lama jika wilayah utama tidak dapat dipulihkan. Jika pemadaman memengaruhi beberapa wilayah Azure, setidaknya satu wilayah di setiap pasangan diprioritaskan untuk pemulihan.
Konsistensi data. Untuk tantangan konsistensi, pertimbangkan untuk menggunakan penyimpanan data yang didistribusikan secara global, arsitektur regional bertanda, dan penyebaran aktif/aktif sebagian. Dalam penyebaran parsial, beberapa komponen aktif di semua wilayah sementara yang lain terletak di pusat wilayah utama.
Penyebaran yang aman. Kerangka kerja praktik penyebaran aman Azure (SDP) memastikan bahwa semua perubahan kode dan konfigurasi (pemeliharaan terencana) ke platform Azure mengalami peluncuran bertahap. Kesehatan dianalisis untuk degradasi selama rilis. Setelah fase kenari dan pilot berhasil diselesaikan, pembaruan platform diserialisasikan di seluruh pasangan regional, sehingga hanya satu wilayah di setiap pasangan yang diperbarui pada waktu tertentu.
Kapasitas platform. Seperti penyedia cloud lainnya, Azure memiliki sumber daya terbatas. Tidak tersedia dapat menjadi hasil dari keterbatasan kapasitas di wilayah. Jika ada pemadaman regional, ada peningkatan permintaan sumber daya saat beban kerja mencoba memulihkan dalam wilayah yang dipasangkan. Pemadaman mungkin membuat masalah kapasitas, di mana pasokan sementara tidak memenuhi permintaan.
Rekomendasi desain
Sebarkan solusi Anda di setidaknya dua wilayah Azure untuk membantu melindungi dari pemadaman regional. Sebarkan di wilayah yang memiliki kemampuan dan karakteristik yang diperlukan beban kerja. Kemampuan harus memenuhi target performa dan ketersediaan sambil memenuhi persyaratan residensi dan retensi data.
Misalnya, beberapa persyaratan kepatuhan data mungkin membatasi jumlah wilayah yang tersedia dan berpotensi memaksa kompromi desain. Dalam kasus seperti itu, kami sangat menyarankan Anda menambahkan investasi tambahan dalam pembungkus operasional untuk memprediksi, mendeteksi, dan merespons kegagalan. Misalkan Anda dibatasi untuk geografi dengan dua wilayah, dan hanya salah satu wilayah tersebut yang mendukung zona ketersediaan (model pusat data 3 + 1). Buat pola penyebaran sekunder menggunakan isolasi domain kesalahan untuk memungkinkan kedua wilayah disebarkan dalam konfigurasi aktif, dan pastikan bahwa wilayah utama menampung beberapa stempel penyebaran.
Jika wilayah Azure yang sesuai tidak semua menawarkan kemampuan yang Anda butuhkan, bersiaplah untuk membahayakan konsistensi stempel penyebaran regional untuk memprioritaskan distribusi geografis dan memaksimalkan keandalan. Jika hanya satu wilayah Azure yang cocok, sebarkan beberapa stempel penyebaran (unit skala regional) di wilayah yang dipilih untuk mengurangi beberapa risiko, dan menggunakan zona ketersediaan untuk memberikan toleransi kesalahan tingkat pusat data. Namun, kompromi yang signifikan dalam distribusi geografis secara dramatis membatasi SLO komposit yang dapat dicapai dan keandalan keseluruhan.
Penting
Untuk skenario yang menargetkan SLO yang lebih besar dari atau sama dengan 99,99%, kami merekomendasikan minimal tiga wilayah penyebaran. Hitung SLO komposit untuk semua alur pengguna. Pastikan target tersebut selaras dengan target bisnis.
Untuk skenario aplikasi berskala tinggi yang memiliki volume lalu lintas yang signifikan, rancang solusi untuk menskalakan di beberapa wilayah untuk menavigasi potensi batasan kapasitas dalam satu wilayah. Stempel penyebaran regional tambahan dapat mencapai SLO komposit yang lebih tinggi. Untuk informasi selengkapnya, lihat cara menerapkan target multiregion.
Tentukan dan validasi tujuan titik pemulihan (RPO) dan tujuan waktu pemulihan (RTO).
Dalam satu geografi, prioritaskan penggunaan pasangan regional untuk mendapatkan manfaat dari peluncuran berseri SDP untuk pemeliharaan terencana dan prioritas regional untuk pemeliharaan yang tidak direncanakan.
Kolokasikan sumber daya Azure secara geografis dengan pengguna untuk meminimalkan latensi jaringan dan memaksimalkan performa end-to-end.
- Anda juga dapat menggunakan solusi seperti Content Delivery Network (CDN) atau penembolokan tepi untuk mendorong latensi jaringan yang optimal untuk basis pengguna terdistribusi. Untuk informasi selengkapnya, lihat Perutean lalu lintas global, Layanan pengiriman aplikasi, dan Penembolokan dan pengiriman konten statis.
Menyelaraskan ketersediaan layanan saat ini dengan peta jalan produk saat Anda memilih wilayah penyebaran. Beberapa layanan mungkin tidak segera tersedia di setiap wilayah.
Kontainerisasi
Kontainer mencakup kode aplikasi dan file konfigurasi, pustaka, dan dependensi terkait yang perlu dijalankan aplikasi. Kontainerisasi menyediakan lapisan abstraksi untuk kode aplikasi dan dependensinya dan membuat pemisahan dari platform hosting yang mendasar. Paket perangkat lunak tunggal sangat portabel dan dapat berjalan secara konsisten di berbagai platform infrastruktur dan penyedia cloud. Pengembang tidak perlu menulis ulang kode dan dapat menyebarkan aplikasi dengan lebih cepat dan lebih andal.
Penting
Kami menyarankan agar Anda menggunakan kontainer untuk paket aplikasi misi penting. Mereka meningkatkan pemanfaatan infrastruktur karena Anda dapat menghosting beberapa kontainer pada infrastruktur virtual yang sama. Selain itu, karena semua perangkat lunak disertakan dalam kontainer, Anda dapat memindahkan aplikasi di berbagai sistem operasi, terlepas dari runtime atau versi pustaka. Manajemen juga lebih mudah dengan kontainer daripada dengan hosting virtual tradisional.
Aplikasi misi penting perlu menskalakan dengan cepat untuk menghindari hambatan performa. Karena gambar kontainer dibuat sebelumnya, Anda dapat membatasi startup untuk terjadi hanya selama bootstrapping aplikasi, yang memberikan skalabilitas yang cepat.
Pertimbangan Desain
Pemantauan. Mungkin sulit untuk memantau layanan untuk mengakses aplikasi yang ada dalam kontainer. Anda biasanya memerlukan perangkat lunak pihak ketiga untuk mengumpulkan dan menyimpan indikator status kontainer seperti penggunaan CPU atau RAM.
Keamanan. Kernel OS platform hosting dibagikan di beberapa kontainer, menciptakan satu titik serangan. Namun, risiko akses komputer virtual host (VM) terbatas karena kontainer diisolasi dari sistem operasi yang mendasar.
Negara bagian. Meskipun dimungkinkan untuk menyimpan data dalam sistem file kontainer yang sedang berjalan, data tidak akan bertahan saat kontainer dibuat ulang. Sebagai gantinya, pertahankan data dengan memasang penyimpanan eksternal atau menggunakan database eksternal.
Rekomendasi desain
Kontainerisasi semua komponen aplikasi. Gunakan gambar kontainer sebagai model utama untuk paket penyebaran aplikasi.
Prioritaskan runtime kontainer berbasis Linux jika memungkinkan. Gambarnya lebih ringan, dan fitur baru untuk node/kontainer Linux sering dirilis.
Membuat kontainer tidak dapat diubah dan diganti, dengan siklus hidup pendek.
Pastikan untuk mengumpulkan semua log dan metrik yang relevan dari kontainer, host kontainer, dan kluster yang mendasar. Kirim log dan metrik yang dikumpulkan ke sink data terpadu untuk pemrosesan dan analisis lebih lanjut.
Simpan gambar kontainer di Azure Container Registry. Gunakan replikasi geografis untuk mereplikasi gambar kontainer di semua wilayah. Aktifkan Microsoft Defender untuk registri kontainer untuk menyediakan pemindaian kerentanan untuk gambar kontainer. Pastikan akses ke registri dikelola oleh MICROSOFT Entra ID.
Hosting dan orkestrasi kontainer
Beberapa platform aplikasi Azure dapat menghosting kontainer secara efektif. Ada kelebihan dan kekurangan yang terkait dengan masing-masing platform ini. Bandingkan opsi dalam konteks persyaratan bisnis Anda. Namun, selalu optimalkan keandalan, skalabilitas, dan performa. Untuk informasi selengkapnya, lihat artikel berikut ini:
Penting
Azure Kubernetes Service (AKS) dan Azure Container Apps harus menjadi salah satu pilihan pertama Anda untuk manajemen kontainer tergantung pada kebutuhan Anda. Meskipun Azure App Service bukan orkestrator, sebagai platform kontainer gesekan rendah, azure App Service masih merupakan alternatif yang layak untuk AKS.
Pertimbangan dan rekomendasi desain untuk Azure Kubernetes Service
AKS, layanan Kubernetes terkelola, memungkinkan provisi kluster cepat tanpa memerlukan aktivitas administrasi kluster yang kompleks dan menawarkan set fitur yang mencakup kemampuan jaringan dan identitas tingkat lanjut. Untuk serangkaian rekomendasi lengkap, lihat Ulasan Azure Well-Architected Framework - AKS.
Penting
Ada beberapa keputusan konfigurasi dasar yang tidak dapat Anda ubah tanpa menyebarkan kembali kluster AKS. Contohnya termasuk pilihan antara kluster AKS publik dan privat, mengaktifkan Azure Network Policy, integrasi Microsoft Entra, dan penggunaan identitas terkelola untuk AKS alih-alih perwakilan layanan.
Keandalan
AKS mengelola sarana kontrol Kubernetes asli. Jika sarana kontrol tidak tersedia, beban kerja mengalami waktu henti. Manfaatkan fitur keandalan yang ditawarkan oleh AKS:
Sebarkan kluster AKS di berbagai wilayah Azure sebagai unit skala untuk memaksimalkan keandalan dan ketersediaan. Gunakan zona ketersediaan untuk memaksimalkan ketahanan dalam wilayah Azure dengan mendistribusikan sarana kontrol AKS dan simpul agen di seluruh pusat data yang terpisah secara fisik. Namun, jika latensi kolokasi bermasalah, Anda dapat melakukan penyebaran AKS dalam satu zona atau menggunakan grup penempatan kedekatan untuk meminimalkan latensi internode.
Gunakan AKS Uptime SLA untuk kluster produksi untuk memaksimalkan jaminan ketersediaan titik akhir API Kubernetes.
Skalabilitas
Mempertimbangkan batas skala AKS, seperti jumlah simpul, kumpulan simpul per kluster, dan kluster per langganan.
Jika batas skala adalah batasan, manfaatkan strategi unit skala, dan sebarkan lebih banyak unit dengan kluster.
Aktifkan penskala otomatis kluster untuk secara otomatis menyesuaikan jumlah node agen sebagai respons terhadap batasan sumber daya.
Gunakan autoscaler pod horizontal untuk menyesuaikan jumlah pod dalam penyebaran berdasarkan pemanfaatan CPU atau metrik lainnya.
Untuk skenario skala tinggi dan ledakan, pertimbangkan untuk menggunakan simpul virtual untuk skala yang luas dan cepat.
Tentukan permintaan dan batasan sumber daya pod dalam manifes penyebaran aplikasi. Jika tidak, Anda mungkin mengalami masalah performa.
Isolasi
Pertahankan batas antara infrastruktur yang digunakan oleh beban kerja dan alat sistem. Berbagi infrastruktur dapat menyebabkan pemanfaatan sumber daya tinggi dan skenario tetangga yang bising.
Gunakan kumpulan simpul terpisah untuk layanan sistem dan beban kerja. Kumpulan simpul khusus untuk komponen beban kerja harus didasarkan pada persyaratan untuk sumber daya infrastruktur khusus seperti VM GPU memori tinggi. Secara umum, untuk mengurangi overhead manajemen yang tidak perlu, hindari menyebarkan kumpulan simpul dalam jumlah besar.
Gunakan taint dan toleransi untuk menyediakan simpul khusus dan membatasi aplikasi intensif sumber daya.
Evaluasi afinitas aplikasi dan persyaratan anti-afinitas dan konfigurasikan kolokasi kontainer yang sesuai pada simpul.
Keamanan
Vanilla Kubernetes default memerlukan konfigurasi yang signifikan untuk memastikan postur keamanan yang sesuai untuk skenario misi-kritis. AKS mengatasi berbagai risiko keamanan di luar kotak. Fitur termasuk kluster privat, audit, dan pengelogan ke Log Analytics, gambar node yang diperkeras, dan identitas terkelola.
Terapkan panduan konfigurasi yang disediakan dalam garis besar keamanan AKS.
Gunakan fitur AKS untuk menangani identitas kluster dan manajemen akses untuk mengurangi overhead operasional dan menerapkan manajemen akses yang konsisten.
Gunakan identitas terkelola alih-alih perwakilan layanan untuk menghindari manajemen dan rotasi kredensial. Anda dapat menambahkan identitas terkelola di tingkat kluster. Di tingkat pod, Anda dapat menggunakan identitas terkelola melalui ID Beban Kerja Microsoft Entra.
Gunakan integrasi Microsoft Entra untuk manajemen akun dan kata sandi terpusat, manajemen akses aplikasi, dan perlindungan identitas yang ditingkatkan. Gunakan RBAC Kubernetes dengan MICROSOFT Entra ID untuk hak istimewa paling sedikit, dan minimalkan pemberian hak istimewa administrator untuk membantu melindungi akses konfigurasi dan rahasia. Selain itu, batasi akses ke file konfigurasi kluster Kubernetes dengan menggunakan kontrol akses berbasis peran Azure. Batasi akses ke tindakan yang dapat dilakukan kontainer, berikan jumlah izin paling sedikit, dan hindari penggunaan eskalasi hak istimewa akar.
Peningkatan
Kluster dan simpul perlu ditingkatkan secara teratur. AKS mendukung versi Kubernetes yang selaras dengan siklus rilis Kubernetes asli.
Berlangganan Roadmap AKS publik dan Catatan Rilis di GitHub untuk tetap mendapatkan informasi terbaru tentang perubahan, peningkatan, dan, yang paling penting, rilis dan penghentian versi Kubernetes.
Terapkan panduan yang diberikan dalam daftar periksa AKS untuk memastikan keselarasan dengan praktik terbaik.
Waspadai berbagai metode yang didukung oleh AKS untuk memperbarui simpul dan/atau kluster. Metode ini dapat dilakukan secara manual atau otomatis. Anda dapat menggunakan Pemeliharaan Terencana untuk menentukan jendela pemeliharaan untuk operasi ini. Gambar baru dirilis mingguan. AKS juga mendukung saluran peningkatan otomatis untuk meningkatkan kluster AKS secara otomatis ke versi Kubernetes dan/atau gambar node yang lebih baru saat tersedia.
Jaringan
Evaluasi plugin jaringan yang paling sesuai dengan kasus penggunaan Anda. Tentukan apakah Anda memerlukan kontrol lalu lintas terperinci antar pod. Azure mendukung kubenet, Azure CNI, dan membawa CNI Anda sendiri untuk kasus penggunaan tertentu.
Prioritaskan penggunaan Azure CNI setelah menilai persyaratan jaringan dan ukuran kluster. Azure CNI memungkinkan penggunaan kebijakan jaringan Azure atau Calico untuk mengontrol lalu lintas dalam kluster.
Pemantauan
Alat pemantauan Anda harus dapat mengambil log dan metrik dari pod yang sedang berjalan. Anda juga harus mengumpulkan informasi dari API Metrik Kubernetes untuk memantau kesehatan sumber daya dan beban kerja yang sedang berjalan.
Gunakan Azure Monitor dan Application Insights untuk mengumpulkan metrik, log, dan diagnostik dari sumber daya AKS untuk pemecahan masalah.
Aktifkan dan tinjau log sumber daya Kubernetes.
Mengonfigurasi metrik Prometheus di Azure Monitor. Wawasan kontainer di Monitor menyediakan onboarding, memungkinkan kemampuan pemantauan di luar kotak, dan memungkinkan kemampuan yang lebih canggih melalui dukungan Prometheus bawaan.
Pemerintahan
Gunakan kebijakan untuk menerapkan perlindungan terpusat ke kluster AKS dengan cara yang konsisten. Terapkan penetapan kebijakan pada cakupan langganan atau yang lebih tinggi untuk mendorong konsistensi di seluruh tim pengembangan.
Kontrol fungsi mana yang diberikan ke pod, dan apakah berjalan bertentangan dengan kebijakan, dengan menggunakan Azure Policy. Akses ini ditentukan melalui kebijakan bawaan yang disediakan oleh Add-on Azure Policy untuk AKS.
Tetapkan garis besar keandalan dan keamanan yang konsisten untuk konfigurasi kluster AKS dan pod dengan menggunakan Azure Policy.
Gunakan Add-on Azure Policy untuk AKS untuk mengontrol fungsi pod, seperti hak istimewa root, dan untuk melarang pod yang tidak sesuai dengan kebijakan.
Catatan
Saat Anda menyebarkan ke zona pendaratan Azure, kebijakan Azure untuk membantu Anda memastikan keandalan dan keamanan yang konsisten harus disediakan oleh implementasi zona pendaratan.
Implementasi referensi misi-kritis menyediakan serangkaian kebijakan dasar untuk mendorong konfigurasi keandalan dan keamanan yang direkomendasikan.
Pertimbangan dan rekomendasi desain untuk Azure App Service
Untuk skenario beban kerja berbasis web dan API, App Service mungkin merupakan alternatif yang layak untuk AKS. Ini menyediakan platform kontainer gesekan rendah tanpa kompleksitas Kubernetes. Untuk serangkaian rekomendasi lengkap, lihat Pertimbangan keandalan untuk App Service dan Keunggulan operasional untuk App Service.
Keandalan
Evaluasi penggunaan port TCP dan SNAT. Koneksi TCP digunakan untuk semua koneksi keluar. Port SNAT digunakan untuk koneksi keluar ke alamat IP publik. Kelelahan port SNAT adalah skenario kegagalan umum. Anda harus mendeteksi masalah ini secara prediktif dengan pengujian beban saat menggunakan Diagnostik Azure untuk memantau port. Jika terjadi kesalahan SNAT, Anda perlu menskalakan di lebih banyak atau lebih banyak pekerja atau menerapkan praktik pengkodan untuk membantu mempertahankan dan menggunakan kembali port SNAT. Contoh praktik pengkodan yang dapat Anda gunakan termasuk pengumpulan koneksi dan pemuatan sumber daya yang malas.
Kelelahan port TCP adalah skenario kegagalan lain. Ini terjadi ketika jumlah koneksi keluar dari pekerja tertentu melebihi kapasitas. Jumlah port TCP yang tersedia tergantung pada ukuran pekerja. Untuk rekomendasi, lihat port TCP dan SNAT.
Skalabilitas
Rencanakan persyaratan skalabilitas dan pertumbuhan aplikasi di masa mendatang sehingga Anda dapat menerapkan rekomendasi yang sesuai sejak awal. Dengan demikian, Anda dapat menghindari utang migrasi teknis seiring berkembangnya solusi.
Aktifkan skala otomatis untuk memastikan bahwa sumber daya yang memadai tersedia untuk permintaan layanan. Evaluasi penskalaan per aplikasi untuk hosting dengan kepadatan tinggi di App Service.
Ketahuilah bahwa App Service memiliki batas instans lunak default per paket App Service.
Terapkan aturan skala otomatis. Paket App Service diskalakan jika ada aturan dalam profil yang terpenuhi tetapi hanya menskalakan jika semua aturan dalam profil terpenuhi. Gunakan kombinasi aturan peluasan skala dan penyempurnaan skala untuk memastikan bahwa skala otomatis dapat mengambil tindakan untuk peluasan skala dan penyempurnaan skala. Pahami perilaku beberapa aturan penskalaan dalam satu profil.
Ketahuilah bahwa Anda dapat mengaktifkan penskalaan per aplikasi pada tingkat paket App Service untuk memungkinkan aplikasi menskalakan secara independen dari paket App Service yang menghostingnya. Aplikasi dialokasikan untuk simpul yang tersedia melalui pendekatan upaya terbaik untuk distribusi yang merata. Meskipun distribusi yang merata tidak dijamin, platform memastikan bahwa dua instans aplikasi yang sama tidak dihosting pada instans yang sama.
Pemantauan
Pantau perilaku aplikasi dan dapatkan akses ke log dan metrik yang relevan untuk memastikan bahwa aplikasi Anda berfungsi seperti yang diharapkan.
Anda dapat menggunakan pembuatan log diagnostik untuk menyerap log tingkat aplikasi dan tingkat platform ke Log Analytics, Azure Storage, atau alat pihak ketiga melalui Azure Event Hubs.
Pemantauan performa aplikasi dengan Application Insights memberikan wawasan mendalam tentang performa aplikasi.
Aplikasi misi-kritis harus memiliki kemampuan untuk sembuh sendiri jika ada kegagalan. Aktifkan Pemulihan Otomatis untuk mendaur ulang pekerja yang tidak sehat secara otomatis.
Anda perlu menggunakan pemeriksaan kesehatan yang sesuai untuk menilai semua dependensi hilir kritis, yang membantu memastikan kesehatan secara keseluruhan. Kami sangat menyarankan Anda mengaktifkan Pemeriksaan Kesehatan untuk mengidentifikasi pekerja yang tidak responsif.
Penyebaran
Untuk mengatasi batas default instans per paket App Service, sebarkan paket App Service di beberapa unit skala dalam satu wilayah. Sebarkan paket App Service dalam konfigurasi zona ketersediaan untuk memastikan bahwa simpul pekerja didistribusikan di seluruh zona dalam suatu wilayah. Pertimbangkan untuk membuka tiket dukungan untuk meningkatkan jumlah maksimum pekerja menjadi dua kali jumlah instans yang Anda butuhkan untuk melayani beban puncak normal.
Registri kontainer
Registri kontainer menghosting gambar yang disebarkan ke lingkungan runtime kontainer seperti AKS. Anda perlu mengonfigurasi registri kontainer Anda untuk beban kerja misi penting dengan hati-hati. Pemadaman seharusnya tidak menyebabkan keterlambatan dalam menarik gambar, terutama selama operasi penskalaan. Pertimbangan dan rekomendasi berikut berfokus pada Azure Container Registry dan jelajahi trade-off yang terkait dengan model penyebaran terpusat dan federasi.
Pertimbangan Desain
Format. Pertimbangkan untuk menggunakan registri kontainer yang bergantung pada format dan standar yang disediakan Docker untuk operasi pendorongan dan penarikan. Solusi ini kompatibel dan sebagian besar dapat dipertukarkan.
Model penyebaran. Anda dapat menyebarkan registri kontainer sebagai layanan terpusat yang digunakan oleh beberapa aplikasi dalam organisasi Anda. Atau Anda dapat menyebarkannya sebagai komponen khusus untuk beban kerja aplikasi tertentu.
Registri publik. Gambar kontainer disimpan di Docker Hub atau registri publik lainnya yang ada di luar Azure dan jaringan virtual tertentu. Ini belum tentu menjadi masalah, tetapi dapat menyebabkan berbagai masalah yang terkait dengan ketersediaan layanan, pembatasan, dan penyelundupan data. Untuk beberapa skenario aplikasi, Anda perlu mereplikasi gambar kontainer publik dalam registri kontainer privat untuk membatasi lalu lintas keluar, meningkatkan ketersediaan, atau menghindari potensi pembatasan.
Rekomendasi desain
Gunakan instans registri kontainer yang didedikasikan untuk beban kerja aplikasi. Hindari membuat dependensi pada layanan terpusat kecuali persyaratan ketersediaan dan keandalan organisasi sepenuhnya selaras dengan aplikasi.
Dalam pola arsitektur inti yang direkomendasikan, registri kontainer adalah sumber daya global yang hidup lama. Pertimbangkan untuk menggunakan satu registri kontainer global per lingkungan. Misalnya, gunakan registri produksi global.
Pastikan bahwa SLA untuk registri publik selaras dengan target keandalan dan keamanan Anda. Perhatikan batas pembatasan khusus untuk kasus penggunaan yang bergantung pada Docker Hub.
Prioritaskan Azure Container Registry untuk menghosting gambar kontainer.
Pertimbangan dan rekomendasi desain untuk Azure Container Registry
Layanan asli ini menyediakan berbagai fitur, termasuk replikasi geografis, autentikasi Microsoft Entra, bangunan kontainer otomatis, dan patching melalui tugas Container Registry.
Keandalan
Konfigurasikan replikasi geografis ke semua wilayah penyebaran untuk menghapus dependensi regional dan mengoptimalkan latensi. Container Registry mendukung ketersediaan tinggi melalui replikasi geografis ke beberapa wilayah yang dikonfigurasi, memberikan ketahanan terhadap pemadaman regional. Jika suatu wilayah menjadi tidak tersedia, wilayah lain terus melayani permintaan gambar. Ketika wilayah kembali online, Container Registry memulihkan dan mereplikasi perubahan pada wilayah tersebut. Kemampuan ini juga menyediakan kolokasi registri dalam setiap wilayah yang dikonfigurasi, mengurangi latensi jaringan dan biaya transfer data lintas wilayah.
Di wilayah Azure yang menyediakan dukungan zona ketersediaan, tingkat Premium Container Registry mendukung redundansi zona untuk memberikan perlindungan terhadap kegagalan zona. Tingkat Premium juga mendukung titik akhir privat untuk membantu mencegah akses tidak sah ke registri , yang dapat menyebabkan masalah keandalan.
Host gambar yang dekat dengan sumber daya komputasi yang mengkonsumsi, dalam wilayah Azure yang sama.
Penguncian gambar
Gambar bisa dihapus, sebagai akibatnya, misalnya, kesalahan manual. Container Registry mendukung penguncian versi gambar atau repositori untuk mencegah perubahan atau penghapusan. Ketika versi gambar yang disebarkan sebelumnya diubah, penyebaran versi yang sama mungkin memberikan hasil yang berbeda sebelum dan sesudah perubahan.
Jika Anda ingin melindungi instans Container Registry dari penghapusan, gunakan kunci sumber daya.
Gambar bertag
Gambar Container Registry yang ditandai dapat diubah secara default, yang berarti bahwa tag yang sama dapat digunakan pada beberapa gambar yang didorong ke registri. Dalam skenario produksi, ini dapat menyebabkan perilaku yang tidak dapat diprediksi yang dapat memengaruhi waktu aktif aplikasi.
Pengelolaan identitas dan akses
Gunakan autentikasi terintegrasi Microsoft Entra untuk mendorong dan menarik gambar alih-alih mengandalkan kunci akses. Untuk keamanan yang ditingkatkan, nonaktifkan sepenuhnya penggunaan kunci akses admin.
Komputasi tanpa server
Komputasi tanpa server menyediakan sumber daya sesuai permintaan dan menghilangkan kebutuhan untuk mengelola infrastruktur. Penyedia cloud secara otomatis menyediakan, menskalakan, dan mengelola sumber daya yang diperlukan untuk menjalankan kode aplikasi yang disebarkan. Azure menyediakan beberapa platform komputasi tanpa server:
Fungsi-fungsi Azure. Saat Anda menggunakan Azure Functions, logika aplikasi diimplementasikan sebagai blok kode atau fungsi yang berbeda, yang berjalan sebagai respons terhadap peristiwa, seperti permintaan HTTP atau pesan antrean. Setiap fungsi diskalakan seperlunya untuk memenuhi permintaan.
Azure Logic Apps. Logic Apps paling cocok untuk membuat dan menjalankan alur kerja otomatis yang mengintegrasikan berbagai aplikasi, sumber data, layanan, dan sistem. Seperti Azure Functions, Logic Apps menggunakan pemicu bawaan untuk pemrosesan berbasis peristiwa. Namun, alih-alih menyebarkan kode aplikasi, Anda dapat membuat aplikasi logika dengan menggunakan antarmuka pengguna grafis yang mendukung blok kode seperti kondisi dan perulangan.
Azure API Management. Anda dapat menggunakan API Management untuk menerbitkan, mengubah, memelihara, dan memantau API keamanan yang ditingkatkan dengan menggunakan tingkat Konsumsi.
Power Apps dan Power Automate. Alat-alat ini memberikan pengalaman pengembangan kode rendah atau tanpa kode, dengan logika alur kerja sederhana dan integrasi yang dapat dikonfigurasi melalui koneksi di antarmuka pengguna.
Untuk aplikasi misi penting, teknologi tanpa server menyediakan pengembangan dan operasi yang disederhanakan, yang dapat berharga untuk kasus penggunaan bisnis sederhana. Namun, kesederhanaan ini datang dengan biaya fleksibilitas dalam hal skalabilitas, keandalan, dan performa, dan itu tidak layak untuk sebagian besar skenario aplikasi misi penting.
Bagian berikut memberikan pertimbangan desain dan rekomendasi untuk menggunakan Azure Functions dan Logic Apps sebagai platform alternatif untuk skenario alur kerja non-kritis.
Pertimbangan dan rekomendasi desain untuk Azure Functions
Beban kerja misi penting memiliki alur sistem yang penting dan tidak penting. Azure Functions adalah pilihan yang layak untuk alur yang tidak memiliki persyaratan bisnis yang ketat yang sama dengan alur sistem penting. Ini sangat cocok untuk alur berbasis peristiwa yang memiliki proses berumur pendek karena fungsi melakukan operasi berbeda yang berjalan secepat mungkin.
Pilih opsi hosting Azure Functions yang sesuai untuk tingkat keandalan aplikasi. Kami merekomendasikan paket Premium karena memungkinkan Anda mengonfigurasi ukuran instans komputasi. Paket Khusus adalah opsi tanpa server paling sedikit. Ini menyediakan skala otomatis, tetapi operasi skala ini lebih lambat daripada yang ada di paket lainnya. Kami menyarankan agar Anda menggunakan paket Premium untuk memaksimalkan keandalan dan performa.
Ada beberapa pertimbangan keamanan. Saat Anda menggunakan pemicu HTTP untuk mengekspos titik akhir eksternal, gunakan firewall aplikasi web (WAF) untuk memberikan tingkat perlindungan untuk titik akhir HTTP dari vektor serangan eksternal umum.
Kami merekomendasikan penggunaan titik akhir privat untuk membatasi akses ke jaringan virtual privat. Mereka juga dapat mengurangi risiko penyelundupan data, seperti skenario admin berbahaya.
Anda perlu menggunakan alat pemindaian kode pada kode Azure Functions dan mengintegrasikan alat tersebut dengan alur CI/CD.
Pertimbangan dan rekomendasi desain untuk Azure Logic Apps
Seperti Azure Functions, Logic Apps menggunakan pemicu bawaan untuk pemrosesan berbasis peristiwa. Namun, alih-alih menyebarkan kode aplikasi, Anda dapat membuat aplikasi logika dengan menggunakan antarmuka pengguna grafis yang mendukung blok seperti kondisional, perulangan, dan konstruksi lainnya.
Beberapa mode penyebaran tersedia. Kami merekomendasikan mode Standar untuk memastikan penyebaran penyewa tunggal dan mengurangi skenario tetangga yang bising. Mode ini menggunakan runtime Logic Apps penyewa tunggal dalam kontainer, yang didasarkan pada Azure Functions. Dalam mode ini, aplikasi logika dapat memiliki beberapa alur kerja stateful dan stateless. Anda harus mengetahui batas konfigurasi.
Migrasi yang dibatasi melalui IaaS
Banyak aplikasi yang memiliki penyebaran lokal yang ada menggunakan teknologi virtualisasi dan perangkat keras redundan untuk memberikan tingkat keandalan misi penting. Modernisasi sering dihambat oleh kendala bisnis yang mencegah keselarasan penuh dengan pola arsitektur garis besar cloud-native (Bintang Utara) yang direkomendasikan untuk beban kerja misi penting. Itulah sebabnya banyak aplikasi mengadopsi pendekatan bertahap, dengan penyebaran cloud awal menggunakan virtualisasi dan Azure Virtual Machines sebagai model hosting aplikasi utama. Penggunaan VM infrastruktur sebagai layanan (IaaS) mungkin diperlukan dalam skenario tertentu:
- Layanan PaaS yang tersedia tidak memberikan performa atau tingkat kontrol yang diperlukan.
- Beban kerja memerlukan akses sistem operasi, driver tertentu, atau konfigurasi jaringan dan sistem.
- Beban kerja tidak mendukung berjalan dalam kontainer.
- Tidak ada dukungan vendor untuk beban kerja pihak ketiga.
Bagian ini berfokus pada cara terbaik untuk menggunakan Virtual Machines dan layanan terkait untuk memaksimalkan keandalan platform aplikasi. Ini menyoroti aspek utama metodologi desain misi-kritis yang mengubah skenario migrasi cloud-native dan IaaS.
Pertimbangan Desain
Biaya operasional penggunaan VM IaaS secara signifikan lebih tinggi daripada biaya penggunaan layanan PaaS karena persyaratan manajemen VM dan sistem operasi. Mengelola VM harus sering meluncurkan paket perangkat lunak dan pembaruan.
Azure menyediakan kemampuan untuk meningkatkan ketersediaan VM:
- Zona ketersediaan dapat membantu Anda mencapai tingkat keandalan yang lebih tinggi dengan mendistribusikan VM di seluruh pusat data yang dipisahkan secara fisik dalam suatu wilayah.
- Set skala komputer virtual Azure menyediakan fungsionalitas untuk secara otomatis menskalakan jumlah VM dalam grup. Mereka juga menyediakan kemampuan untuk memantau kesehatan instans dan secara otomatis memperbaiki instans yang tidak sehat.
- Set skala dengan orkestrasi fleksibel dapat membantu melindungi dari kegagalan jaringan, disk, dan daya dengan mendistribusikan VM secara otomatis di seluruh domain kesalahan.
Rekomendasi desain
Penting
Gunakan layanan dan kontainer PaaS jika memungkinkan untuk mengurangi kompleksitas dan biaya operasional. Gunakan iaaS VM hanya ketika Anda perlu.
Ukuran SKU VM berukuran tepat untuk memastikan pemanfaatan sumber daya yang efektif.
Sebarkan tiga atau beberapa VM di seluruh zona ketersediaan untuk mencapai toleransi kesalahan tingkat pusat data.
- Jika Anda menyebarkan perangkat lunak di luar rak komersial, konsultasikan dengan vendor perangkat lunak dan uji secara memadai sebelum menyebarkan perangkat lunak ke dalam produksi.
Untuk beban kerja yang tidak dapat Anda sebarkan di seluruh zona ketersediaan, gunakan set skala komputer virtual fleksibel yang berisi tiga VM atau lebih. Untuk informasi selengkapnya tentang cara mengonfigurasi jumlah domain kesalahan yang benar, lihat Mengelola domain kesalahan dalam set skala.
Prioritaskan penggunaan Virtual Machine Scale Sets untuk skalabilitas dan redundansi zona. Titik ini sangat penting untuk beban kerja yang memiliki beban yang bervariasi. Misalnya, jika jumlah pengguna aktif atau permintaan per detik adalah beban yang bervariasi.
Jangan mengakses VM individual secara langsung. Gunakan load balancer di depannya jika memungkinkan.
Untuk melindungi dari pemadaman regional, sebarkan VM aplikasi di beberapa wilayah Azure.
- Lihat area desain jaringan dan konektivitas untuk detail tentang cara merutekan lalu lintas secara optimal antara wilayah penyebaran aktif.
Untuk beban kerja yang tidak mendukung penyebaran aktif/aktif multi-wilayah, pertimbangkan untuk menerapkan penyebaran aktif/pasif dengan menggunakan VM siaga panas/hangat untuk failover regional.
Gunakan gambar standar dari Marketplace Azure daripada gambar kustom yang perlu dipertahankan.
Terapkan proses otomatis untuk menyebarkan dan meluncurkan perubahan pada VM, menghindari intervensi manual. Untuk informasi selengkapnya, lihat Pertimbangan IaaS di area Desain prosedur operasional.
Terapkan eksperimen chaos untuk menyuntikkan kesalahan aplikasi ke dalam komponen VM, dan amati mitigasi kesalahan. Untuk informasi selengkapnya, lihat Validasi dan pengujian berkelanjutan.
Pantau VM dan pastikan bahwa log dan metrik diagnostik diserap ke dalam sink data terpadu.
Terapkan praktik keamanan untuk skenario aplikasi misi penting, jika berlaku, dan praktik terbaik Keamanan untuk beban kerja IaaS di Azure.
Langkah selanjutnya
Tinjau pertimbangan untuk platform data.