Apa itu Monyet Kekacauan? Kejuruteraan kekacauan dijelaskan

Merintis keluar dari dewan Netflix semasa peralihannya dari mengedarkan DVD ke membina sistem awan yang diedarkan untuk streaming video, Chaos Monkey memperkenalkan prinsip kejuruteraan yang telah dipeluk oleh organisasi pembangunan perisian dari semua bentuk dan saiz: iaitu, dengan sengaja memecahkan sistem anda boleh belajar menjadikan mereka lebih tahan.

Menurut catatan blog Netflix yang asli mengenai topik itu, yang diterbitkan pada bulan Julai 2011 oleh Yury Izrailevsky, pengarah infrastruktur awan dan sistem ketika itu, dan Ariel Tseitlin, pengarah penyelesaian awan di syarikat penstriman, Chaos Monkey dirancang untuk menonaktifkan kejadian pengeluaran secara rawak pada infrastruktur Perkhidmatan Web Amazon-nya, sehingga memperlihatkan kelemahan yang dapat dihilangkan oleh jurutera Netflix dengan membina mekanisme pemulihan automatik yang lebih baik.

Nama yang menarik itu berasal dari "idea melepaskan monyet liar dengan senjata di pusat data anda (atau wilayah awan) untuk menembak kejadian secara rawak dan mengunyah kabel - sementara kami terus melayani pelanggan kami tanpa gangguan," catatan blog menyatakan.

Dalam praktiknya ini akan melibatkan aplikasi sederhana "memilih contoh secara acak dari setiap kluster, dan pada suatu ketika selama waktu perniagaan, matikan tanpa peringatan. Ini akan dilakukan ini setiap hari kerja, ”seperti yang diperincikan oleh bekas jurutera Netflix Nora Jones dan Casey Rosenthal dalam buku komprehensif mereka mengenai topik ini, Chaos Engineering , yang diterbitkan oleh O'Reilly Media.

Ideanya ialah dengan mengetahui di mana tempat paling lemah anda, jurutera dapat menetapkan pencetus automatik untuk mengatasi masalah, menyelamatkan mereka pada waktu tengah malam jika ada yang tidak kena. Chaos Monkey sejak itu telah berkembang menjadi pelbagai prinsip kekacauan, di bawah panji kejuruteraan huru-hara.

Chaos Monkey di Netflix

Chaos Monkey tumbuh dari usaha kejuruteraan di Netflix sekitar tahun 2010, ketika Greg Orzell - sekarang bekerja di GitHub milik Microsoft - ditugaskan untuk membangun ketahanan ke dalam seni bina berasaskan awan baru syarikat.

"Cara saya berfikir tentang Chaos Monkey bukanlah kejayaan besar dalam bidang kejuruteraan," kata Orzell. "Nilai yang dibawanya adalah perubahan dalam pola pikir yang sangat penting ketika kami mulai dari pengiriman DVD ke streaming melalui internet."

Pada hari-hari awal, jurutera Netflix memperkenalkan pelbagai gangguan dan masalah ke dalam sistem menggunakan "Simian Army" alat sumber terbuka, masing-masing memperhitungkan jenis kegagalan tertentu, bermula dengan Chaos Monkey mengeluarkan kluster AWS.

Tentera asal (sekarang kebanyakannya bersara untuk memilih alat baru) termasuk orang-orang seperti Latency Monkey, yang akan menyebabkan kelewatan buatan ke lapisan komunikasi pelayan pelanggan RESTful, dan Doctor Monkey, yang akan menggunakan pemeriksaan kesihatan yang dijalankan pada setiap kejadian , serta memantau tanda-tanda kesihatan luaran yang lain (misalnya beban CPU) untuk mengesan kejadian tidak sihat dan mengeluarkannya dari perkhidmatan jika diperlukan.

Chaos Kong membawa Chaos Monkey ke tahap seterusnya dengan mensimulasikan gangguan ke seluruh zon ketersediaan AWS. "Sangat jarang Kawasan AWS menjadi tidak tersedia, tetapi memang berlaku," catatan blog Netflix dari 2015 menggariskan. 

"Dengan menjalankan eksperimen secara berkala yang mensimulasikan pemadaman Regional, kami dapat mengenal pasti kelemahan sistemik lebih awal dan memperbaikinya," lanjut catatan itu. "Ketika US-EAST-1 benar-benar tidak dapat digunakan, sistem kami sudah cukup kuat untuk menangani kegagalan lalu lintas."

Seperti yang digariskan oleh Jones dan Rosenthal dalam buku mereka, membiarkan Chaos Kong kehilangan infrastruktur adalah "perselingkuhan putih dengan" ruang perang "yang dipasang untuk memantau semua aspek perkhidmatan streaming, dan ia berlangsung berjam-jam."

Dua tahun kemudian, pada bulan Julai 2017, Netflix memperkenalkan ChAP, Chaos Automation Platform, yang "menginterogasi saluran penyebaran untuk perkhidmatan yang ditentukan pengguna. Ia kemudian melancarkan kumpulan percubaan dan kawalan perkhidmatan itu, dan mengarahkan sedikit lalu lintas ke masing-masing, ”kata catatan blog.

Prinsip kejuruteraan kekacauan

Amalan Chaos Monkey asas telah berkembang dengan cepat, dengan penyebaran yang lebih besar dan lebih besar melalui Chaos Kong, menjadi apa yang kemudian diformalkan sebagai kejuruteraan kekacauan. Netflix tidak membina pasukan kejuruteraan kekacauan formal sehingga 2015. Pasukan itu diketuai oleh Bruce Wong, kini pengarah kejuruteraan di Stitch Fix.

Prinsip-prinsip kejuruteraan kekacauan telah disusun secara formal oleh beberapa pengarang asli Chaos Monkey, yang mendefinisikan praktik ini sebagai: "Disiplin bereksperimen pada suatu sistem untuk membangun kepercayaan pada kemampuan sistem untuk menahan keadaan yang bergolak dalam produksi."

Dalam praktiknya ini berbentuk proses empat langkah:

  1. Mendefinisikan "keadaan mantap" sistem untuk menetapkan garis dasar untuk tingkah laku normal.
  2. Hipotesiskan bahawa keadaan stabil ini akan berterusan dalam kumpulan kawalan dan kumpulan eksperimen.
  3. Memperkenalkan pemboleh ubah yang mencerminkan peristiwa dunia nyata seperti pelayan yang mengalami kerosakan, cakera keras yang tidak berfungsi, atau sambungan rangkaian yang terputus.
  4. Cuba salahkan hipotesis dengan mencari perbezaan antara kumpulan kawalan dan kumpulan eksperimen.

Sekiranya keadaan stabil sukar terganggu, anda mempunyai sistem yang mantap; jika ada kelemahan maka anda perlu menyelesaikan dan memperbaiki.

"Dalam lima tahun sejak 'The Principles' diterbitkan, kami telah melihat kejuruteraan huru-hara berkembang untuk menghadapi cabaran baru dalam industri baru," kata Jones dan Rosenthal. "Prinsip dan landasan praktik ini pasti akan terus berkembang seiring dengan adopsi yang berkembang melalui industri perisian dan ke bidang baru."

Kejuruteraan kekacauan dengan Chaos Monkey

Untuk menjalankan versi sumber terbuka Chaos Monkey, sistem anda harus memenuhi beberapa prasyarat tertentu, seperti yang digariskan di GitHub.

Chaos Monkey tidak berfungsi sebagai perkhidmatan, jadi anda harus menyiapkan cron job seperti yang digariskan di halaman GitHub, yang kemudian memanggil Chaos Monkey sekali dalam seminggu untuk membuat jadual penamatan.

Untuk menggunakan versi Chaos Monkey ini, anda mesti menggunakan Netflix sendiri, sumber terbuka, platform penyampaian berterusan, Spinnaker, yang dapat membatasi kemampuan organisasi tertentu untuk menggunakan kaedah ini. Chaos Monkey juga memerlukan pangkalan data yang serasi dengan MySQL, versi 5.6 atau lebih baru.

Pemilik perkhidmatan menetapkan konfigurasi Chaos Monkey mereka melalui Spinnaker. Chaos Monkey bekerja melalui Spinnaker untuk mendapatkan maklumat mengenai bagaimana perkhidmatan digunakan dan menghentikan keadaan - mesin maya atau kontena - secara rawak pada frekuensi dan jadual yang anda tentukan.

Sudah tentu, melaksanakan Chaos Monkey hanyalah permulaan tugas yang sukar dan kompleks untuk menyelesaikan masalah ketahanan sistem. Chaos Monkey hanya mengetahui kelemahan dalam sistem; kemudian bergantung kepada pasukan kejuruteraan atau saintis sistem untuk mengenal pasti punca mereka dan mencari jalan keluar.

"Perkakas itu sendiri tidak mahal, tetapi pelaburan yang harus anda lakukan untuk bertindak balas terhadap perkakas itu," seperti yang dinyatakan oleh Orzell. Berkomitmen untuk membuat kejuruteraan huru-hara juga memerlukan peralihan sumber dari membina ciri baru untuk meningkatkan daya tahan. "Setiap perniagaan berada pada titik yang berbeda pada spektrum itu dan mereka masing-masing harus memutuskan berapa banyak panggilan ke atas atau ke bawah di ruang itu," tambahnya.

Jones dan Rosenthal mengatakan bahawa pada hari-hari awal, jurutera Netflix "menerima banyak tolakan dari institusi kewangan khususnya."

Walaupun taruhannya lebih tinggi bagi bank, mereka masih mengalami gangguan, jadi dengan menerapkan strategi proaktif seperti kejuruteraan kekacauan untuk memahami risiko untuk mencegah hasil yang besar dan tidak terkawal, "banyak organisasi tersebut mengubah pola pikir mereka, dengan Capital One lebih awal anak angkat, seperti yang diperincikan dalam buku ini.

Sumber kejuruteraan kekacauan

Sekali lagi, buku terbaru dan pasti mengenai topik ini adalah Chaos Engineering oleh bekas jurutera Netflix Nora Jones dan Casey Rosenthal, yang diterbitkan pada bulan April 2020, yang membina banyak karya yang penulis dan yang lain, disusun dalam buku 2017 Chaos Engineering . Untuk gambaran keseluruhan yang lebih praktikal, lihat Kejuruteraan Kekacauan Pembelajaran Russ Miles .

Netflix menyediakan banyak sumber mengenai topik di GitHub, termasuk tutorial, banyak dokumentasi, penghitung ralat, alat pemadaman, dan alat penyahsulitan.

Gremlin - penyedia alat komersil untuk menjalankan eksperimen kejuruteraan kekacauan - menawarkan sekumpulan sumbernya sendiri yang lengkap, yang tersedia secara percuma dalam talian dan dalam format PDF. Syarikat ini juga menyokong pelbagai usaha masyarakat termasuk Chaos Conf dan saluran Slack.

O'Reilly juga mempunyai banyak sumber, termasuk senarai main buku dan video yang berguna mengenai topik ini.