คำจำกัดความของ "วัวไม่ใช่สัตว์เลี้ยง" คืออะไร?


47

คำว่า "ปฏิบัติต่อเซิร์ฟเวอร์ของคุณเหมือนวัวไม่ใช่สัตว์เลี้ยง" ได้แพร่กระจายในช่วงไม่กี่ปีที่ผ่านมาโดยเฉพาะอย่างยิ่งเมื่อนำไปใช้กับคอนเทนเนอร์ Docker และเครื่องเสมือน

สัตว์เลี้ยงกับวัว

จริงๆแล้วมันหมายถึงอะไร?


1
คำอธิบายแบบยาวที่นี่พร้อมข้อดี / ข้อเสียของ "แต่ละรุ่น" ตามแนวเส้น
Tensibai

คำตอบ:


52

ประวัติความเป็นมาของคำว่าแรนดี้ไบแอสระบุว่ามันอาจจะเกิดขึ้นในปี 2011 หรือ 2012 เมื่อบิลเบเกอร์ใช้การเปรียบเทียบเมื่ออธิบายถึง "การขยายขนาด" กับ "การขยายขนาด" กลยุทธ์ทางสถาปัตยกรรม อคตินำสิ่งนี้มาใช้ในการนำเสนอของเขาเกี่ยวกับรูปแบบสถาปัตยกรรมคลาวด์:

ในการทำสิ่งต่าง ๆ เราทำกับเซิร์ฟเวอร์ของเราเหมือนสัตว์เลี้ยงเช่น Bob เซิร์ฟเวอร์เมล ถ้าบ็อบลงไปมันเป็นเรื่องของมือบนดาดฟ้า CEO ไม่สามารถรับอีเมลของเขาได้และเป็นจุดสิ้นสุดของโลก ด้วยวิธีใหม่เซิร์ฟเวอร์จะถูกกำหนดหมายเลขเหมือนปศุสัตว์ในฝูง ตัวอย่างเช่น www001 ถึง www100 เมื่อเซิร์ฟเวอร์ตัวใดตัวหนึ่งล้มลงเซิร์ฟเวอร์จะนำกลับมายิงและแทนที่ในบรรทัด

อคติยังคงกำหนดสัตว์เลี้ยงเป็น

เซิร์ฟเวอร์หรือคู่เซิร์ฟเวอร์ที่ถือว่าเป็นระบบที่ขาดไม่ได้หรือเป็นเอกลักษณ์ที่ไม่สามารถหยุดทำงานได้ โดยทั่วไปแล้วพวกเขาจะสร้างจัดการและ“ ป้อนด้วยมือ” ด้วยตนเอง ตัวอย่างเช่นเมนเฟรมคอมพิวเตอร์เซิร์ฟเวอร์โดดเดี่ยว HA loadbalancer / ไฟร์วอลล์ (แอ็คทีฟ / แอ็คทีฟหรือแอ็คทีฟ / พาสซีฟ) ระบบฐานข้อมูลที่ออกแบบมาเป็นมาสเตอร์ / ทาส (แอ็คทีฟ / พาสซีฟ) และอื่น ๆ

และวัวควายเป็น

อาร์เรย์ของเซิร์ฟเวอร์มากกว่าสองเครื่องที่สร้างขึ้นโดยใช้เครื่องมืออัตโนมัติและได้รับการออกแบบมาสำหรับความล้มเหลวโดยที่ไม่มีเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งสองหรือสามเครื่องที่ไม่สามารถถูกแทนที่ได้ โดยทั่วไปในระหว่างเหตุการณ์ความล้มเหลวไม่จำเป็นต้องมีการแทรกแซงของมนุษย์ในขณะที่อาเรย์แสดงคุณลักษณะของ "การกำหนดเส้นทางรอบความล้มเหลว" โดยการรีสตาร์ทเซิร์ฟเวอร์ที่ล้มเหลวหรือการจำลองข้อมูลผ่านกลยุทธ์เช่นการจำลองแบบสามครั้ง ตัวอย่างรวมถึงอาร์เรย์ของเว็บเซิร์ฟเวอร์ดาต้าสโตร์หลายหลักเช่นคลัสเตอร์คาสซานดราแร็คเกียร์หลายชุดที่รวมกันเป็นกลุ่มและทุกสิ่งที่มีความสมดุลของโหลดและมัลติมาสเตอร์

โดยพื้นฐานแล้วสิ่งที่ Bias และ Baker พยายามสื่อคือต้องมีการเปลี่ยนจากวิธีที่เราปฏิบัติต่อเซิร์ฟเวอร์จากการ"Unique Snowflakes" ที่มีชื่อและไฟล์แนบทางอารมณ์เป็นแบบจำลองหากเรามีปัญหากับเซิร์ฟเวอร์ที่เราสร้างการแทนที่ และทำลายเซิร์ฟเวอร์ที่มีปัญหา

ในที่สุดอาจเป็นเรื่องที่ควรค่าแก่การกล่าวถึงว่าในสภาพแวดล้อมที่มีการควบคุมดูแลการนำเซิร์ฟเวอร์ออกไปด้านหลังและการถ่ายภาพอาจไม่เหมาะสม ในกรณีเหล่านี้มักจะเป็นประโยชน์ในการ "หยุด" เซิร์ฟเวอร์ตัวอย่างเช่นการใช้docker pauseเพื่อตรึงคอนเทนเนอร์ จากนั้นสามารถใช้เพื่อดำเนินการวิเคราะห์สาเหตุของรูทซึ่งเป็นส่วนหนึ่งของกระบวนการจัดการเหตุการณ์หรือปัญหา


16

ในการเพิ่มคำตอบของ Richards โดยทั่วไปการเปรียบเทียบนั้นมีประโยชน์ในแง่ของการพิจารณาผลกระทบของการสูญเสียเซิร์ฟเวอร์

หากคุณรู้สึกถึงความทุกข์บางอย่างเกี่ยวกับการสูญเสียโครงสร้างพื้นฐานส่วนบุคคลใด ๆ ให้พิจารณาว่าเป็นสัตว์เลี้ยง (อ่าน antipattern)

ถ้าคุณรู้สึกสบายใจที่รู้ว่าหากกองยานใด ๆ หยุดทำงานจะไม่มีผลกระทบต่อการปฏิบัติงานจริงคุณกำลังพูดถึงวัว

มันมักจะดึงดูดให้ใช้การเปรียบเทียบเพื่อจำแนกเซิร์ฟเวอร์ของคุณนั่นคือ "โหนดงานของเราคือโค แต่โหลดบาลานเซอร์ของเราเป็นสัตว์เลี้ยง" แต่การตกอยู่ในกับดักนั้นเป็นปัญหาอย่างแท้จริง ไม่มีสถานที่สำหรับสัตว์เลี้ยงในสภาพแวดล้อมการคำนวณที่ทันสมัย ​​(เช่นในระบบคลาวด์บนฮาร์ดแวร์ชุดสินค้าเป็นต้น) หากเซิร์ฟเวอร์ทั้งหมดของคุณได้รับการพิจารณาว่าเป็นโคและสามารถเปลี่ยนได้ง่ายคุณสามารถเริ่มมองสิ่งต่าง ๆ เช่น Monkey Chaos สร้างความมั่นใจว่าโครงสร้างพื้นฐานของคุณมีความยืดหยุ่นอย่างแท้จริง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.