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