Slide 1

Slide 1 text

如何進行DDD實作

Slide 2

Slide 2 text

I am Steven SoftLeader Engineer

Slide 3

Slide 3 text

q戰略設計與戰術設計 q架構風格 q常見問題 q重構 Agenda

Slide 4

Slide 4 text

Google Trends

Slide 5

Slide 5 text

系統變化的原因 I/O 的變化 市場需求的變化 技術的自我挑戰

Slide 6

Slide 6 text

金髮姑娘原則 https://language.chinadaily.com.cn/trans/2013-10/23/content_17053444.htm 剛剛好就好

Slide 7

Slide 7 text

Domain Driven Design 戰略設計 戰術設計 Domain Sub-Domain Bounded Context Entity Value Object Aggregate Factory Repository Domain Service Domain Event

Slide 8

Slide 8 text

Domain and Business Domain Business

Slide 9

Slide 9 text

Bounded Context

Slide 10

Slide 10 text

三層架構對比 傳統 DDD分層

Slide 11

Slide 11 text

機制在外,策略在內 https://medium.com/clean-architecture-stories/clean-architecture-the-real-journey-starts-here-c550837d2ec6

Slide 12

Slide 12 text

Monolith DDD結構

Slide 13

Slide 13 text

Microservices https://martinfowler.com/articles/microservice-testing/#anatomy-modules

Slide 14

Slide 14 text

Microservices DDD結構

Slide 15

Slide 15 text

Q1. 邊界 微服務的大小和 DDD 沒有絕對關係 1 微服務的數量和 DDD 沒有絕對關係 2

Slide 16

Slide 16 text

Q1. 邊界 內聚性 負載狀況 服務邊界

Slide 17

Slide 17 text

Q2. 規則 不是每個功能都可以是一個微服務 1 處理服務間依賴問題 2

Slide 18

Slide 18 text

Q3. 開發 資料驅動 vs UI 驅動 vs 領域驅動 1 God Object 2 程式規範 3

Slide 19

Slide 19 text

開發結構參考

Slide 20

Slide 20 text

Layers 四層 五層 六層

Slide 21

Slide 21 text

God Object 使用 Creational Patterns 管理物件建立過程 1 選擇適合的 3rd Library 處理欄位問題 2

Slide 22

Slide 22 text

Q4. 資料 不與其他服務共用資料庫表 1 最小化資料庫表數量 2 考慮有狀態和無狀態 3 資料可用性 4

Slide 23

Slide 23 text

Q4. 資料

Slide 24

Slide 24 text

CQRS / Event Sourcing CQRS Event Sourcing

Slide 25

Slide 25 text

一致性事件

Slide 26

Slide 26 text

原子性事件

Slide 27

Slide 27 text

Q5. 維運 Trace ID 1 Centralized log management 2 DevOps 3

Slide 28

Slide 28 text

重構 https://dzone.com/articles/a-transition-from-monolith-to-microservices

Slide 29

Slide 29 text

重構

Slide 30

Slide 30 text

重構

Slide 31

Slide 31 text

重構

Slide 32

Slide 32 text

重構

Slide 33

Slide 33 text

FINAL! 1 2 3