軟體架構設計:無題
軟體架構設計:無題 Logo 圖片、六角架構 取自:https://reflectoring.io/spring-hexagonal/ 前言 為什麼叫做無題?因為軟體架構設計是一個相當龐大的主題,也不可能在一篇文章中談完,先前我也曾寫過許多架構設計系列文、包括領域驅動設計 DDD 與 整潔架構 Clean Architecture 與如何在以上的軟體架構為基礎來落實 TDD。 今天,我在以更廣泛與更實務的角度來探討軟體的架構設計,文之中也會搭上我這些年來所設計的框架、Framework 並對上也是這些年後來所讀的相關書籍、像是 DDD 領域驅動設計、Uncle Bob 的 整潔架構 Clean Architecture、還有正在讀的【Get Your Hands Dirty on Clean Archiecture】,這這些書的洗禮之下,也在下面的文章中裡探討缺失、改善的方式,希望對於工作中正在進行架構設計或是正在進行專案規劃,但想要有個架構設計的資料可以參考的程式設計師,那麼或許您可以參考文章中的資料,或許對您有所幫助。 階層式架構設計的隱憂 圖(一)、常見的階層式架構 傳統的階層式架構幾乎伴隨著我們好幾 10 年了,相信讀者不陌生,許多的老系統,包括我在 18 年前在流通業開發的幾個系統、以及後來10年前在X創開發設計的好幾個政府機關的系統也都是階層式架構設計。 究竟什麼是階層式架構?它與更早期講的三層式架構有些不同、比如 Windows DNA 那又是更早的跨機器架構,注意了,那是『跨機器』的軟體架構,像是微軟早期 (DCOM, Distributed Component Object Model) 所以 DCOM 加上 Distribute 表示快機器、而 COM 就是跨行程。 這是早期的分散式環境,套用到現今,許多人想到的 Microservices/Docker.. 微服務等容器環境,這在跨機器的場景非常類似,但是 DCOM 需要完整的 OS 作業環境的支援、而 Microservices 微服務拜後來【VM 虛擬化技術】又再進階到【OS 作業系統虛擬化技術】之賜,使的應用程式可以包裹在更輕量化的容器環境之中,沒有作業系統啟動速度慢、占用系統支援較多等問題、更適合建構需要橫向擴展的 Cloud 雲端運算的環境...