Toleransi kesalahan dan isolasi kesalahan - Ketersediaan dan Selanjutnya: Memahami dan Meningkatkan Ketahanan Sistem Terdistribusi AWS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Toleransi kesalahan dan isolasi kesalahan

Ini adalah dua konsep penting ketika kita berpikir tentang ketersediaan. Toleransi kesalahan adalah kemampuan untuk menahan kegagalan subsistem dan mempertahankan ketersediaan (melakukan hal yang benar dalam SLA yang sudah mapan). Untuk menerapkan toleransi kesalahan, beban kerja menggunakan subsistem cadangan (atau redundan). Ketika salah satu subsistem dalam set redundan gagal, yang lain mengambil pekerjaannya, biasanya hampir mulus. Dalam hal ini, suku cadang benar-benar kapasitas cadangan, mereka tersedia untuk mengasumsikan 100% pekerjaan dari subsistem yang gagal. Dengan suku cadang sejati, beberapa kegagalan subsistem diperlukan untuk menghasilkan dampak buruk pada beban kerja.

Isolasi kesalahan meminimalkan ruang lingkup dampak ketika kegagalan memang terjadi. Ini biasanya diimplementasikan dengan modularisasi. Beban kerja dipecah menjadi subsistem kecil yang gagal secara independen dan dapat diperbaiki secara terpisah. Kegagalan modul tidak menyebar di luar modul. Ide ini mencakup baik secara vertikal, di seluruh fungsionalitas yang berbeda dalam beban kerja, dan horizontal, di beberapa subsistem yang menyediakan fungsionalitas yang sama. Modul-modul ini bertindak sebagai wadah kesalahan yang membatasi ruang lingkup dampak selama suatu peristiwa.

Pola arsitektur bidang kontrol, bidang data, dan stabilitas statis secara langsung mendukung penerapan toleransi kesalahan dan isolasi kesalahan. Artikel Perpustakaan Pembangun Amazon Stabilitas statis menggunakan Availability Zones memberikan definisi yang baik untuk istilah-istilah ini dan bagaimana penerapannya untuk membangun beban kerja yang tangguh dan sangat tersedia. Whitepaper ini menggunakan pola-pola ini di bagian Merancang sistem terdistribusi yang sangat tersediaAWS, dan kami juga merangkum definisinya di sini.

  • Control plane — Bagian dari beban kerja yang terlibat dalam membuat perubahan: menambahkan sumber daya, menghapus sumber daya, memodifikasi sumber daya, dan menyebarkan perubahan tersebut ke tempat yang dibutuhkan. Pesawat kontrol biasanya lebih kompleks dan memiliki bagian yang lebih bergerak daripada pesawat data, dan dengan demikian secara statistik lebih mungkin gagal dan memiliki ketersediaan yang lebih rendah.

  • Bidang data — Bagian dari beban kerja yang menyediakan fungsionalitas day-to-day bisnis. Pesawat data cenderung lebih sederhana dan beroperasi pada volume yang lebih tinggi daripada pesawat kontrol, yang mengarah ke ketersediaan yang lebih tinggi.

  • Stabilitas statis — Kemampuan beban kerja untuk melanjutkan operasi yang benar meskipun ada gangguan ketergantungan. Salah satu metode implementasi adalah menghapus dependensi bidang kontrol dari pesawat data. Metode lain adalah menggabungkan dependensi beban kerja secara longgar. Mungkin beban kerja tidak melihat informasi yang diperbarui (seperti hal-hal baru, hal-hal yang dihapus, atau hal-hal yang dimodifikasi) yang seharusnya disampaikan oleh ketergantungannya. Namun, semua yang dilakukannya sebelum ketergantungan menjadi terganggu terus bekerja.

Ketika kita berpikir tentang penurunan beban kerja, ada dua pendekatan tingkat tinggi yang dapat kita pertimbangkan untuk pemulihan. Metode pertama adalah menanggapi gangguan itu setelah itu terjadi, mungkin menggunakan AWS Auto Scaling untuk menambah kapasitas baru. Metode kedua adalah mempersiapkan gangguan tersebut sebelum terjadi, mungkin dengan menyediakan infrastruktur beban kerja secara berlebihan sehingga dapat terus beroperasi dengan benar tanpa memerlukan sumber daya tambahan.

Sistem yang stabil secara statis menggunakan pendekatan yang terakhir. Ini menyediakan kapasitas cadangan untuk tersedia selama kegagalan. Metode ini menghindari pembuatan ketergantungan pada bidang kontrol di jalur pemulihan beban kerja untuk menyediakan kapasitas baru untuk pulih dari kegagalan. Selain itu, penyediaan kapasitas baru untuk berbagai sumber daya membutuhkan waktu. Sambil menunggu kapasitas baru, beban kerja Anda dapat kelebihan beban oleh permintaan yang ada dan mengalami degradasi lebih lanjut, yang menyebabkan “kecoklatan” atau kehilangan ketersediaan total. Namun, Anda juga harus mempertimbangkan implikasi biaya dari penggunaan kapasitas yang telah disediakan sebelumnya terhadap tujuan ketersediaan Anda.

Stabilitas statis menyediakan dua aturan berikutnya untuk beban kerja ketersediaan tinggi.

Aturan 7

Jangan mengambil dependensi pada pesawat kontrol di bidang data Anda, terutama selama pemulihan.

Aturan 8

Gabungkan dependensi secara longgar sehingga beban kerja Anda dapat beroperasi dengan benar meskipun ada gangguan ketergantungan, jika memungkinkan.