Bagikan melalui


Model Kematangan Keandalan

Perjalanan keandalan adalah proses langkah demi langkah di mana setiap tahap dibangun pada tahap sebelumnya untuk memastikan sistem tetap tersedia dan memenuhi harapan pengguna. Model kematangan ini dimaksudkan untuk membantu Anda menilai status Anda saat ini dan menawarkan jalur terstruktur untuk perbaikan.

Fondasi dimulai dengan memulai kemampuan keandalan dasar yang ditawarkan oleh Azure dengan menggunakan fitur keandalan bawaan Azure seperti redundansi zona untuk peningkatan langsung tanpa beban pengoptimalan yang luas.

Secara kontraintuitif, cara untuk mencapai keandalan tinggi adalah dengan menerima kegagalan tidak dapat dihindari. Daripada mencoba mencegah setiap masalah, lebih efektif untuk merencanakan bagaimana sistem Anda akan merespons ketika masalah terjadi. Persyaratan bisnis Anda membantu menentukan risiko mana yang layak ditangani secara proaktif. Tim berinvestasi dalam kemampuan pemantauan tingkat lanjut dengan pengamatan terstruktur, memperluas mitigasi kegagalan untuk menyertakan kekhawatiran tingkat aplikasi, dan mulai menguji langkah-langkah ketahanan.

Selanjutnya, tim mengintegrasikan wawasan bisnis dengan keterampilan teknis. Teams menerapkan pemodelan kesehatan, melakukan analisis mode kegagalan, dan menyiapkan rencana pemulihan bencana yang komprehensif. Tahap ini memastikan akuntabilitas melalui tujuan yang terukur dan persiapan sistematis untuk berbagai skenario kegagalan.

Setelah sistem ditayangkan, penekanan bergerak untuk mengelola tantangan lingkungan produksi, termasuk manajemen perubahan dan menangani pertumbuhan data dan kompleksitas operasional, dan bagaimana hal ini memengaruhi keandalan sistem Anda.

Tingkat akhir berjalan tanpa batas waktu, dan tetap tangguh adalah tujuannya. Tingkat ini mewakili evolusi di luar kontrol teknis untuk kemampuan beradaptasi arsitektur. Tingkat ini berfokus pada memungkinkan sistem untuk menahan risiko baru dan tak terduga saat beban kerja berevolusi dan tumbuh.

Model ini disusun menjadi lima tingkat kematangan yang berbeda, masing-masing dengan tujuan utama dan serangkaian strategi inti. Gunakan tampilan bertab di bawah ini untuk menjelajahi setiap tingkat. Pastikan juga untuk meninjau kompromi yang disorot dan risiko terkait dengan seiring kemajuan Anda.

Ikon Tujuan Membangun dasar yang solid untuk ketahanan dalam infrastruktur dan operasi beban kerja, daripada menghabiskan waktu untuk tugas pengoptimalan.

Model kematangan tingkat 1 dirancang untuk membantu tim beban kerja membangun fondasi yang kuat untuk keandalan sistem. Fokusnya adalah pada bootstrapping, yang merupakan proses pengembangan dasar untuk keputusan keandalan di masa depan. Tahap ini sebagian besar melibatkan implementasi fungsional dengan ekstensi kecil untuk praktik saat ini.

Tahap ini termasuk meneliti, mendapatkan wawasan, dan membuat inventarisasi sistem Anda. Ini juga menggunakan fitur keandalan bawaan di Azure, seperti mengaktifkan redundansi zona untuk peningkatan segera.

Dengan menetapkan dasar-dasar ini, Anda dapat mempersiapkan tim Anda untuk maju melalui tingkat model kematangan keandalan untuk secara progresif meningkatkan ketahanan dan performa sistem Anda.

Strategi utama

✓ Mengevaluasi peluang untuk membongkar tanggung jawab operasional

Strategi ini pada dasarnya adalah pendekatan build dibandingkan dengan beli atau mengandalkan. Keputusan tergantung pada berapa banyak tanggung jawab yang dapat dikelola pada tahap ini sambil tetap mendukung pengembangan di masa depan. Anda ingin menggunakan sumber daya yang relevan dengan beban kerja, tetapi Anda harus selalu mencari peluang untuk mengalihkan pemeliharaannya. Berikut adalah beberapa kasus penggunaan klasik di mana Anda mungkin ingin menerapkan pendekatan ini.

  • Membongkar tanggung jawab ke platform cloud dengan memilih solusi platform as a service (PaaS). Mereka menyediakan solusi siap pakai untuk kebutuhan ketahanan umum seperti replikasi, failover, dan penyimpanan cadangan. Ketika Anda mengambil pendekatan ini, penyedia cloud menangani hosting, pemeliharaan, dan peningkatan ketahanan.

    Misalnya, penyedia cloud mereplikasi data di beberapa simpul komputasi dan mendistribusikan replika di seluruh zona ketersediaan. Jika Anda membangun solusi Anda sendiri pada komputer virtual (VM), Anda perlu mengelola aspek-aspek ini sendiri, yang dapat memakan waktu dan kompleks.

  • Mengalihkan tanggung jawab untuk operasi yang tidak terkait langsung dengan tujuan bisnis dari beban kerja. Beberapa operasi khusus, seperti manajemen dan keamanan database, berpotensi memengaruhi keandalan beban kerja Anda. Jelajahi kemungkinan memiliki tim, teknologi, atau keduanya yang berpengalaman menangani tugas-tugas tersebut.

    Misalnya, jika tim Anda tidak memiliki keahlian database, gunakan layanan terkelola untuk membantu mengalihkan tanggung jawab ke penyedia. Pendekatan ini dapat berguna ketika Anda memulai karena memungkinkan tim Anda untuk fokus pada fungsionalitas beban kerja. Banyak perusahaan telah berbagi layanan yang dikelola secara terpusat. Jika tim platform tersedia, gunakan untuk menangani operasi ini. Namun, pendekatan ini mungkin menambahkan dependensi dan kompleksitas organisasi.

    Atau, jika tim Anda memiliki keahlian yang tepat, Anda mungkin membuat keputusan eksplisit untuk menggunakan keterampilan mereka dan memilih layanan yang tidak menyertakan kemampuan manajemen.

  • Mengalihkan tanggung jawab kepada vendor non-Microsoft. Pilih produk di luar rak sebagai titik awal. Bangun solusi yang disesuaikan hanya ketika berkontribusi pada nilai bisnis dari beban kerja Anda.

Risiko: Jika opsi beli atau mengandalkan sebagian memenuhi kebutuhan Anda, Anda mungkin perlu menerapkan ekstensi kustom. Metode ini dapat mengakibatkan situasi "penguncian kustomisasi", di mana pembaruan dan modernisasi menjadi tidak praktis. Tinjau kebutuhan Anda secara teratur dan bandingkan dengan kemampuan solusi. Kembangkan strategi keluar ketika ada penyimpangan yang signifikan antara keduanya.

Skenario yang berlawanan juga merupakan risiko. Meskipun opsi beli atau andal mungkin tampak lebih sederhana pada awalnya, mungkin perlu evaluasi ulang dan desain ulang nanti jika batasan layanan PaaS, solusi vendor, atau sumber daya milik platform tidak memenuhi granularitas atau tingkat otonomi yang diperlukan untuk beban kerja.

✓ Identifikasi alur pengguna dan sistem penting

Memecah beban kerja menjadi alur sangat penting pada tahap ini. Fokus pada alur pengguna dan sistem . Alur pengguna menentukan interaksi pengguna, dan alur sistem menentukan komunikasi antara komponen beban kerja yang tidak terkait langsung dengan tugas pengguna.

Misalnya, dalam aplikasi e-niaga, pelanggan melakukan aktivitas front-end seperti penjelajahan dan pemesanan. Sementara itu, transaksi back-end dan proses yang dipicu sistem memenuhi permintaan pengguna dan menangani tugas lain. Alur berbeda tersebut adalah bagian dari sistem yang sama, tetapi melibatkan komponen yang berbeda dan melayani tujuan yang berbeda.

Mulai bangun katalog alur pada tahap ini. Amati interaksi pengguna dan komunikasi komponen. Mencantumkan dan mengategorikan alur, menentukan titik awal dan akhir, dan mencatat dependensi. Dokumentasikan hasil dan pengecualian dengan menggunakan diagram untuk kejelasan. Katalog ini dapat berfungsi sebagai alat penting untuk percakapan awal dengan pemangku kepentingan bisnis untuk mengidentifikasi aspek terpenting dari perspektif mereka. Percakapan ini dapat menginformasikan tingkat prioritas pertama.

Mengklasifikasikan alur sebagai kritis dengan mengevaluasi risiko dan dampak pada aktivitas bisnis utama. Jika Anda mengharapkan gangguan, degradasi terkontrol bertujuan untuk mempertahankan alur kritis ini. Dalam contoh e-niaga, alur penting mencakup pencarian produk, menambahkan item ke keranjang, dan proses pembayaran karena tugas-tugas ini esensial bagi bisnis. Proses lain, seperti memperbarui data produk dan memelihara gambar produk, tidak terlalu penting. Pastikan bahwa aliran kritis tetap beroperasi selama pemadaman untuk mencegah kehilangan pendapatan dengan memungkinkan pengguna untuk terus mencari produk dan menambahkan item ke kelir.

Nota

Proses bisnis bisa sangat penting meskipun tidak sensitif terhadap waktu. Kekritisan waktu adalah faktor kunci. Misalnya, memenuhi persyaratan audit adalah proses penting, tetapi Anda mungkin tidak perlu segera menyajikan data untuk audit. Prosesnya tetap penting, tetapi keandalannya tidak bergantung pada waktu karena pemulihan dalam beberapa jam dapat diterima.

Untuk informasi selengkapnya, lihat Azure Well-Architected Framework: Mengoptimalkan desain beban kerja dengan menggunakan alur.

✓ Pilih model desain, sumber daya, dan fitur yang tepat

Anda harus menerapkan strategi ini pada tingkat berikut:

  • Arsitektur: Desain beban kerja harus memperhitungkan ekspektasi keandalan di berbagai lapisan infrastruktur. Keputusan awal Anda mungkin menjadi pilihan antara kontainerisasi atau PaaS untuk menghosting aplikasi. Atau, Anda mungkin mempertimbangkan konfigurasi jaringan seperti model hub dan spoke atau satu jaringan virtual.

    Anda juga harus mengatur batasan yang membuat segmentasi berdasarkan fungsionalitas. Misalnya, alih-alih menghosting semuanya di satu VM dengan disk virtual zona tunggal, pertimbangkan untuk memisahkan komputasi dan penyimpanan data dan menggunakan layanan khusus.

    Perhatian

    Dalam skenario migrasi, mengadopsi pendekatan lift-and-shift tanpa meninjau peluang baru dapat menyebabkan manfaat terlewat dan ketidakefisienan. Penting untuk meneliti modernisasi lebih awal untuk menghindari terjebak dengan pengaturan yang sulit diubah dan untuk memanfaatkan opsi dan peningkatan yang lebih baik.

  • Layanan Azure: Gunakan pohon keputusan untuk membantu Anda memilih layanan yang tepat untuk desain Anda. Pilih komponen yang memenuhi kebutuhan Anda saat ini, tetapi tetap fleksibel sehingga Anda dapat beralih layanan saat beban kerja Anda berkembang dan membutuhkan lebih banyak fitur.

  • SKU atau tingkatan dalam layanan Azure: Tinjau fitur setiap SKU dan pahami jaminan ketersediaan platform. Evaluasi perjanjian tingkat layanan untuk memahami cakupan yang diberikan terkait persentil yang diterbitkan.

  • Fitur yang mendukung keandalan: Pilih layanan cloud-native untuk meningkatkan ketersediaan melalui konfigurasi sederhana tanpa mengubah kode. Penting untuk memahami opsi dan dengan sengaja memilih konfigurasi, seperti meningkatkan redundansi zona atau mereplikasi data ke wilayah sekunder.

✓ Sebarkan dengan tingkat redundansi dasar

Dalam setiap bagian solusi Anda, hindarilah titik kegagalan tunggal, seperti instans tunggal. Buat beberapa instans untuk redundansi sebagai gantinya. Layanan Azure sering menangani redundansi untuk Anda, terutama dengan layanan PaaS, yang biasanya mencakup redundansi lokal secara default dan opsi untuk meningkatkan. Sebaiknya, gunakan redundansi zona untuk menyebarkan instans tersebut di beberapa pusat data Azure. Jika tidak, setidaknya pastikan redundansi lokal, tetapi metode ini memiliki risiko yang lebih tinggi. Di tingkat mendatang, Anda mengevaluasi apakah persyaratan keandalan Anda mungkin terpenuhi dengan memperluas solusi dengan komponen geo-redundan.

Trade-off: Salah satu trade-off yang signifikan adalah peningkatan biaya redundansi. Selain itu, komunikasi lintas zona dapat memperkenalkan latensi. Untuk aplikasi warisan yang membutuhkan latensi minimal, redundansi dapat menurunkan performa.

Risiko: Jika aplikasi tidak dirancang untuk lingkungan beberapa instans, aplikasi mungkin berjuang dengan beberapa instans aktif, yang dapat menyebabkan data yang tidak konsisten. Selain itu, jika aplikasi dibangun untuk penyiapan lokal yang memiliki latensi rendah, menggunakan zona ketersediaan mungkin mengganggu performanya.

✓ Aktifkan metrik, log, dan jejak untuk memantau alur

Pilih alat asli platform seperti Azure Monitor untuk memastikan visibilitas metrik, log, dan jejak. Gunakan fitur bawaan untuk mengatur pemberitahuan untuk potensi masalah. Anda harus memiliki pemberitahuan dasar untuk mengirim pemberitahuan dan mendapatkan pemberitahuan. Manfaatkan kemampuan platform Azure yang menunjukkan perubahan status kesehatan layanan, seperti:

Siapkan grup tindakan Azure Monitor untuk infrastruktur dan aplikasi.

Trade-off: Saat mengumpulkan lebih banyak log, Anda perlu mengelola peningkatan volume, yang memengaruhi biaya terkait penyimpanan log tersebut. Gunakan kebijakan retensi untuk mengelola volume. Gunakan Azure Monitor untuk mengatur batas harian di ruang kerja. Untuk informasi selengkapnya, lihat Rekomendasi konfigurasi untuk Keandalan.

Mulai membangun pengamatan pada lapisan berikut.

Infrastruktur

Mulailah dengan mengaktifkan log diagnostik dan pastikan Anda mengumpulkan metrik asli dari komponen platform untuk analisis. Kumpulkan informasi tentang penggunaan sumber daya, seperti CPU, memori, input/output, dan aktivitas jaringan.

Aplikasi

Kumpulkan metrik tingkat aplikasi, seperti konsumsi memori atau latensi permintaan, dan aktivitas aplikasi log. Lakukan operasi pengelogan dalam utas atau proses yang terpisah dari utas aplikasi utama. Pendekatan ini tidak menyebabkan pengelogan memperlambat tugas utama aplikasi.

Selain itu, periksa pengujian ketersediaan dasar di Application Insights.

Data Informasi

Untuk memantau database pada tingkat dasar, kumpulkan metrik utama yang dikeluarkan sumber daya database. Mirip dengan komponen infrastruktur, lacak penggunaan sumber daya dalam konteks penyimpanan data, seperti metrik jaringan. Mengumpulkan data tentang bagaimana koneksi dikumpulkan penting untuk meningkatkan efisiensi pada tahap selanjutnya.

Untuk keandalan, penting untuk melacak metrik koneksi, seperti memantau koneksi aktif dan gagal. Misalnya, di Azure Cosmos DB, kode status 429 dikembalikan ketika jumlah permintaan melebihi unit permintaan dan koneksi yang dialokasikan mulai gagal.

✓ Mulai membangun panduan mitigasi kegagalan

Kegagalan berkisar dari kegagalan sementara yang sedikit lebih lama hingga kegagalan besar.

Di Tingkat 1, fokus pada kegagalan platform. Meskipun berada di luar kendali Anda, Anda harus tetap memiliki strategi untuk menanganinya. Misalnya, mengatasi pemadaman zona dengan menggunakan zona ketersediaan. Antisipasi kesalahan sementara di tingkat platform dan tangani di beban kerja Anda.

Proses penanganan kegagalan ini bervariasi berdasarkan kompleksitas. Mulai dokumentasikan potensi kegagalan tingkat platform, risiko terkait, dan strategi mitigasi. Latihan ini terutama bersifat teoritis dan matang dengan otomatisasi pada tingkat selanjutnya.

Anda harus mendokumen kegagalan, termasuk faktor-faktor seperti kemungkinan, dampak, dan strategi mitigasinya. Gunakan skala kekritisan yang selaras dengan tujuan beban kerja Anda. Skala Anda mungkin mencakup:

  • Tinggi. Pemadaman sistem lengkap yang menyebabkan kerugian finansial yang signifikan dan penurunan kepercayaan pengguna.

  • Sedang. Gangguan sementara yang memengaruhi bagian dari beban kerja dan menyebabkan ketidaknyamanan pengguna.

  • Rendah. Masalah perangkat lunak kecil yang memengaruhi fitur aplikasi yang tidak penting dan menyebabkan waktu henti minimal bagi pengguna.

Berikut adalah contoh templat:

Masalah Risiko Sumber Tingkat Keparahan Kemungkinan Mitigasi
Kegagalan jaringan sementara Klien kehilangan koneksi mereka ke server aplikasi. Platform Azure Tinggi Sangat mungkin Gunakan pola desain dalam logika sisi klien, seperti logika coba lagi dan pemutus sirkuit.
Gangguan di Zona Pengguna tidak dapat menjangkau aplikasi. Platform Azure Tinggi Tidak mungkin Aktifkan ketahanan zona pada semua komponen.
Kedaluwarsa sertifikat Keamanan Lapisan Transportasi (TLS) Klien tidak dapat membuat sesi TLS dengan aplikasi. Kesalahan manusia Tinggi Mungkin Gunakan manajemen sertifikat TLS otomatis.
Penggunaan CPU atau memori mencapai batas yang ditentukan dan menyebabkan server gagal. Permintaan melebihi batas waktu. Aplikasi Menengah Mungkin Menerapkan mulai ulang otomatis.
Komponen tidak tersedia selama pembaruan. Pengguna mengalami kesalahan yang tidak tertangani dalam aplikasi. Penyebaran atau perubahan konfigurasi Kurang Penting Sangat mungkin selama implementasi dan tidak mungkin pada waktu lain Menangani komponen dalam logika sisi klien.

Pada Tingkat 1, jangan berusaha mencapai kelengkapan karena selalu ada contoh kegagalan yang tidak terduga. Jika Anda mengalami pemadaman tak terduga, dokumentasikan penyebab dan mitigasi di dalam buku panduan. Perlakukan aset ini sebagai dokumen hidup yang Anda perbarui dari waktu ke waktu.

✓ Tambahkan mekanisme untuk pulih dari kegagalan sementara

Di lingkungan cloud, kegagalan sementara umum terjadi. Mereka menunjukkan masalah jangka pendek yang coba lagi biasanya dapat diselesaikan dalam hitungan detik.

Gunakan SDK dan konfigurasi bawaan untuk menangani kesalahan ini agar sistem tetap aktif. Konfigurasi bawaan sering kali merupakan pengaturan default, sehingga Anda mungkin perlu menguji untuk memvalidasi implementasi. Selain itu, terapkan pola yang dirancang untuk menangani kegagalan sementara dalam arsitektur Anda. Untuk informasi selengkapnya, lihat Pola desain arsitektur yang mendukung keandalan.

Masalah yang terus-menerus mungkin menunjukkan kegagalan yang tidak sementara atau awal pemadaman. Skenario ini memerlukan lebih dari sekadar memperbaiki masalah yang dilokalkan dalam aplikasi. Ini melibatkan pemeriksaan pengguna dan alur sistem kritis dengan menambahkan teknik perlindungan diri dan upaya pemulihan. Metode ini adalah praktik matang yang dijelaskan Tingkat 2.

✓ Jalankan tes dasar

Integrasikan pengujian keandalan dasar pada tahap awal siklus hidup pengembangan perangkat lunak. Cari peluang untuk melakukan pengujian, dimulai dengan pengujian unit untuk memvalidasi fungsionalitas dan konfigurasi.

Selain itu, kembangkan contoh pengujian sederhana untuk masalah yang Anda identifikasi dalam playbook mitigasi risiko. Fokus pada dampak yang lebih tinggi, mitigasi upaya yang lebih rendah. Misalnya, mensimulasikan pemadaman jaringan atau masalah konektivitas yang terputus-putus untuk melihat bagaimana logika coba ulang Anda mengatasi gangguan tersebut.

Risiko: Pengujian sering memperkenalkan gesekan dalam siklus pengembangan. Untuk mengurangi risiko ini, buat pengujian keandalan dapat dilacak bersama tugas pengembangan.

Pengembangan fitur adalah prioritas, dan pengujian dapat memperkenalkan gesekan dalam siklus pengembangan. Lebih mudah untuk mulai menguji sebelum pengembangan fitur selesai. Merancang aspek nonfungsi aplikasi di awal memungkinkan Anda memperluasnya saat Anda menambahkan kemampuan fungsional, daripada membangun backlog masalah untuk ditangani nanti. Meskipun pendekatan ini membutuhkan lebih banyak upaya pada awalnya, pendekatan ini dapat dikelola dan mencegah masalah yang lebih besar nanti.

Langkah selanjutnya