最新梯次
台北班:2023年7月1、2日(六、日) /09:30-16:30
事件溯源(Event Sourcing)與命令查詢責任分離(CQRS)架構是開發微服務(Microservices)與雲端原生系統(Cloud Native System)不可或缺的基本與進階技術。本課程在領域驅動設計(Domain-Driven Design;DDD)與整潔架構(Clean Architecture)的背景之下,首先介紹如何實作事件溯源的聚合(Aggregate)與Repository。接著探討CQRS架構帶來的簡化設計、提升效能與高擴展性等好處,並實作兩種不同的讀取模型。Event Sourcing + CQRS + DDD + Clean Architecture,讓您四種願望一次滿足。
課程內容:
本課程包含兩個主題:事件溯源 (Event Sourcing)與命令查詢責任分離(Command Query Responsibility Segregation;CQRS)。課程首先介紹在採用領域驅動設計 (Domain-Driven Design;DDD)與整潔架構 (Clean Architecture)的軟體系統中,如何讓聚合(Aggregate)與存取聚合的Repository支援事件溯源(Event Sourcing)。在練習範例中我們介紹兩種不同的資料庫:支援純事件溯源的EventStoreDB與關聯式資料庫PostgreSQL,以滿足不同學員在工作上的需求。
接著課程介紹CQRS架構的三大優點:Simplicity、Scalability與Speed,並深入探討套用CQRS的設計取捨。透過實作練習我們分別在PostgreSQL與EventStoreDB投影出兩種不同的讀取模型。
課程大綱
- 事件驅動架構的四種不同層級
- Event Notification
- Event-Carried State Transfer
- Event Sourcing
- CQRS
- Event Sourcing
- 保存狀態方法:State Sourcing, Event Sourcing, State Sourcing + Transactional Outbox
- 保存狀態單位:Aggregate
- 保存狀態設計模式:
- Repository
- 支援Event Sourcing與Outbox儲存方式的Repository架構設計
- 實作練習
- ESDB
- Outbox
- Event Type Mapping
- Projection
- Optimistic Locking
- CQRS
- 定義
- CQRS的優點
- Simplicy
- Scalability
- Speed
- 不同層級的讀寫分離
- Eventual consistency, event ordering, at least once, idenpotent, internal vs external event
- Write Model與Read Mode的依賴方向
- 實作練習
- Read model in PostgreSQL (將read mode存成JSON)
- Read mode in EventStoreDB (使用Projection功能)
- 進階議題
- Snapshot (快照)
- Event versioning
- weak schema and schema registry
- CQRS without event sourcing
- 回顧與討論
***
課程效益
- 徹底了解事件溯源與的命令查詢責任分離的真意。
- 扎根領域域驅動設計與Clean Architecture的核心實作能力。
- 獲得立即可用的高品質參考範例。
- 奠定實作微服務架構所需之基礎能力。
- 透過讀寫分離加速系統效能。
- 增加嘴砲功力 XDD。
專業師資:陳建村 (Teddy Chen)
![]() |
|
相關文章閱讀:
- 搞笑談軟工部落格 DDD 系列文章
- 事件溯源(1):Event Sourcing的好處
- 事件溯源(2):實作Event Sourced Aggregate
- 事件溯源(3):將Aggregate儲存至EventStoreDB
- 事件溯源(4):將Aggregate儲存至Outbox Store
- 事件溯源(5):如何儲存事件型別
- 事件溯源(6):透過Projection查詢Event Store
- 事件溯源(7):樂觀鎖
- 事件溯源(8):什麼是CQRS?
- 事件溯源(9):套用CQRS簡化領域模型
- 事件溯源(10):實作Projector
- 事件溯源(11):撰寫JavaScript在EventStoreDB中產生自訂投影
- 事件溯源(12):建立快照以加速聚合讀取
- 事件溯源(13):事件版本控制
- 事件溯源(14):行為版本控制
- 事件溯源(15):Apache Kafka可以當做Event Store嗎?
- 事件溯源(16):分散式系統的事件語意與Idempotent
- 事件溯源(17):讀取手刻Event Store所儲存的事件
- 事件溯源(18):實做Idempotent
常見問題:
Q:請問參加這個課程需要有什麼能力嗎?
A:物件導向技術、領域驅動設計與整潔架構基礎能力,具備xUnit單元測試案例撰寫經驗更佳。
Q: 請問這門課的上課方式為何?
A:包含理論講解、程式練習範例,理論與實務兼顧。
Q: 實作練習採用何種語言?
A:課程以Java語言為主,提供Java版本範例。學員可以選擇自己熟悉的程式語言進行實作練習。
課程資訊
台北平日班:2023年7月1、2日(六、日)
時間:09:30~16:30,共十二小時
地點:近台北火車站
費用
原價:$34,000元早鳥優惠: NT$27,900/人,2023年6月1日前報名。
泰迪之友票:$27,000 元
2人團報,$26,900 元/人
費用已包含:發票、教材、午餐、茶水。
2023年最新開課班次:
- 2023年7月1、2日 (六、日)
注意事項
- 報名方式:先填寫線上報名表,確認開課後將收到匯款通知,再行繳費即完成報名。
- 主辦單位將於開課日三天前以e-mail寄發上課通知,若未收到通知者請來電確認。
- 已完成繳費學員若因故無法上課,在開班日前一日申請退費者,退還已繳學費全額。開班日當天到課程進行1/3申請退費者,退還已繳學費四成。課程進行超過1/3之後無法上課將不予退費。 未達開班人數則延期或全額退費。
- 結業證書需全程出席方可獲得。
- 開課單位保留是否接受報名之權力。如遇天災或其他不可抗拒因素導致原訂日期無法開課,開課單位保留修訂日期權利。