משך: 2.5 שעות אקדמיות (113 דקות), רובן עבודת צוותים.

מטרת השיעור: החברים האחראים על Analyzer בכל צוות יממשו Streaming Analysis עם Kafka+Pandas.

בסוף השיעור: Analyzer Service עובד — צורך אירועים, מזהה אנומליות בזמן-אמת, ומפרסם ממצאים.

דגש קריטי: זהו שיעור-אינטגרציה בין שני נושאים מרכזיים (Kafka מ-NoSQL, Pandas Anomaly Detection) — הדגישו שאין כלי חדש, רק חיבור.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהזכירו Consumer מ-NoSQL, Anomaly Detection מ-Pandas
הבעיה: streaming מול batch10 דקותאין “כל הנתונים” מראש
הרעיון: Sliding Window20 דקותdeque(maxlen), הדגמה
שילוב Consumer+Pandas+Producer25 דקותקוד מלא, שלב-שלב
בדיקת אינטגרציה עם Collector15 דקותהריצו את שני השירותים יחד
עבודת צוותים: מימוש38 דקותחבר האחראי על Analyzer בכל צוות

דגשים להעברת השיעור

  • ודאו שהצוותים מריצים את Collector (מהשיעור הקודם) יחד עם Analyzer בשלב מוקדם — בדיקת אינטגרציה מוקדמת מזהה בעיות Contract לפני שהן “נעולות” בקוד.
  • הסבר Sliding Window שווה זמן — זו תפיסה חדשה (זיכרון מוגבל על זרם אינסופי) שלא נגעו בה קודם ביחידת Pandas.
  • הזכירו את סף המינימום (len(df) < 10) כחיזוק להרגל בריא מיחידת Pandas — לא לחשב סטטיסטיקה על מדגם זעיר.

מושגים

Streaming Analysis — עיבוד רציף, לא batch. Sliding Window — חלון נגלל של נתונים אחרונים. Publish Findings — פרסום ממצא ל-Topic חדש.


תרגיל חשיבה

שאלת פתיחה: “Analyzer שלכם רץ ברציפות ומקבל אירועים חדשים כל הזמן. אם הייתם שומרים את כל ההיסטוריה בזיכרון (בלי Sliding Window), מה קורה אחרי יום שלם של ריצה?”

מהלך: הובילו לתובנה: הזיכרון גדל בלי הפסקה — דליפת זיכרון בפועל, לא תיאורטית. Sliding Window (deque(maxlen=N)) הוא הפתרון הפשוט ביותר — שומר רק את מה שרלוונטי (התנהגות “אחרונה”) ומוותר במודע על היסטוריה רחוקה.

מה המרצה מראה בסוף: הריצו Collector+Analyzer יחד עם קלט מכוון — כמה אירועים “רגילים” ואז ערך קיצוני — הראו את הודעת האנומליה שמתפרסמת בזמן אמת ל-anomaly-detected (עם Consumer בדיקה שמאזין לה), מיד אחרי שהערך החריג נשלח דרך Collector.