Pola desain cloud yang mendukung keandalan

Saat Merancang arsitektur beban kerja, Anda harus menggunakan pola industri yang mengatasi tantangan umum. Pola dapat membantu Anda melakukan tradeoff yang disengaja dalam beban kerja dan mengoptimalkan hasil yang Anda inginkan. Mereka juga dapat membantu mengurangi risiko yang berasal dari masalah tertentu, yang dapat memengaruhi 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.

Pola desain untuk keandalan

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

Pola Ringkasan
Duta Besar Merangkum dan mengelola komunikasi jaringan dengan membongkar tugas lintas pemotongan 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 mencoba kembali 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 mencoba mengandung kesalahan hanya untuk sekat yang mengalami masalah, mencegah dampak ke massal lainnya.
Selain Cache Mengoptimalkan akses ke data yang sering dibaca dengan memperkenalkan cache yang diisi sesuai permintaan. Cache kemudian digunakan pada permintaan berikutnya untuk data yang sama. Penembolokan membuat replikasi data dan, dengan cara terbatas, dapat digunakan untuk mempertahankan ketersediaan data yang sering diakses jika penyimpanan data asal untuk sementara waktu tidak tersedia. Selain itu, jika ada kerusakan dalam cache, beban kerja dapat kembali ke penyimpanan data asal.
Pemutus Sirkuit Mencegah permintaan berkelanjutan ke dependensi yang tidak berfungsi atau tidak tersedia. Dengan demikian, pola ini mencegah kelebihan beban dependensi yang salah. Anda juga dapat menggunakan pola ini untuk memicu degradasi yang anggun dalam beban kerja. Circuit breaker sering digabungkan dengan pemulihan otomatis untuk menyediakan pelestarian diri dan penyembuhan diri.
Pemeriksaan Klaim Memisahkan data dari alur olahpesan, menyediakan cara untuk mengambil data yang terkait dengan pesan secara terpisah. Bus pesan tidak memberikan keandalan dan pemulihan bencana yang sama yang sering ada di penyimpanan data khusus, sehingga memisahkan data dari pesan dapat memberikan peningkatan keandalan untuk data yang mendasar. Pemisahan ini juga memungkinkan pendekatan pemulihan antrean pesan setelah bencana.
Transaksi Kompensasi 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 secara langsung mengembalikan perubahan data, merusak kunci transaksi, atau bahkan menjalankan perilaku sistem asli untuk membalikkan efeknya.
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.
Sumber Peristiwa Memperlakukan perubahan status sebagai rangkaian 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.
Identitas Federasi Mendelegasikan kepercayaan ke 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.
Pembongkaran Gateway Offloads meminta pemrosesan ke perangkat gateway sebelum dan sesudah meneruskan permintaan ke node backend. Membongkar tanggung jawab ini ke gateway mengurangi kompleksitas kode aplikasi pada simpul backend. Dalam beberapa kasus, offloading sepenuhnya menggantikan fungsionalitas dengan fitur yang disediakan platform yang andal.
Perutean 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 titik akhir ini untuk mengelola kesehatan beban kerja Anda dan untuk pemberitahuan dan dasbor. Anda juga dapat menggunakannya sebagai sinyal untuk remediasi penyembuhan diri.
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 pekerjaan dengan andal. Ini juga menerapkan failover melalui algoritma konsekuensi ketika pemimpin tidak berfungsi.
Pipa dan Filter Memecah pemrosesan data yang kompleks menjadi serangkaian tahap independen untuk mencapai hasil tertentu. Tanggung jawab tunggal dari setiap tahap memungkinkan perhatian yang terfokus dan menghindari gangguan pemrosesan data yang dikompresi.
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.
Penerbit/Pelanggan Memisahkan komponen arsitektur dengan mengganti komunikasi klien-ke-layanan atau klien-ke-layanan langsung dengan komunikasi melalui broker pesan perantara atau bus peristiwa.
Perataan Beban Berbasis Antrean Mengontrol tingkat permintaan atau tugas masuk dengan buffering dalam antrean dan membiarkan prosesor 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 kerusakan dalam pemrosesan antrean sehingga tidak memengaruhi asupan.
Pembatasan Tarif Mengontrol tingkat permintaan klien untuk mengurangi kesalahan pembatasan dan menghindari skenario coba lagi 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 terdistribusi Saga 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.
Scheduler Agent Supervisor 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 ingress olahpesan bersamaan sekaligus mendukung pemrosesan dalam urutan yang ditentukan. Pola ini dapat menghilangkan kondisi ras yang sulit dipecahkan, penanganan pesan yang memusingkan, atau solusi lain untuk mengatasi pesan yang salah diurutkan yang dapat menyebabkan kerusakan.
Sharding Mengarahkan beban ke tujuan logis tertentu untuk menangani permintaan tertentu, memungkinkan kolokasi untuk pengoptimalan. Karena data atau pemrosesan diisolasi ke shard, kerusakan dalam satu shard tetap terisolasi ke shard tersebut.
Strangler Fig 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 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 fungsi. Anda juga dapat menggunakan pola ini sebagai mekanisme kontrol dalam rencana degradasi yang anggun.

Langkah berikutnya

Tinjau pola desain cloud yang mendukung pilar Azure Well-Architected Framework lainnya: