軟體架構模式3. ⼤大綱
• 介紹
• 分層架構 (Layered Architecture)
• 事件驅動架構 (Event-Driven Architecture)
• 微核⼼心架構 (Microkernel Architecture)
• 微服務架構 (Microservices Architecture)
• 基於空間的架構 (Space-Based Architecture)
9. 分層架構
• 也叫做多層架構模式 (N-tier architecture pattern)
• 多數 Java EE 的⾮非官⽅方標準
• 架構師、設計師、開發⼈人員最熟悉的架構
• 和傳統 IT 通訊、組織架構最接近 (Conway’s law)
11. 封閉 vs. 開放
• 封閉層 (Closed Layer) 代表請求必須
⼀一層⼀一層的傳遞,達到隔離的效果
• 限制修改的影響範圍只有上下層,降
低組件之間的耦合
• 重構影響低
12. 封閉 vs. 開放
• 開放層 (Open Layer) 代表請求可以
直接穿越它,存取其下的架構層
• 通常⽤用於提供共⽤用服務/資源
• 定義⼀一層的開放或封閉,確定了請求
流動的⽅方式
• 所有開發⼈人員都要理解這些限制
15. 模式分析
評價 原因
整體靈活性 低 修改費時、較為笨重、可能出現⾼高耦合
是否易於佈署 低 ⼩小改動可能影響到整體,需要有計劃進⾏行
可測試性 ⾼高 可分別測試或⽤用 mock 代替
性能 低 ⼀一次業務請求需要穿越⼤大量的架構層
伸縮性 低 架構層間的緊密耦合、通常規模較⼤大
是否容易開發 是 熟悉度⾼高、和組織分層相近
23. 模式分析
評價 原因
整體靈活性 ⾼高 事件處理器⾼高度解耦合
是否易於佈署 ⾼高 事件處理器⾼高度解耦合
可測試性 低
雖然單元測試簡單,但整合測試困難
(需要整體+異步問題)
性能 ⾼高 ⾼高度解耦合+異步處理
伸縮性 ⾼高 事件處理器⾼高度解耦合
是否容易開發 否 需考慮異步處理、訂定協定和流程、處理錯誤狀況
25. 微核⼼心架構
• 從 OS 得名,也稱作插件應⽤用架構
• 可以透過插件的⽅方式添加額外的特性到核⼼心系統
• 具備良好的擴展性和隔離性
• 例如 Eclipse IDE
30. 模式分析
評價 原因
整體靈活性 ⾼高 插件兼的鬆耦合,可以隔離變化。
是否易於佈署 ⾼高 依據實作,插件可以⽀支援熱差拔
可測試性 ⾼高 各個插件可以分開測試。可使⽤用 mock
性能 ⾼高 透過插件調整可以只包含必要的模組
伸縮性 低 實現是基於產品,⾮非此架構特⻑⾧長
是否容易開發 否 需要設計和管理規約,版本控制,考慮顆粒度
34. 基於 REST API 拓撲
• 每⼀一個服務組件皆透過單獨佈署的
Web 服務,以 REST API 的⽅方式提供
服務。
• 顆粒度⾮非常的細 (也是名稱由來)
• 許多⼤大型企業提供此類服務
35. 基於 REST 應⽤用拓撲
• 透過 Web 或是胖客⼾戶端來處理請
求,⽽而⾮非 API。
• 相較於前者,此實現的服務組件顆粒
度較⼤大
• 常⾒見於中⼩小型企業,或複雜度較低的
應⽤用
39. 模式分析
評價 原因
整體靈活性 ⾼高 服務組件⾼高度解耦合
是否易於佈署 ⾼高 服務組件⾼高度解耦合
可測試性 ⾼高
服務組件可分開測試,且相依度不⾼高,可以減少對整體進
⾏行測試的負擔
性能 低 分佈式特性不適合⾼高性能
伸縮性 ⾼高 服務組件⾼高度解耦合
是否容易開發
⾼高
功能被隔離成不同服務組件,開發範圍⼩小,且互相不影響