Pola desain arsitektur yang mendukung keandalan

Saat merancang arsitektur beban kerja, Anda harus menggunakan pola industri yang mengatasi tantangan umum. Pola dapat membantu Anda membuat keseimbangan kompromi yang disengaja dalam beban kerja dan mengoptimalkan hasil yang diinginkan. Mereka juga dapat membantu mengurangi risiko yang berasal dari masalah tertentu, yang dapat berdampak pada keamanan, performa, biaya, dan operasi. Jika tidak dimitigasi, risiko tersebut pada akhirnya akan menyebabkan masalah keandalan. Pola-pola ini didukung oleh pengalaman dunia nyata, dirancang untuk skala cloud dan model operasi, dan secara inheren vendor agnostik. Menggunakan pola terkenal sebagai cara untuk menstandarkan desain beban kerja Anda adalah komponen keunggulan operasional.

Banyak pola desain secara langsung mendukung satu atau beberapa pilar arsitektur. Pola desain yang mendukung pilar Keandalan memprioritaskan ketersediaan beban kerja, pelestarian diri, pemulihan, integritas data dan pemrosesan, dan penahanan kerusakan.

Tabel berikut ini meringkas pola desain Arsitektur yang mendukung tujuan keandalan.

Pola Ringkasan
Duta besar Mengenkapsulasi dan mengelola komunikasi jaringan dengan mengalihkan tugas-tugas lintas-aspek yang terkait dengan komunikasi jaringan. Layanan pembantu yang dihasilkan memulai komunikasi atas nama klien. Titik mediasi ini memberikan kesempatan untuk menambahkan pola keandalan ke komunikasi jaringan, seperti coba lagi atau buffering.
Backend untuk Frontend Individualisasi lapisan layanan beban kerja dengan membuat layanan terpisah yang eksklusif untuk antarmuka frontend tertentu. Karena pemisahan ini, kerusakan pada lapisan layanan yang mendukung satu klien mungkin tidak memengaruhi ketersediaan akses klien lain. Ketika Anda memperlakukan berbagai klien secara berbeda, Anda dapat memprioritaskan upaya keandalan berdasarkan pola akses klien yang diharapkan.
Sekat Memperkenalkan segmentasi yang disengaja dan lengkap antar komponen untuk mengisolasi radius ledakan kerusakan. Strategi isolasi kegagalan ini berusaha menahan kesalahan hanya pada sekat yang mengalami masalah, sehingga mencegah dampak ke sekat lain.
Cache-Aside Mengoptimalkan akses ke data yang sering dibaca dengan memperkenalkan cache yang diisi sesuai permintaan. Cache kemudian digunakan pada permintaan berikutnya untuk data yang sama. Penyimpanan dalam cache menghasilkan replikasi data dan, dengan cara terbatas, dapat digunakan untuk mempertahankan ketersediaan data yang sering diakses jika penyimpanan data asal sementara tidak tersedia. Selain itu, jika ada kerusakan dalam cache, beban kerja dapat kembali ke penyimpanan data asal.
Pemutus Sirkuit Mencegah permintaan yang berkelanjutan kepada dependensi yang tidak berfungsi atau tidak tersedia. Dengan demikian, pola ini mencegah kelebihan beban dependensi yang salah. Anda juga dapat menggunakan pola ini untuk memulai degradasi yang halus pada beban kerja. Pemutus sirkuit sering digabungkan dengan pemulihan otomatis untuk menyediakan pelestarian diri dan penyembuhan diri.
Tanda Terima Klaim Memisahkan data dari alur olahpesan, menyediakan cara untuk mengambil data yang terkait dengan pesan secara terpisah. Bus pesan tidak menyediakan ketahanan dan pemulihan bencana yang sama yang sering ditemukan di tempat penyimpanan data khusus, jadi memisahkan data dari pesan dapat meningkatkan ketahanan data yang mendasari. Pemisahan ini juga memungkinkan pendekatan pemulihan antrean pesan setelah bencana.
Mengimbangi Transaksi Menyediakan mekanisme untuk pulih dari kegagalan dengan mengembalikan efek dari tindakan yang diterapkan sebelumnya. Pola ini mengatasi kerusakan dalam jalur beban kerja penting dengan menggunakan tindakan kompensasi, yang dapat melibatkan proses seperti langsung menggulung balik perubahan data, merusak kunci transaksi, atau bahkan menjalankan perilaku sistem asli untuk membalikkan efek.
Konsumen yang Bersaing Menerapkan pemrosesan terdistribusi dan bersamaan untuk menangani item secara efisien dalam antrean. Model ini membangun redundansi dalam pemrosesan antrean dengan memperlakukan konsumen sebagai replika, sehingga kegagalan instans tidak mencegah konsumen lain memproses pesan antrean.
Konfigurasi Beban Kerja Edge Mengelola konfigurasi untuk beban kerja tepi terdistribusi dengan memperlakukan cloud sebagai sumber kebenaran yang diinginkan sambil memastikan konfigurasi tetap tersedia secara lokal selama gangguan konektivitas. Pola ini meningkatkan keandalan dengan mendukung rekonsiliasi konfigurasi, deteksi penyimpangan, dan pemutaran kembali untuk memulihkan dari pembaruan parsial atau konfigurasi yang tidak valid.
Event Sourcing Memperlakukan perubahan status sebagai serangkaian peristiwa, menangkapnya dalam log khusus tambahan yang tidak dapat diubah. Anda dapat menggunakan pola ini ketika riwayat perubahan yang andal sangat penting dalam proses bisnis yang kompleks. Ini juga memfasilitasi rekonstruksi status jika Anda perlu memulihkan penyimpanan status.
Stempel Penyebaran Mengisolasi penyewa atau unit beban kerja ke dalam stempel independen yang beroperasi tanpa nasib bersama. Kegagalan dalam satu stempel terkandung pada stempel tersebut dan tidak memengaruhi penyewa pada stempel lain. Menyebarkan stempel di seluruh wilayah juga menyediakan fondasi untuk redundansi dan perencanaan pemulihan.
Identitas Terfederasi Mendelegasikan kepercayaan kepada penyedia identitas yang berada di luar beban kerja untuk mengelola pengguna dan menyediakan autentikasi untuk aplikasi Anda. Membongkar manajemen pengguna dan autentikasi mengalihkan keandalan untuk komponen tersebut ke penyedia identitas, yang biasanya memiliki SLA tinggi. Selain itu, selama pemulihan bencana beban kerja, komponen autentikasi mungkin tidak perlu ditangani sebagai bagian dari rencana pemulihan beban kerja.
Agregasi Gateway Menyederhanakan interaksi klien dengan beban kerja Anda dengan menggabungkan panggilan ke beberapa layanan backend dalam satu permintaan. Topologi ini memungkinkan Anda untuk mengalihkan penanganan kesalahan sementara dari implementasi terdistribusi di seluruh klien ke implementasi terpusat.
Gateway Offloading Mendelegasikan pemrosesan permintaan ke perangkat gateway baik sebelum maupun sesudah meneruskan permintaan ke node backend. Membongkar tanggung jawab ini ke gateway mengurangi kompleksitas kode aplikasi pada simpul backend. Dalam beberapa kasus, memindahkan beban sepenuhnya menggantikan fungsionalitas dengan fitur andal yang disediakan oleh platform.
Penghalaan Gateway Merutekan permintaan jaringan masuk ke berbagai sistem backend berdasarkan niat permintaan, logika bisnis, dan ketersediaan backend. Perutean gateway memungkinkan Anda merutekan lalu lintas hanya ke simpul sehat di sistem Anda.
Geode Menyebarkan sistem yang beroperasi dalam mode ketersediaan aktif-aktif di beberapa geografi. Pola ini menggunakan replikasi data untuk mendukung ideal bahwa setiap klien dapat terhubung ke instans geografis apa pun. Ini dapat membantu beban kerja Anda menahan satu atau beberapa pemadaman regional.
Pemantauan Titik Akhir Kesehatan Menyediakan cara untuk memantau kesehatan atau status sistem dengan mengekspos titik akhir yang dirancang khusus untuk tujuan tersebut. Anda dapat menggunakan endpoint ini untuk mengelola kesehatan beban kerja Anda serta memberikan pemberitahuan dan menampilkan dasbor. Anda juga dapat menggunakannya sebagai sinyal untuk perbaikan penyembuhan diri.
Konsumen Idempogen Memastikan bahwa memproses pesan yang sama lebih dari sekali memiliki efek yang sama dengan memprosesnya sekali. Sistem olahpesan yang menjamin pengiriman setidaknya sekali mungkin mengirimkan pesan duplikat, sehingga pola ini memungkinkan beban kerja menggunakan percobaan ulang tanpa merusak data.
Tabel Indeks Mengoptimalkan pengambilan data di penyimpanan data terdistribusi dengan memungkinkan klien mencari metadata sehingga data dapat langsung diambil, menghindari kebutuhan untuk melakukan pemindaian penyimpanan data penuh. Karena klien diarahkan ke shard, partisi, atau titik akhir mereka melalui proses pencarian, Anda dapat menggunakan pola ini untuk memfasilitasi pendekatan failover untuk akses data.
Pemilihan Pemimpin Menetapkan pemimpin instans aplikasi terdistribusi. Pemimpin mengoordinasikan tanggung jawab yang terkait dengan mencapai tujuan. Pola ini mengurangi efek malfungsi simpul dengan mengalihkan tugas secara andal. Ini juga menerapkan failover melalui algoritma konsensus ketika pemimpin tidak berfungsi.
Pipa dan Filter Memecah pemrosesan data yang kompleks menjadi serangkaian tahap independen untuk mencapai hasil tertentu. Setiap tahap yang memiliki tanggung jawab terfokus memungkinkan perhatian yang lebih terarah dan menghindari gangguan dari pemrosesan data yang dikombinasikan.
Antrean Prioritas Memastikan bahwa item berprioritas lebih tinggi diproses dan diselesaikan sebelum item berprioritas lebih rendah. Memisahkan item berdasarkan prioritas bisnis memungkinkan Anda memfokuskan upaya keandalan pada pekerjaan yang paling penting.
Publisher/Pelanggan Memisahkan komponen arsitektur dengan mengganti komunikasi klien-ke-layanan langsung atau klien-ke-layanan dengan komunikasi melalui broker pesan perantara atau bus peristiwa.
Perataan Beban Berbasis Antrean Mengontrol tingkat permintaan atau tugas masuk dengan menampungnya dalam antrean dan membiarkan pemroses antrean menanganinya dengan kecepatan terkontrol. Pendekatan ini dapat memberikan ketahanan terhadap lonjakan permintaan yang tiba-tiba dengan memisahkan kedatangan tugas dari pemrosesan mereka. Ini juga dapat mengisolasi malfungsi dalam pemrosesan antrean sehingga tidak memengaruhi penerimaan.
Pembatasan Tarif Mengontrol tingkat permintaan dari klien untuk mengurangi kesalahan pembatasan dan menghindari skenario uji ulang saat terjadi kesalahan yang tidak terbatas. Taktik ini melindungi klien dengan mengakui batasan dan biaya berkomunikasi dengan layanan ketika layanan dirancang untuk menghindari mencapai batas yang ditentukan. Ini bekerja dengan mengontrol jumlah dan/atau ukuran operasi yang dikirim ke layanan selama periode waktu tertentu.
Coba lagi Mengatasi kegagalan yang mungkin sementara atau terputus-putus dengan mencoba kembali operasi tertentu, dengan cara yang terkontrol. Mengurangi kesalahan sementara dalam sistem terdistribusi adalah teknik utama untuk meningkatkan ketahanan beban kerja.
Transaksi Saga yang Terdistribusi Mengoordinasikan transaksi jangka panjang dan berpotensi kompleks dengan menguraikan pekerjaan menjadi urutan transaksi yang lebih kecil dan independen. Setiap transaksi juga harus memiliki tindakan kompensasi untuk membalikkan kegagalan dalam eksekusi dan menjaga integritas. Karena transaksi monolitik di beberapa sistem terdistribusi biasanya tidak mungkin, pola ini memberikan konsistensi dan keandalan dengan menerapkan atomitas dan kompensasi.
Pengawas Agen Penjadwal Mendistribusikan dan mendistribusikan ulang tugas secara efisien di seluruh sistem berdasarkan faktor-faktor yang dapat diamati dalam sistem. Pola ini menggunakan metrik kesehatan untuk mendeteksi kegagalan dan mengalihkan tugas ke agen yang sehat untuk mengurangi efek kerusakan.
Konvoi Berurutan Mempertahankan penerimaan pesan bersamaan sekaligus mendukung pemrosesan dalam urutan yang ditentukan. Pola ini dapat menghilangkan kondisi race yang sulit dipecahkan, penanganan pesan yang bermasalah, atau solusi lain untuk mengatasi pesan yang salah diurutkan yang dapat menyebabkan malafungsi.
Sharding Mengarahkan beban ke tujuan logis tertentu untuk menangani permintaan tertentu, memungkinkan kolokasi untuk pengoptimalan. Karena data atau pemrosesan diisolasi ke pecahan, kerusakan dalam satu pecahan tetap terisolasi ke pecahan tersebut.
Gambar Pencekik Menyediakan pendekatan untuk mengganti komponen sistem yang berjalan secara sistematis dengan komponen baru, sering kali selama migrasi atau modernisasi sistem. Pendekatan inkremental pola ini dapat membantu mengurangi risiko selama transisi.
Pembatasan Kecepatan Memberlakukan batasan pada laju atau throughput permintaan masuk ke sumber daya atau komponen. Anda dapat merancang batas untuk membantu mencegah kelelahan sumber daya yang mungkin menyebabkan kerusakan. Anda juga dapat menggunakan pola ini sebagai mekanisme kontrol dalam rencana degradasi yang anggun.

Langkah selanjutnya

Tinjau pola desain Arsitektur yang mendukung pilar kerangka kerja Azure Well-Architected lainnya: