คำว่า "ปฏิบัติต่อเซิร์ฟเวอร์ของคุณเหมือนวัวไม่ใช่สัตว์เลี้ยง" ได้แพร่กระจายในช่วงไม่กี่ปีที่ผ่านมาโดยเฉพาะอย่างยิ่งเมื่อนำไปใช้กับคอนเทนเนอร์ Docker และเครื่องเสมือน
จริงๆแล้วมันหมายถึงอะไร?
คำว่า "ปฏิบัติต่อเซิร์ฟเวอร์ของคุณเหมือนวัวไม่ใช่สัตว์เลี้ยง" ได้แพร่กระจายในช่วงไม่กี่ปีที่ผ่านมาโดยเฉพาะอย่างยิ่งเมื่อนำไปใช้กับคอนเทนเนอร์ Docker และเครื่องเสมือน
จริงๆแล้วมันหมายถึงอะไร?
คำตอบ:
ประวัติความเป็นมาของคำว่าแรนดี้ไบแอสระบุว่ามันอาจจะเกิดขึ้นในปี 2011 หรือ 2012 เมื่อบิลเบเกอร์ใช้การเปรียบเทียบเมื่ออธิบายถึง "การขยายขนาด" กับ "การขยายขนาด" กลยุทธ์ทางสถาปัตยกรรม อคตินำสิ่งนี้มาใช้ในการนำเสนอของเขาเกี่ยวกับรูปแบบสถาปัตยกรรมคลาวด์:
ในการทำสิ่งต่าง ๆ เราทำกับเซิร์ฟเวอร์ของเราเหมือนสัตว์เลี้ยงเช่น Bob เซิร์ฟเวอร์เมล ถ้าบ็อบลงไปมันเป็นเรื่องของมือบนดาดฟ้า CEO ไม่สามารถรับอีเมลของเขาได้และเป็นจุดสิ้นสุดของโลก ด้วยวิธีใหม่เซิร์ฟเวอร์จะถูกกำหนดหมายเลขเหมือนปศุสัตว์ในฝูง ตัวอย่างเช่น www001 ถึง www100 เมื่อเซิร์ฟเวอร์ตัวใดตัวหนึ่งล้มลงเซิร์ฟเวอร์จะนำกลับมายิงและแทนที่ในบรรทัด
อคติยังคงกำหนดสัตว์เลี้ยงเป็น
เซิร์ฟเวอร์หรือคู่เซิร์ฟเวอร์ที่ถือว่าเป็นระบบที่ขาดไม่ได้หรือเป็นเอกลักษณ์ที่ไม่สามารถหยุดทำงานได้ โดยทั่วไปแล้วพวกเขาจะสร้างจัดการและ“ ป้อนด้วยมือ” ด้วยตนเอง ตัวอย่างเช่นเมนเฟรมคอมพิวเตอร์เซิร์ฟเวอร์โดดเดี่ยว HA loadbalancer / ไฟร์วอลล์ (แอ็คทีฟ / แอ็คทีฟหรือแอ็คทีฟ / พาสซีฟ) ระบบฐานข้อมูลที่ออกแบบมาเป็นมาสเตอร์ / ทาส (แอ็คทีฟ / พาสซีฟ) และอื่น ๆ
และวัวควายเป็น
อาร์เรย์ของเซิร์ฟเวอร์มากกว่าสองเครื่องที่สร้างขึ้นโดยใช้เครื่องมืออัตโนมัติและได้รับการออกแบบมาสำหรับความล้มเหลวโดยที่ไม่มีเซิร์ฟเวอร์ใดเซิร์ฟเวอร์หนึ่งสองหรือสามเครื่องที่ไม่สามารถถูกแทนที่ได้ โดยทั่วไปในระหว่างเหตุการณ์ความล้มเหลวไม่จำเป็นต้องมีการแทรกแซงของมนุษย์ในขณะที่อาเรย์แสดงคุณลักษณะของ "การกำหนดเส้นทางรอบความล้มเหลว" โดยการรีสตาร์ทเซิร์ฟเวอร์ที่ล้มเหลวหรือการจำลองข้อมูลผ่านกลยุทธ์เช่นการจำลองแบบสามครั้ง ตัวอย่างรวมถึงอาร์เรย์ของเว็บเซิร์ฟเวอร์ดาต้าสโตร์หลายหลักเช่นคลัสเตอร์คาสซานดราแร็คเกียร์หลายชุดที่รวมกันเป็นกลุ่มและทุกสิ่งที่มีความสมดุลของโหลดและมัลติมาสเตอร์
โดยพื้นฐานแล้วสิ่งที่ Bias และ Baker พยายามสื่อคือต้องมีการเปลี่ยนจากวิธีที่เราปฏิบัติต่อเซิร์ฟเวอร์จากการ"Unique Snowflakes" ที่มีชื่อและไฟล์แนบทางอารมณ์เป็นแบบจำลองหากเรามีปัญหากับเซิร์ฟเวอร์ที่เราสร้างการแทนที่ และทำลายเซิร์ฟเวอร์ที่มีปัญหา
ในที่สุดอาจเป็นเรื่องที่ควรค่าแก่การกล่าวถึงว่าในสภาพแวดล้อมที่มีการควบคุมดูแลการนำเซิร์ฟเวอร์ออกไปด้านหลังและการถ่ายภาพอาจไม่เหมาะสม ในกรณีเหล่านี้มักจะเป็นประโยชน์ในการ "หยุด" เซิร์ฟเวอร์ตัวอย่างเช่นการใช้docker pause
เพื่อตรึงคอนเทนเนอร์ จากนั้นสามารถใช้เพื่อดำเนินการวิเคราะห์สาเหตุของรูทซึ่งเป็นส่วนหนึ่งของกระบวนการจัดการเหตุการณ์หรือปัญหา
ในการเพิ่มคำตอบของ Richards โดยทั่วไปการเปรียบเทียบนั้นมีประโยชน์ในแง่ของการพิจารณาผลกระทบของการสูญเสียเซิร์ฟเวอร์
หากคุณรู้สึกถึงความทุกข์บางอย่างเกี่ยวกับการสูญเสียโครงสร้างพื้นฐานส่วนบุคคลใด ๆ ให้พิจารณาว่าเป็นสัตว์เลี้ยง (อ่าน antipattern)
ถ้าคุณรู้สึกสบายใจที่รู้ว่าหากกองยานใด ๆ หยุดทำงานจะไม่มีผลกระทบต่อการปฏิบัติงานจริงคุณกำลังพูดถึงวัว
มันมักจะดึงดูดให้ใช้การเปรียบเทียบเพื่อจำแนกเซิร์ฟเวอร์ของคุณนั่นคือ "โหนดงานของเราคือโค แต่โหลดบาลานเซอร์ของเราเป็นสัตว์เลี้ยง" แต่การตกอยู่ในกับดักนั้นเป็นปัญหาอย่างแท้จริง ไม่มีสถานที่สำหรับสัตว์เลี้ยงในสภาพแวดล้อมการคำนวณที่ทันสมัย (เช่นในระบบคลาวด์บนฮาร์ดแวร์ชุดสินค้าเป็นต้น) หากเซิร์ฟเวอร์ทั้งหมดของคุณได้รับการพิจารณาว่าเป็นโคและสามารถเปลี่ยนได้ง่ายคุณสามารถเริ่มมองสิ่งต่าง ๆ เช่น Monkey Chaos สร้างความมั่นใจว่าโครงสร้างพื้นฐานของคุณมีความยืดหยุ่นอย่างแท้จริง