הנחת היסוד המסוכנת - הרשת אמינה "ברוב הזמן"

📚 כשהתקשורת נשברת - חלק 1 תקשורת #אי-ודאות
תוכן עניינים

הנחת היסוד המסוכנת - הרשת אמינה “ברוב הזמן”

אחת ההנחות השקטות ביותר במערכות תקשורת - ואחת המסוכנות ביותר - היא ההנחה ש”ברוב הזמן הכול עובד”.

לא נאמרת במפורש, לא נכתבת במסמך ארכיטקטורה, אבל כמעט כל מערכת נשענת עליה.

והיא כמעט תמיד שגויה.

”ברוב הזמן” אינו מושג הנדסי

ברוב הזמן הוא ניסוח אנושי, לא מערכתי.

מערכות אינן חוות זמן כמו בני אדם. הן חוות:

  • קצבים
  • הסתברויות
  • ותלות בין אירועים

כשל שמתרחש ב-0.1% מהזמן אינו “נדיר” אם המערכת מטפלת במיליוני בקשות ביום.

בסקייל, זניח הופך לשגרה.

למה הרשת אף פעם לא באמת אמינה

רשת אמיתית מורכבת מ:

  • קישורים
  • תורים
  • נתיבים משתנים
  • ורכיבים עצמאיים עם חיים משלהם

אין נקודה אחת שבה “הכול תקין”. יש רק רגעים שבהם לא רואים את הכשל.

Latency עולה ויורד, Packets נעלמים וחוזרים, ותורים מתמלאים בלי להכריז על כך.

הרשת לא נשברת - היא מתנדנדת.

הבעיה אינה הכשל - אלא ההנחה

כשלי רשת אינם הבעיה המרכזית. הבעיה היא שמערכות רבות אינן מתוכננות לצפות להם.

הנחות נפוצות:

  • אם לא קיבלנו שגיאה - הכול בסדר
  • אם הבקשה איטית - זו בעיה זמנית
  • אם זה עובד עכשיו - זה יעבוד גם בעוד רגע

אלו הנחות פסיכולוגיות, לא הנדסיות.

כשל חלקי הוא ברירת המחדל

ברשת:

  • חלק מהמערכת תמיד בפיגור
  • חלק תמיד בעומס
  • וחלק תמיד מתאושש ממשהו

אין רגע של שלמות.

מערכת בריאה אינה כזו שאין בה כשל - אלא כזו שמתנהגת בצורה צפויה גם כשהכשל כבר כאן.

המשל

אפשר לחשוב על כביש בין-עירוני.

אין שעה ביום שבה אין האטה איפשהו: עבודות, תאונה קלה, עומס רגעי.

מי שמתכנן נסיעה בהנחה שהכביש “פנוי ברוב הזמן” - יגיע לפעמים בזמן, ולפעמים באיחור בלי להבין למה.

מי שמתכנן בהנחה שתמיד יש חיכוך - מתכנן אחרת.

ההשלכה המערכתית

הנחת אמינות מובילה ל:

  • Timeouts אגרסיביים מדי
  • Retries לא מבוקרים
  • ותכנון שמתפרק בקצה

לעומת זאת, תכנון שמניח חוסר אמינות:

  • מגביל נזק
  • בולם תגובות שרשרת
  • ומייצר יציבות גם תחת לחץ

נקודת המוצא החדשה

הסדרה המתקדמת הזו יוצאת מהנחה אחת בלבד:

הרשת אינה אמינה - וגם לא תהיה.

כל השאלות הבאות - Timeouts, Retries, Backpressure, Consistency - נובעות מההנחה הזו.

בפוסט הבא נצלול להחלטה הראשונה שנולדת ממנה: איך קובעים Timeout - ולמה זו אחת ההחלטות הכי לא מדעיות במערכת.

תגובות