ในระดับขนาดใหญ่ ความล้มเหลวเป็นสิ่งที่หลีกเลี่ยงไม่ได้ — เซิร์ฟเวอร์ล่ม เครือข่ายล้มเหลว dependency ไม่พร้อมใช้งาน การออกแบบเพื่อรองรับความล้มเหลวหมายถึงการสร้างระบบที่ ทนทานและกู้คืนจากความล้มเหลวได้อย่างนุ่มนวล แทนที่จะสมมติว่าทุกอย่างทำงานได้ ซึ่งจำเป็นสำหรับระบบที่เชื่อถือได้
ออกแบบเพื่อรองรับความล้มเหลว (แนวคิด)
ASSUME things WILL fail → at scale, failures are NORMAL, not exceptional:
→ servers crash, networks partition, disks fail, dependencies go down, traffic spikes
→ design systems to EXPECT and HANDLE failures gracefully (not assume everything works)
→ "everything fails all the time" → build resilience in.
