למה Resource Lifecycle חשוב יותר מאלגוריתם
למה Resource Lifecycle חשוב יותר מאלגוריתם
אלגוריתמים מקבלים הרבה תשומת לב. מורכבות, יעילות, חוכמה.
אבל במערכות אמיתיות, מה שמפיל אותן לרוב הוא לא אלגוריתם גרוע - אלא ניהול משאבים גרוע.
דליפה קטנה, לאורך זמן, הורסת מערכת גדולה.
מה זה בעצם Resource Lifecycle
Resource lifecycle הוא הסיפור של:
- חיבור
- שימוש
- ניתוק
- וניקוי
לא רק מה המערכת עושה, אלא כמה זמן היא מחזיקה דברים פתוחים.
חיבור שנפתח ולא נסגר. אובייקט שנשאר בזיכרון. thread שלא חוזר ל-pool. socket שמחכה לנצח.
כל אחד מהם קטן. ביחד - הם מצטברים.
למה מערכות נופלות לאט
זו הסיבה שמערכות כמעט אף פעם לא “נופלות מיד”.
הן נופלות לאט.
בהתחלה:
- הכול עובד
- הביצועים סבירים
- ואין שגיאות ברורות
ואז:
- latency מתחיל לעלות
- timeouts מתרבים
- והתנהגות הופכת לא יציבה
לא בגלל שינוי בקוד, אלא בגלל משאבים שלא חזרו.
Timeout כמנגנון ניקוי
timeouts הם דוגמה קריטית.
Timeout הוא לא אופטימיזציה. הוא מנגנון ניקוי.
הוא אומר: “אם משהו לא הסתיים בזמן - משחררים וממשיכים”.
בלי timeouts:
- חיבורים נתקעים
- תורים מתמלאים
- ומשאבים ננעלים
המערכת לא מתה - היא נחנקת.
איך מודדים מערכת יציבה
מערכות יציבות לא נמדדות לפי כמה הן חכמות, אלא לפי כמה הן יודעות לשחרר.
חיבור, ניתוק, ניקוי, timeout - אלה לא פרטים שוליים.
אלה קווי החיים של המערכת.
השורה התחתונה
כי אלגוריתם קובע איך המערכת עובדת עכשיו.
Resource lifecycle קובע אם היא תעבוד גם מחר.