Singkatnya, haruskah kita merancang kematian ke dalam program, proses, dan utas pada tingkat rendah, untuk kebaikan sistem secara keseluruhan?
Kegagalan terjadi. Proses mati. Kami merencanakan bencana dan sesekali pulih dari itu. Tetapi kami jarang merancang dan mengimplementasikan program kematian yang tidak dapat diprediksi. Kami berharap bahwa uptime layanan kami selama kami peduli untuk tetap beroperasi.
Contoh makro dari konsep ini adalah Netflix's Chaos Monkey , yang secara acak mengakhiri instance AWS dalam beberapa skenario. Mereka mengklaim bahwa ini telah membantu mereka menemukan masalah dan membangun sistem yang lebih berlebihan.
Yang saya bicarakan adalah level yang lebih rendah. Idenya adalah untuk proses lama secara tradisional untuk secara acak keluar. Ini harus memaksa redundansi ke dalam desain dan pada akhirnya menghasilkan sistem yang lebih tangguh.
Apakah konsep ini sudah memiliki nama? Apakah sudah digunakan di industri?
SUNTING
Berdasarkan komentar dan jawaban, saya khawatir saya tidak jelas dalam pertanyaan saya. Untuk kejelasan:
- ya, maksud saya secara acak,
- ya, maksud saya dalam produksi, dan
- tidak, tidak hanya untuk pengujian.
Untuk menjelaskan, saya ingin menggambar analogi dengan organisme multiseluler.
Di alam, organisme terdiri dari banyak sel. Sel-sel bercabang sendiri untuk membuat redundansi, dan mereka akhirnya mati. Tetapi harus selalu ada sel yang cukup dari jenis yang tepat bagi organisme untuk berfungsi. Sistem yang sangat berlebihan ini juga memfasilitasi penyembuhan saat terluka. Sel-sel mati sehingga organisme hidup.
Memasukkan kematian acak ke dalam suatu program akan memaksa sistem yang lebih besar untuk mengadopsi strategi redundansi agar tetap layak. Apakah strategi yang sama ini membantu sistem tetap stabil dalam menghadapi jenis kegagalan lain yang tidak dapat diprediksi?
Dan, jika ada yang mencoba ini, apa namanya? Saya ingin membaca lebih lanjut tentang itu jika sudah ada.