תורים, Streams ועיבוד אסינכרוני
בשיעור הזה נלמד איך מערכת מטפלת בעבודה כבדה בלי להשאיר את המשתמש מחכה. הרעיון: במקום לעשות הכול עכשיו, מכניסים את המשימה לתור ומטפלים בה ברקע. נכיר queues (תורים — שורת המתנה של משימות, בדיוק כמו תור בדואר: כל בקשה מקבלת מספר ומחכה לתורה), streams (זרמים — נהר מתמשך של הודעות שזורמות אחת אחרי השנייה
System Design (תכנון מערכות — איך בונים תוכנה גדולה שמשרתת הרבה אנשים) הוא כמו לתכנן עיר: כבישים, מחסנים, רמזורים וצוותי תחזוקה — כך שהעיר תמשיך לעבוד טוב גם בשעות העומס הכי גדולות.
- עיבוד אסינכרוני
- טיפול בעבודה ברקע במקום לגרום למשתמש לחכות (אסינכרוני — "לא בו-זמני", כלומר לא חייבים לסיים הכול לפני שמשיבים). המיומנות המרכזית של השיעור כוללת queues (תורים — שורת המתנה של משימות), streams (זרם מתמשך של הודעות), retries (ניסיונות חוזרים בכשל), idempotency (אי-פעילות-כפולה — שהודעה שטופלה פעמיים לא תזיק) ו-backpressure (בלימה מבוקרת כשמגיעה יותר עבודה מדי).
- Trade-off
- בחירה מודעת שיש בה גם רווח וגם מחיר — בדיוק כמו לבחור מסלול בכביש: המהיר עולה כסף באגרה, החינמי לוקח יותר זמן. בראיון מסבירים למראיין/ת מה הרווח ומה המחיר של כל בחירה.
- מדד תפעולי
- מספר שמראה אם ההחלטה באמת עובדת כשהמערכת חיה ומשרתת משתמשים אמיתיים (פרודקשן — production). למשל: latency (כמה זמן לוקח לקבל תשובה), error rate (אחוז הבקשות שנכשלות), queue lag (כמה משימות ממתינות בתור) ו-cache hit ratio (כמה פעמים מצאנו תשובה מוכנה מראש). כמו מדי לוח המחוונים ברכב — הם מראים אם הכול תקין.