לדלג לתוכן

3.3 - ארכיטקטורה מונעת אירועים - תרגול

עיצוב events

תרגיל 1 - הגדרת events

עבור כל פעולה ב-TaskFlow, הגדירו את הevent המתאים עם כל השדות הנדרשים:

  1. משתמש נרשם למערכת
  2. משימה הוקצתה למשתמש
  3. תגובה נוספה למשימה
  4. פרויקט אורכב

לכל event: שם הevent (past tense), רשימת שדות ולמה כל שדה נחוץ.

תרגיל 2 - Event Bus פשוט

מימשו event bus פשוט בזיכרון (בלי Kafka) שתומך ב:
- publish(event_type, event_data)
- subscribe(event_type, handler_function)
- subscribe_all(handler_function) - מקשיב לכל הevents

לאחר מכן:
- כתבו handler שמתעד לlog כל event עם timestamp
- כתבו handler שסופר כמה events מכל סוג התקבלו

תרגיל 3 - Saga

תכננו Saga לתרחיש הבא:

תרחיש: משתמש מנסה לרכוש subscription premium ל-TaskFlow.

השלבים:
1. חייב את כרטיס האשראי
2. שדרג את המשתמש ל-premium
3. שלח מייל אישור

מה קורה אם שלב 2 נכשל? מה אם שלב 3 נכשל?
כתבו את ה-Saga עם compensating transactions.