On this page
מערך שיעור: Collector Service
משך: 2 שעות אקדמיות (90 דקות), רובן עבודת צוותים.
מטרת השיעור: החברים האחראים על Collector בכל צוות יממשו את השירות לפי ה-Contract שנקבע.
בסוף השיעור: Collector Service עובד, מקבל בקשות ומפרסם ל-Kafka בפורמט תואם-Contract.
דגש קריטי: זהו שיעור-מימוש שמבוסס לגמרי על כלים שכבר נלמדו (Controllers, DataAnnotations, Kafka Producer) — אין נושא חדש, רק יישום צוותי.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הזכירו את ה-Contract שהצוות כתב |
| הדגמה: Endpoint + DTO | 15 דקות | Controller בסיסי, DataAnnotations |
| הדגמה: Kafka Producer | 15 דקות | פרסום תואם-Contract |
| 202 מול 201 | 10 דקות | הסבר קצר, קישרו ליחידת HTTP |
| עבודת צוותים: מימוש | 40 דקות | חבר האחראי על Collector בכל צוות |
| בדיקה: Consumer זמני לאימות | 5 דקות | ודאו שההודעה מגיעה נכון |
דגשים להעברת השיעור
- זהו שיעור-יישום ולא הוראה חדשה — רוב הזמן צריך להיות עבודה בפועל, לא הרצאה.
- ודאו שכל צוות בודק את ההודעה שמתפרסמת מול ה-Contract שלהם עצמם, לא רק “זה עבד” — התאמה מדויקת לשדות חשובה כי Analyzer (השיעור הבא) יסתמך עליה.
- אם חבר צוות מסיים מוקדם, הציעו להם לבדוק עם Consumer זמני (
docker execעל Kafka, או קוד קונסולה קצר) שההודעה בפורמט הנכון.
מושגים
Collector Pattern — קליטה והעברה בלבד, SRP.
Ingestion Endpoint — endpoint קליטת נתונים.
202 Accepted — עיבוד אסינכרוני, לא מיידי.
תרגיל חשיבה
שאלת פתיחה: “אם Collector שלכם היה גם מחשב אם האירוע ‘חריג’ (לא רק מעביר אותו הלאה) — למה זו הפרת SRP, ואיזה שירות אחר אמור לעשות את זה?”
מהלך: הובילו לתובנה: זיהוי אנומליה הוא לוגיקה עסקית של ניתוח — זו אחריות Analyzer (השיעור הבא), לא Collector. Collector שגם קולט וגם מנתח מערבב שתי אחריויות שונות לגמרי — בדיוק ההפרה מיחידת SOLID (SRP), עכשיו ברמת שירות שלם ולא רק מחלקה בודדת.
מה המרצה מראה בסוף: הראו את קוד ה-Collector הסופי שנכתב בשיעור — הצביעו על כך שאין בו שום if/חישוב עסקי, רק קליטה, ולידציה בסיסית, ופרסום. זו ההוכחה שהתכנון (SRP ברמת שירות) בא לידי ביטוי בפועל בקוד עצמו.