Apakah ada contoh penerapan dan respon efektif terhadap "Monyet Kekacauan"?

15

Jeff Atwood baru-baru ini menulis posting blog tentang implementasi Netflix dari "Chaos Monkey". Ini adalah artikel tingkat yang sangat tinggi. Saya ingin tahu apakah ada yang benar-benar menerapkan teknik ini untuk menguji suatu sistem.

Saya kira apa yang sebenarnya saya coba tanyakan adalah: Strategi apa yang Anda terapkan untuk memastikan arsitektur Anda dapat bertahan sebagai bagian dari sistem crash?

Robotsushi
sumber
1
Dan mungkin, strategi apa yang Anda gunakan untuk menguji arsitektur seperti itu?
rlb.usa
... Yah, saya kira kita sedang menunggu seseorang di tim netflix untuk datang dan menjawab lol ini
Earlz
Saya mungkin akan melemparkan hadiah untuk ini. Bisa memiliki beberapa jawaban yang sangat menarik
Robotsushi
1
Setuju ... Tapi milik programmer, bukan SO. Memilih untuk bermigrasi.

Jawaban:

5

Isolasi dan degradasi yang anggun adalah strategi umum. (Istilah lain yang mungkin Anda lihat yang mirip dengan isolasi adalah decoupling , meskipun saya cenderung melihat bahwa pada skala yang lebih kecil, seperti dalam OOD / P. Konsepnya sama.)

Anda mengisolasi bagian-bagian sistem yang berbeda dari satu sama lain sehingga jika salah satu turun, yang lain masih bisa menanggapi permintaan. Seperti yang dikatakan blog Netflix , jika pencarian tidak berfungsi, streaming akan tetap baik-baik saja. Ini hanya berarti bahwa pencarian dan streaming cukup terpisah sehingga hambatan atau ketidakmampuan satu tidak mempengaruhi yang lain.

Dengan degradasi yang anggun, jika implementasi terbaik dari sesuatu tidak tersedia, Anda memiliki sesuatu yang lain untuk diisi. Sekali lagi dari posting Netflix, mereka memiliki sistem untuk melihat hal-hal yang telah Anda tonton dan sukai dan kemudian menyusun rekomendasi pribadi dari yang lain. hal-hal yang harus diperhatikan. Jika sistem itu mati, mereka kembali menunjukkan rekomendasi hal-hal yang populer secara keseluruhan. Intinya adalah memiliki Rencana B, Rencana C, dll untuk melakukan atau menunjukkan sesuatu ketika Rencana A gagal daripada tidak menunjukkan apa-apa atau kesalahan.

Salah satu contoh umum sisi klien dari degradasi anggun (apakah implementasi biasa atau tidak) melibatkan penggunaan javascript di situs web. Jika javascript browser dinonaktifkan atau tidak tersedia, halaman situs harus tetap beroperasi dengan sukses tanpa itu. Ini mungkin tidak secepat atau licin, tetapi harus tetap berfungsi daripada menjadi tidak dapat digunakan.

Ini adalah ide yang sangat umum. Hampir setiap proyek akan menerapkannya secara berbeda, tergantung pada layanan dan subsistem yang mereka berikan, dan ketergantungan di antara mereka.

Joel B Fant
sumber