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