Apa perbedaan antara ketahanan dan toleransi kesalahan?

12

Sistem / program / algoritma terdistribusi / ... sering digambarkan dengan predikat kuat atau toleran terhadap kesalahan .

Apa bedanya?


Detail:

Ketika saya google untuk + robust + "toleran terhadap kesalahan", saya hanya mendapatkan dua hit, keduanya tidak membantu.

Ketika saya menggunakan istilah Google, saya menemukan banyak makalah yang memiliki kedua istilah dalam judulnya. Sayangnya, mereka tidak secara tepat mendefinisikan istilah :( Tapi karena mereka menggunakan kedua istilah tersebut, tampaknya tidak ada yang menyiratkan yang lain.

DaveFar
sumber
Ya, itu adalah salah satu hal pertama yang saya baca untuk mencari tahu maknanya. Sayangnya, keduanya menggambarkan hal yang sama pada tingkat abstrak, sementara tidak merujuk ke yang lain. Itu sebabnya saya bertanya di sini.
DaveFar

Jawaban:

33

Keduanya menggambarkan konsistensi perilaku aplikasi, tetapi "ketahanan" menggambarkan respons aplikasi terhadap inputnya , sementara "toleransi kesalahan" menggambarkan respons aplikasi terhadap lingkungannya .

Sebuah aplikasi kuat ketika dapat bekerja secara konsisten dengan data yang tidak konsisten. Sebagai contoh: aplikasi peta kuat ketika dapat mengurai alamat dalam berbagai format dengan berbagai kesalahan ejaan dan mengembalikan lokasi yang bermanfaat. Pemutar musik kuat ketika dapat melanjutkan decoding MP3 setelah menemukan bingkai cacat. Editor gambar kuat ketika dapat memodifikasi gambar dengan metadata EXIF ​​tertanam yang mungkin tidak dikenali - terutama jika dapat membuat perubahan pada gambar tanpa merusak data EXIF.

Aplikasi tahan terhadap kesalahan saat aplikasi dapat bekerja secara konsisten di lingkungan yang tidak konsisten. Aplikasi database toleran terhadap kesalahan saat dapat mengakses pecahan alternatif saat primer tidak tersedia. Aplikasi web toleran terhadap kesalahan saat dapat melanjutkan menangani permintaan dari cache bahkan ketika host API tidak dapat dijangkau. Subsistem penyimpanan toleran terhadap kesalahan ketika dapat mengembalikan hasil yang dihitung dari paritas ketika anggota disk sedang offline.

Dalam kedua kasus, aplikasi diharapkan tetap stabil, berperilaku seragam, menjaga integritas data, dan memberikan hasil yang berguna bahkan ketika kesalahan terjadi. Tetapi ketika mengevaluasi ketahanan, Anda mungkin menemukan kriteria yang melibatkan data, sedangkan ketika mengevaluasi toleransi kesalahan, Anda akan menemukan kriteria yang melibatkan waktu aktif.

Satu tidak selalu mengarah ke yang lain. Aplikasi pengenalan suara seluler bisa sangat kuat, memberikan kemampuan luar biasa untuk mengenali ucapan secara konsisten dalam berbagai aksen regional dengan sejumlah besar kebisingan latar belakang. Tetapi jika itu tidak berguna tanpa koneksi data seluler yang cepat, itu tidak terlalu toleran terhadap kesalahan. Demikian pula, aplikasi penerbitan web bisa sangat toleran terhadap kesalahan, dengan banyak redudansi di setiap level, mampu kehilangan seluruh pusat data tanpa gagal, tetapi jika menjatuhkan tabel pengguna dan crash saat pertama kali seseorang mendaftar dengan tanda kutip di nama belakang mereka , itu tidak kuat sama sekali.

Jika Anda mencari literatur ilmiah untuk membantu menggambarkan perbedaan, Anda mungkin mencari di domain tertentu yang menggunakan perangkat lunak, daripada perangkat lunak secara umum. Penelitian aplikasi terdistribusi mungkin tanah subur untuk kriteria toleransi kesalahan, dan Google telah menerbitkan beberapa penelitian mereka yang mungkin relevan. Penelitian pemodelan data cenderung menjawab pertanyaan tentang ketahanan, karena para ilmuwan khususnya tertarik pada sifat ketahanan yang menghasilkan hasil yang dapat direproduksi. Anda mungkin dapat menemukan makalah yang menjelaskan aplikasi statistik yang mungkin bermanfaat, seperti dalam pemodelan iklim, pemodelan propagasi RF, atau pengurutan genom. Anda juga akan menemukan insinyur yang mendiskusikan "desain yang kuat" dalam hal-hal seperti sistem kontrol.

Whitepaper Sistem File Google menjelaskan pendekatan mereka terhadap masalah toleransi kesalahan, yang umumnya melibatkan asumsi bahwa kegagalan komponen adalah hal yang rutin sehingga aplikasi harus beradaptasi dengan mereka:

Proyek ini untuk kelas di Rutgers mendukung definisi berorientasi "kegagalan komponen" tentang "toleransi kesalahan":

Ada banyak makalah tentang "pemodelan kuat XYZ", tergantung pada bidang yang Anda selidiki. Sebagian besar akan menggambarkan kriteria mereka untuk "kuat" secara abstrak, dan Anda akan menemukan semuanya berkaitan dengan bagaimana model berurusan dengan input.

Laporan singkat dari ilmuwan iklim NASA ini menggambarkan ketahanan sebagai kriteria untuk mengevaluasi model iklim:

Makalah ini dari seorang peneliti MIT meneliti aplikasi protokol nirkabel, domain di mana toleransi kesalahan dan ketahanan tumpang tindih, tetapi penulis menggunakan "kuat" untuk menggambarkan aplikasi, protokol, dan algoritma, sementara mereka menggunakan "toleransi kesalahan" dalam merujuk pada topologi dan komponen:

Johnnyb
sumber
0

Saya sangat suka jawaban @ johnnyb dan mendukungnya untuk definisi yang tajam. Tetapi setelah bekerja di lapangan selama beberapa dekade, saya mengenali cara lain (yang kurang formal dan tepat) yang sering digunakan istilah-istilah ini:

Sebagai poin informal sepanjang rangkaian dari "tidak dapat diandalkan" ke "sangat dapat diandalkan."

Tidak ada sistem, aplikasi, atau layanan yang dapat menjamin itu akan selalu dan selamanya di tempat kerja ("tersedia terus menerus" atau "tersedia secara permanen"). "Toleransi kesalahan" telah lama menjadi penghalang bagi "kami telah melakukan segala yang dimungkinkan secara manusiawi dengan teknologi saat ini untuk memastikan hal ini terus berjalan dengan baik."

Kata-kata seperti "kuat," "mengeras," dan "sangat tersedia" digunakan sebagai tonggak yang lebih lembut menuju tujuan operasi berkelanjutan. Mereka mencerminkan peningkatan tingkat upaya, investasi, dan kepercayaan diri.

Karena istilah-istilah ini digunakan secara informal, tidak ada keseluruhan pemesanan kanonik. "Sangat tersedia" biasanya merupakan klaim yang kuat, tepat di bawah "resilien kesalahan" atau "toleran kesalahan." Tetapi apakah "keras" lebih baik dari "kuat"? Atau sebaliknya? Itu tergantung pada konteksnya. Ini juga sering digunakan sebagai klaim pemasaran produk, dengan segala kesombongan dan ketidaksengajaan yang disengaja.

Biasanya organisasi yang bekerja untuk mencapai tujuan-tujuan ini memiliki perkembangan mereka sendiri yang disepakati secara internal, biasanya setidaknya secara kasar terkait dengan tujuan / hasil proyek dan metrik eksternal seperti "tiga sembilan" atau "enam sembilan."

@johnnyb juga menyentuh perbedaan kritis: Perbedaan antara status platform naik / turun (ketersediaan) di satu sisi, dan atribut algoritma, aplikasi, atau layanan di sisi lain.

Saya katakan "atribut" karena ada banyak: kinerja, kebenaran, dan ketidakteraturan hanya beberapa yang utama. Apakah sistem tersedia dan benar jika itu beroperasi pada hanya 10% dari kinerja yang dinilai? Tidak menurut pemilik bisnis jika ini musim yang sibuk! Tidak ada kebajikan besar dalam suatu sistem yang benar-benar tidak pernah surut, namun itu juga sering memberikan jawaban yang salah. Akhirnya, apakah sistem analisis data berjalan "benar" jika variasi input 0,2% memberikan jawaban yang berbeda 3,400%? Mungkin ... tapi itu akan menjadi model yang agak berubah-ubah dan tidak memuaskan bagi banyak orang. Saya tidak akan membahas daftar atribut yang diperluas, tetapi integritas data, keamanan data, privasi data, dan masalah lainnya tentang kebenaran dan keamanan adalah masalah umum. (Jika Anda adalah organisasi atau lembaga pemerintah yang sangat besar, Anda semakin khawatir tentang mempertahankan atribut-atribut itu tidak hanya selama beberapa tahun atau siklus produk, tetapi selama beberapa dekade atau bahkan mungkin berabad-abad. Belum ada arsitektur, proses, atau pendekatan yang terbukti untuk mencapai ini.)

Variasi yang mungkin antara "berjalan dan berjalan" dan "melakukan apa yang kita inginkan" - dan bagaimana menentukan, mengukur, dan mencegah varian semacam itu - telah lama menjadi tantangan, bahkan setelah redundansi, pengerasan, dan langkah-langkah lain menuju kesalahan- toleransi telah diambil. Dan dalam penggunaan informal, "menjalankan" dan berbagai bentuk "berjalan seperti yang saya inginkan" digabungkan, tanpa semua perbedaan yang jelas yang diinginkan seseorang.

Jonathan Eunice
sumber