Resiliency (ความยืดหยุ่นทนทาน)

ใน Chapter 12 เราดูความยืดหยุ่นทนทานโดยรวม และผมได้แชร์แนวคิดหลักสี่ข้อที่ต้องพิจารณาเมื่อคิดเรื่องความยืดหยุ่นทนทาน:

Robustness (ความแข็งแกร่ง)

ความสามารถในการดูดซับความปั่นป่วนที่คาดการณ์ได้

Rebound (การฟื้นตัว)

ความสามารถในการฟื้นตัวหลังเหตุการณ์ร้ายแรง

Graceful extensibility (ความสามารถในการขยายอย่างสง่างาม)

เราจัดการกับสถานการณ์ที่ไม่คาดคิดได้ดีแค่ไหน

Sustained adaptability (ความสามารถในการปรับตัวอย่างยั่งยืน)

ความสามารถในการปรับตัวอย่างต่อเนื่องต่อสภาพแวดล้อม ผู้มีส่วนได้ส่วนเสีย และความต้องการที่เปลี่ยนแปลงไป

เมื่อมองโดยรวม สถาปัตยกรรมไมโครเซอร์วิสสามารถช่วยได้ในบางเรื่องเหล่านี้ (โดยเฉพาะ robustness และ rebound) แต่อย่างที่เราเห็นจากรายการนี้ แค่นั้นไม่ได้ทำให้คุณมีความยืดหยุ่นทนทาน ส่วนใหญ่ของการมีความยืดหยุ่นทนทานเป็นเรื่องของพฤติกรรมและวัฒนธรรมของทีมและองค์กร

โดยพื้นฐานแล้ว คุณต้องลงมือทำสิ่งต่างๆ อย่างชัดเจนเพื่อทำให้แอปพลิเคชันของคุณแข็งแกร่งขึ้น Robustness ไม่ได้มาฟรีๆ ไมโครเซอร์วิสให้ตัวเลือกเราในการปรับปรุงความยืดหยุ่นทนทานของระบบ แต่เราต้องเลือกทำมัน ตัวอย่างเช่น เราต้องเข้าใจว่าการเรียกใดๆ ที่เราทำไปยังไมโครเซอร์วิสตัวอื่นอาจล้มเหลวได้ เครื่องอาจตาย และเรื่องแย่ๆ ก็เกิดขึ้นกับ network packet ดีๆ ได้ Stability pattern อย่าง bulkhead, circuit breaker และ time-out ที่ตั้งค่าอย่างเหมาะสม สามารถช่วยได้อย่างมาก