Resiliency (ความยืดหยุ่นทนทาน)
ใน Chapter 12 เราดูความยืดหยุ่นทนทานโดยรวม และผมได้แชร์แนวคิดหลักสี่ข้อที่ต้องพิจารณาเมื่อคิดเรื่องความยืดหยุ่นทนทาน:
Robustness (ความแข็งแกร่ง)
ความสามารถในการดูดซับความปั่นป่วนที่คาดการณ์ได้
Rebound (การฟื้นตัว)
ความสามารถในการฟื้นตัวหลังเหตุการณ์ร้ายแรง
Graceful extensibility (ความสามารถในการขยายอย่างสง่างาม)
เราจัดการกับสถานการณ์ที่ไม่คาดคิดได้ดีแค่ไหน
Sustained adaptability (ความสามารถในการปรับตัวอย่างยั่งยืน)
ความสามารถในการปรับตัวอย่างต่อเนื่องต่อสภาพแวดล้อม ผู้มีส่วนได้ส่วนเสีย และความต้องการที่เปลี่ยนแปลงไป
เมื่อมองโดยรวม สถาปัตยกรรมไมโครเซอร์วิสสามารถช่วยได้ในบางเรื่องเหล่านี้ (โดยเฉพาะ robustness และ rebound) แต่อย่างที่เราเห็นจากรายการนี้ แค่นั้นไม่ได้ทำให้คุณมีความยืดหยุ่นทนทาน ส่วนใหญ่ของการมีความยืดหยุ่นทนทานเป็นเรื่องของพฤติกรรมและวัฒนธรรมของทีมและองค์กร
โดยพื้นฐานแล้ว คุณต้องลงมือทำสิ่งต่างๆ อย่างชัดเจนเพื่อทำให้แอปพลิเคชันของคุณแข็งแกร่งขึ้น Robustness ไม่ได้มาฟรีๆ ไมโครเซอร์วิสให้ตัวเลือกเราในการปรับปรุงความยืดหยุ่นทนทานของระบบ แต่เราต้องเลือกทำมัน ตัวอย่างเช่น เราต้องเข้าใจว่าการเรียกใดๆ ที่เราทำไปยังไมโครเซอร์วิสตัวอื่นอาจล้มเหลวได้ เครื่องอาจตาย และเรื่องแย่ๆ ก็เกิดขึ้นกับ network packet ดีๆ ได้ Stability pattern อย่าง bulkhead, circuit breaker และ time-out ที่ตั้งค่าอย่างเหมาะสม สามารถช่วยได้อย่างมาก