Design for Failure - כשתקלה אינה הפתעה
Design for Failure - כשתקלה אינה הפתעה
מערכות התחלתיות מבוססות על כוונה טובה: שהכול יעבוד. שהרכיבים יהיו יציבים. שתקלות יהיו חריגות.
מערכות בוגרות מתחילות מהנחה אחרת לגמרי: דברים ישברו.
לא אולי. לא “אם”. אלא מתי, איפה, ואיך המערכת תגיב.
לזה קוראים Design for Failure.
מה זה בעצם Design for Failure?
Design for Failure הוא עיקרון תכנוני שבו לא מנסים למנוע כל כשל, אלא מניחים שכשלים יתרחשו - ומתכננים את המערכת כך שהיא תמשיך לתפקד למרות זאת.
איפה טועים בדרך כלל?
טועים כשמתכננים מערכות סביב התרחיש האידאלי:
- כל השירותים זמינים
- זמני תגובה סבירים
- נתונים עקביים
- חיבורים יציבים
ואז, כשמשהו נשבר:
- הכול נתקע
- תקלת משנה גוררת קריסה רחבה
- קשה להבין מה קרה ולמה
הבעיה אינה בכשל - אלא בכך שהמערכת לא ידעה לחיות איתו.
המשל
דמיינו עיר שמתוכננת מתוך הנחה שלעולם לא יהיו פקקים.
אין מעקפים. אין תחבורה חלופית. אין ניתוב עומסים.
ביום שבו כביש אחד נסגר - כל העיר משותקת.
עיר בנויה ומבוססת אינה מונעת תאונות. היא בנויה כך שתאונה אחת לא משביתה את הכול.
איך נראית מערכת שמתוכננת לכשל?
מערכת כזו:
- מפרידה בין רכיבים כך שכשל לא יתפשט
- מאפשרת כשל חלקי במקום קריסה מלאה
- מזהה כשלים מהר ומגיבה בצורה צפויה
המטרה אינה אפס תקלות - אלא התנהגות נשלטת בזמן תקלה.
טיפ מחשבתי
הבדל עמוק בין מערכת צעירה לבוגרת הוא זה:
מערכת צעירה שואלת: “איך מוודאים שזה לא יישבר?”
מערכת בוגרת שואלת: “מה קורה כשזה נשבר - ואיך מגבילים את הנזק?”
זו לא פסימיות. זו אחריות הנדסית.
סיכום
Design for Failure אינו ויתור על איכות, אלא הכרה במציאות.
מערכות חזקות אינן אלו שלא נשברות לעולם, אלא אלו שיודעות להישבר בצורה מבוקרת, להתאושש מהר, ולהמשיך קדימה - גם כשהעולם לא משתף פעולה.