צוואר בקבוק גלוי מול צוואר בקבוק סמוי - ומה הופך את הסמוי למסוכן יותר
צוואר בקבוק גלוי מול צוואר בקבוק סמוי - ומה הופך את הסמוי למסוכן יותר
כשמדברים על צווארי בקבוק, לרוב חושבים על משהו שקל לראות. גרף אדום, מדד קופץ, רכיב ש”נחנק”.
אבל במערכות מורכבות, הצווארים המסוכנים באמת הם דווקא אלה שלא צועקים.
צווארי בקבוק גלויים
יש צווארי בקבוק שקשה לפספס:
- CPU על 100%
- תור שמתארך
- Latency שקופץ בצורה ברורה
אלה סימנים ישירים. המערכת מאותתת שמשהו מגביל אותה.
היתרון הגדול שלהם: הם גלויים. אפשר למדוד, לאתר, ולהתחיל להבין.
צווארי בקבוק סמויים
הבעיה מתחילה כשאין סימן חד וברור - אבל המערכת עדיין לא מתנהגת טוב.
כאן מופיעים צווארי הבקבוק הסמויים:
Retries שמכסים על איטיות הבקשה “מצליחה בסוף”, אבל רק אחרי כמה ניסיונות. האיטיות קיימת - היא פשוט מוסתרת.
Cache שמסתיר עומס רוב הבקשות פוגעות ב-cache, והמערכת נראית מהירה. הנתיב האמיתי, הנתיב שבו המערכת צועדת כשהתשובה אינה מופיעה ב-cache, כמעט ולא נבדק.
Backpressure שמופעל מוקדם מדי במקום לאפשר למערכת להתמלא ולהיות עמוסה, המערכת פשוט חוסמת בקשות או מאטה זרימה בשקט.
רכיב שנראה Idle לא כי הוא יעיל - אלא כי העבודה בכלל לא מגיעה אליו.
הכול נראה רגוע. אבל זו רגיעה מלאכותית.
למה הסמויים מסוכנים יותר מהגלויים
צוואר בקבוק גלוי הוא בעיה. צוואר בקבוק סמוי הוא אשליה.
בגלוי, ברור שמשהו מגביל. בסמוי, נדמה שהכול עובד.
וזה יוצר כמה תופעות מסוכנות:
- מדדים נראים טובים, אבל החוויה לא יציבה
- בעיות נדחות במקום להיפתר
- המערכת מתרגלת להתנהגות עקומה
- אירוע חריג אחד חושף הכול בבת אחת
המערכת לא קורסת - היא מתכווצת.
המשל: כביש שקט מדי
כביש יכול להיראות פנוי, לא כי אין תנועה - אלא כי הרמזורים חוסמים אותה רחוק מהעין.
העומס קיים, אבל הוא נדחף אחורה, מחוץ לשדה הראייה.
איך מזהים צוואר בקבוק סמוי
מערכות יציבות לא מסתפקות בשאלה “מה עמוס?”.
הן שואלות:
- איפה יש retries?
- מה קורה כשעוקפים cache?
- מי נראה Idle באופן חשוד?
- איפה מופעל backpressure, ומתי?
כלומר: הן מחפשות היכן המערכת מגבילה את עצמה בשקט.
סיכום
צוואר בקבוק גלוי אומר: “יש בעיה”.
צוואר בקבוק סמוי אומר: “יש בעיה - אבל אתם לא רואים אותה”.
מערכות מסוכנות באמת הן לא אלה שצועקות - אלא אלה שנראות רגועות בזמן שהן חונקות את עצמן מבפנים.