3.3 - ארכיטקטורה מונעת אירועים - תרגול
עיצוב events¶
תרגיל 1 - הגדרת events¶
עבור כל פעולה ב-TaskFlow, הגדירו את הevent המתאים עם כל השדות הנדרשים:
- משתמש נרשם למערכת
- משימה הוקצתה למשתמש
- תגובה נוספה למשימה
- פרויקט אורכב
לכל 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.