Ketersediaan sistem terdistribusi - 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.

Ketersediaan sistem terdistribusi

Sistem terdistribusi terdiri dari komponen perangkat lunak dan komponen perangkat keras. Beberapa komponen perangkat lunak itu sendiri mungkin merupakan sistem terdistribusi lain. Ketersediaan komponen perangkat keras dan perangkat lunak yang mendasarinya memengaruhi ketersediaan beban kerja Anda yang dihasilkan.

Perhitungan ketersediaan menggunakan MTBF dan MTTR berakar pada sistem perangkat keras. Namun, sistem terdistribusi gagal karena alasan yang sangat berbeda dari perangkat keras. Di mana produsen dapat secara konsisten menghitung waktu rata-rata sebelum komponen perangkat keras habis, pengujian yang sama tidak dapat diterapkan pada komponen perangkat lunak dari sistem terdistribusi. Perangkat keras biasanya mengikuti kurva “bak mandi” tingkat kegagalan, sementara perangkat lunak mengikuti kurva terhuyung-huyung yang dihasilkan oleh cacat tambahan yang diperkenalkan dengan setiap rilis baru (lihat Keandalan Perangkat Lunak.)

Diagram yang menunjukkan tingkat kegagalan perangkat keras dan perangkat lunak

Tingkat kegagalan perangkat keras dan perangkat lunak

Selain itu, perangkat lunak dalam sistem terdistribusi biasanya berubah pada tingkat yang secara eksponensial lebih tinggi daripada perangkat keras. Misalnya, hard drive magnetik standar mungkin memiliki tingkat kegagalan tahunan rata-rata (AFR) 0,93% yang, dalam praktiknya untuk HDD, dapat berarti umur setidaknya 3-5 tahun sebelum mencapai periode keausan, berpotensi lebih lama (lihat Data dan Statistik Hard Drive Backblaze, 2020.) Hard drive tidak berubah secara material selama masa hidup itu, di mana, dalam 3-5 tahun, sebagai contoh, Amazon mungkin menyebarkan lebih dari 450 hingga 750 juta perubahan pada sistem perangkat lunaknya. (Lihat Amazon Builders' Library — Mengotomatiskan penerapan yang aman dan lepas tangan.)

Perangkat keras juga tunduk pada konsep usang yang direncanakan, yaitu memiliki masa pakai bawaan, dan perlu diganti setelah jangka waktu tertentu. (Lihat Konspirasi Bola Lampu Hebat.) Perangkat lunak, secara teoritis, tidak tunduk pada kendala ini, tidak memiliki periode aus dan dapat dioperasikan tanpa batas waktu.

Semua ini berarti bahwa model pengujian dan prediksi yang sama yang digunakan untuk perangkat keras untuk menghasilkan nomor MTBF dan MTTR tidak berlaku untuk perangkat lunak. Ada ratusan upaya untuk membangun model untuk memecahkan masalah ini sejak tahun 1970-an, tetapi semuanya umumnya terbagi dalam dua kategori, pemodelan prediksi dan pemodelan estimasi. (Lihat Daftar model keandalan perangkat lunak.)

Dengan demikian, menghitung MTBF dan MTTR berwawasan ke depan untuk sistem terdistribusi, dan dengan demikian ketersediaan berwawasan ke depan, akan selalu diturunkan dari beberapa jenis prediksi atau perkiraan. Mereka dapat dihasilkan melalui pemodelan prediktif, simulasi stokastik, analisis historis, atau pengujian yang ketat, tetapi perhitungan tersebut bukan jaminan uptime atau downtime.

Alasan mengapa sistem terdistribusi gagal di masa lalu mungkin tidak pernah terulang kembali. Alasan kegagalan di masa depan cenderung berbeda dan mungkin tidak dapat diketahui. Mekanisme pemulihan yang diperlukan mungkin juga berbeda untuk kegagalan masa depan daripada yang digunakan di masa lalu dan membutuhkan waktu yang sangat berbeda.

Selain itu, MTBF dan MTTR adalah rata-rata. Akan ada beberapa varians dari nilai rata-rata ke nilai aktual yang terlihat (standar deviasi, σ, mengukur variasi ini). Dengan demikian, beban kerja mungkin mengalami waktu yang lebih pendek atau lebih lama antara kegagalan dan waktu pemulihan dalam penggunaan produksi aktual.

Karena itu, ketersediaan komponen perangkat lunak yang membentuk sistem terdistribusi masih penting. Perangkat lunak dapat gagal karena berbagai alasan (dibahas lebih lanjut di bagian berikutnya) dan berdampak pada ketersediaan beban kerja. Dengan demikian, untuk sistem terdistribusi yang sangat tersedia, fokus yang sama untuk menghitung, mengukur, dan meningkatkan ketersediaan komponen perangkat lunak harus diberikan untuk perangkat keras dan subsistem perangkat lunak eksternal.

Aturan 2

Ketersediaan perangkat lunak dalam beban kerja Anda merupakan faktor penting dari ketersediaan keseluruhan beban kerja Anda dan harus menerima fokus yang sama dengan komponen lainnya.

Penting untuk dicatat bahwa meskipun MTBF dan MTTR sulit diprediksi untuk sistem terdistribusi, mereka masih memberikan wawasan kunci tentang cara meningkatkan ketersediaan. Mengurangi frekuensi kegagalan (MTBF yang lebih tinggi) dan mengurangi waktu untuk pulih setelah kegagalan terjadi (MTTR yang lebih rendah) keduanya akan mengarah pada ketersediaan empiris yang lebih tinggi.

Jenis kegagalan dalam sistem terdistribusi

Umumnya ada dua kelas bug dalam sistem terdistribusi yang memengaruhi ketersediaan, dinamai Bohrbug dan Heisenbug (lihat “A Conversation with Bruce Lindsay”, ACM Queue vol. 2, no. 8 — November 2004.)

Bohrbug adalah masalah perangkat lunak fungsional berulang. Dengan input yang sama, bug akan secara konsisten menghasilkan output yang salah yang sama (seperti model atom Bohr deterministik, yang padat dan mudah dideteksi). Jenis bug ini jarang terjadi pada saat beban kerja sampai ke produksi.

Heisenbug adalah bug yang bersifat sementara, artinya hanya terjadi dalam kondisi tertentu dan tidak biasa. Kondisi ini biasanya terkait dengan hal-hal seperti perangkat keras (misalnya, kesalahan perangkat sementara atau spesifik implementasi perangkat keras seperti ukuran register), pengoptimalan kompiler dan implementasi bahasa, kondisi batas (misalnya, sementara di luar penyimpanan), atau kondisi balapan (misalnya, tidak menggunakan semaphore untuk operasi multi-threaded).

Heisenbug merupakan sebagian besar bug dalam produksi dan sulit ditemukan karena sulit dipahami dan tampaknya mengubah perilaku atau menghilang ketika Anda mencoba mengamati atau men-debugnya. Namun, jika Anda me-restart program, operasi yang gagal kemungkinan akan berhasil karena lingkungan operasi sedikit berbeda, menghilangkan kondisi yang memperkenalkan Heisenbug.

Dengan demikian, sebagian besar kegagalan dalam produksi bersifat sementara dan ketika operasi dicoba lagi, tidak mungkin gagal lagi. Agar tangguh, sistem terdistribusi harus toleran terhadap kesalahan terhadap Heisenbugs. Kami akan mengeksplorasi bagaimana hal ini dapat dicapai di bagian Meningkatkan sistem terdistribusi MTBF.