Apa definisi dari “ternak bukan binatang peliharaan”?

47

Istilah "perlakukan server Anda seperti ternak bukan hewan peliharaan" telah berkembang pesat dalam beberapa tahun terakhir, terutama ketika diterapkan pada wadah Docker dan Mesin Virtual

Hewan peliharaan vs. Sapi

Apa artinya itu sebenarnya?

Richard Slater
sumber
1
Deskripsi panjang di sini dengan pro / kontra dari masing-masing "model" di sepanjang baris.
Tensibai

Jawaban:

52

Randy Bias mencatat sejarah istilah yang menyatakan bahwa istilah itu mungkin berasal pada 2011 atau 2012 ketika Bill Baker menggunakan analogi ketika menggambarkan strategi arsitektur "peningkatan" vs "peningkatan". Bias mengadopsi ini ke dalam presentasinya tentang pola arsitektur cloud:

Dengan cara lama dalam melakukan sesuatu, kami memperlakukan server kami seperti hewan peliharaan, misalnya Bob server surat. Jika Bob turun, itu semua tangan di atas geladak. CEO tidak bisa mendapatkan emailnya dan ini adalah akhir dunia. Dengan cara baru, server diberi nomor, seperti ternak dalam kelompok. Misalnya, www001 ke www100. Ketika satu server turun, itu diambil kembali, ditembak, dan diganti di telepon.

Bias terus mendefinisikan Hewan sebagai

Server atau pasangan server yang diperlakukan sebagai sistem yang sangat diperlukan atau unik yang tidak pernah dapat dimatikan. Biasanya mereka dibuat secara manual, dikelola, dan "diberi makan tangan". Contohnya termasuk mainframe, server soliter, HA loadbalancers / firewall (aktif / aktif atau aktif / pasif), sistem basis data yang dirancang sebagai master / slave (aktif / pasif), dan sebagainya.

dan ternak sebagai

Array lebih dari dua server, yang dibangun menggunakan alat otomatis, dan dirancang untuk kegagalan, di mana tidak ada satu, dua, atau bahkan tiga server yang tak tergantikan. Biasanya, selama peristiwa kegagalan tidak ada intervensi manusia yang diperlukan karena array menunjukkan atribut "perutean kegagalan" dengan memulai kembali server yang gagal atau mereplikasi data melalui strategi seperti replikasi tiga kali atau pengkodean penghapusan. Contohnya termasuk array server web, multi-master datastore seperti cluster Cassandra, beberapa rak peralatan disatukan dalam cluster, dan hampir semua hal yang seimbang dan multi-master beban.

Pada dasarnya, apa yang Bias dan Baker coba sampaikan adalah harus ada transisi dari bagaimana kita memperlakukan server dari menjadi "Kepingan Salju Unik" dengan nama dan lampiran emosional, ke model di mana jika kita memiliki masalah dengan server kita membuat pengganti dan hancurkan server yang bermasalah.

Akhirnya, mungkin perlu disebutkan bahwa dalam lingkungan yang diatur mengambil server keluar dari belakang dan menembak mungkin tidak optimal. Dalam kasus ini sering menguntungkan untuk "membekukan" server, misalnya menggunakan docker pauseuntuk membekukan suatu wadah. Ini kemudian dapat digunakan untuk melakukan Analisis Penyebab Root sebagai bagian dari Proses Manajemen Masalah atau Masalah.

Richard Slater
sumber
16

Untuk menambah jawaban Richards, umumnya analogi ini membantu dalam hal mempertimbangkan dampak dari hilangnya server.

Jika Anda akan merasa agak tertekan karena kehilangan setiap bagian dari infrastruktur, maka anggaplah sebagai hewan peliharaan (baca antipattern).

Jika Anda merasa cukup nyaman mengetahui bahwa jika salah satu armada berhenti berfungsi tidak akan ada dampak nyata pada operasi, maka Anda berbicara tentang ternak.

Seringkali tergoda untuk menggunakan analogi untuk hanya mengklasifikasikan server Anda, yaitu "node beban kerja kami adalah ternak tetapi penyeimbang beban kami adalah hewan peliharaan" tetapi jatuh ke dalam perangkap itu adalah masalah sebenarnya. Tidak ada tempat untuk hewan peliharaan di lingkungan komputasi modern (mis. Di cloud, pada perangkat keras komoditas, dll.) Jika semua server Anda dianggap sapi, dan mudah diganti, maka Anda dapat mulai melihat hal-hal seperti kekacauan monyet untuk membantu membangun jaminan bahwa infrastruktur Anda benar-benar tangguh.

hvindin
sumber