למה "רק נוסיף Cache" הוא דגל אדום
למה “רק נוסיף Cache” הוא דגל אדום
כשמערכת איטית, אחת ההצעות הראשונות שעולות היא: “בואו נוסיף cache”.
לפעמים זה באמת עוזר. אבל הרבה פעמים - זו נורת אזהרה.
כי cache הוא פלסטר. לא תרופה.
מה Cache לא פותר
Cache מאיץ גישה לנתונים שכבר היו כאן קודם. הוא לא פותר:
- לוגיקה איטית
- תלות מיותרת
- עומס לא מבוקר
- או זרימה בעייתית במערכת
הוא פשוט מסתיר אותם - לזמן מה.
מתי Cache הוא כלי נכון
יש מצבים שבהם cache הוא כלי נכון:
- נתונים שקוראים אותם הרבה ולא משתנים לעיתים קרובות
- חישוב יקר שהתוצאה שלו יציבה
- עומס קריאה ברור ומוכר
במקרים כאלה, cache חוסך עבודה אמיתית. הוא משפר ביצועים בלי לשנות התנהגות.
אבל אלה לא המקרים הבעייתיים.
מתי Cache הוא דגל אדום
הדגל האדום מופיע כש-cache מוצע כתגובה כללית:
- “זה איטי? נוסיף cache”
- “יש עומס? נשים cache מקדימה”
- “לא ברור למה זה נתקע? cache יעזור”
כאן cache כבר לא פותר בעיה - הוא מטשטש אותה.
תלות סמויה בהתנהגות
הסכנה הגדולה היא ש-cache יוצר תלות סמויה בהתנהגות.
אחרי שמוסיפים cache:
- המערכת “עובדת” כל עוד הוא חם
- ההתנהגות האמיתית מופיעה רק ב-cache miss
- ותקלות קורות דווקא ברגעים חריגים
פתאום:
- restart קטן מרגיש כמו אסון
- שינוי תצורה שובר ביצועים
- ועומס רגעי גורר התנהגות לא צפויה
לא בגלל שהמערכת גרועה - אלא כי היא למדה להישען על cache.
הפגיעה ביציבות
Cache לא מבוקר פוגע גם ביציבות.
כי cache:
- מוסיף state
- מוסיף תזמון
- ומוסיף מורכבות של פינוי, עקביות ותוקף
וכשלא ברור:
- מי תלוי ב-cache
- מה קורה כשהוא מתרוקן
- ואיך המערכת מתנהגת בלעדיו
הביצועים אולי משתפרים, אבל היכולת להבין ולחזות התנהגות - נפגעת.
המשל: משכך כאבים
משכך כאבים יכול להקל - אבל הוא לא מרפא את הבעיה.
אם כל כאב נפתר רק באמצעות משכך, מפסיקים לשאול למה כואב.
Cache עובד בדיוק כך.
סיכום
Cache הוא כלי חשוב, אבל הוא חייב להגיע אחרי הבנה, לא במקומה.
מערכת בוגרת לא שואלת “איפה נוסיף cache?” אלא “מה באמת מאט אותנו - והאם cache פותר את הסיבה, או רק מכסה עליה?”
כי פלסטר יכול להקל לרגע. אבל רק תרופה מחזירה מערכת לבריאות אמיתית.