在軟體架構中,都知道畫架構圖是架構師必須掌握的一項基本功能。但是軟體系統經過數十年的發展和迭代,已經由當初的單體應用變成了現如今非常複雜的分布式應用,且其所服務的業務量也是已是指數級的增長。面對如此龐大的軟體系統,一張架構圖已經不能概括出系統的全貌。作為一名架構師,應該從哪些方面著手進行架構的梳理,從而概括出系統的全貌呢?五視圖方法論是一個可以參考和實踐的方案。
五視圖方法論裡面將系統架構圖劃分成了五中類型,分別是邏輯視圖架構、開發視圖架構、運行視圖架構、物理視圖架構、數據視圖架構。從它們的名稱上,我們可以大致理解幾種架構實體的側重點。
邏輯視圖架構:通俗的理解即我們平常說的系統分成,主要從系統業務梳理的層面入手將系統分成不同的層級,常見的比如前後端分離、三層架構(表示層、業務層、數據層)等。在時下流行的微服務方案中,如何結合業務和團隊資源,將系統拆分成多個合理的微服務,也是邏輯視圖架構設計時需要考慮的問題。
開發視圖架構:主要關注項目具體實現時的技術方案選型方面的問題,比如系統採用什麼開發語言、使用什麼框架、採用什麼開源或第三方組件、資料庫/消息中間件/緩存中間件使用什麼組件等。從技術角度對系統各個層面的實現方案進行選型,最終將各種組件和框架整合在一起,能夠支撐產品當前的功能需求以及未來的擴展述求。
運行視圖架構:主要關注系統運行過程中的一些事項的設計,比如系統間各模塊的通信機制、併發模式下線程的調度和協調、數據一致性、熔斷限流等問題。
物理視圖架構:主要關注部署和運維相關的方案,需要考慮系統在不同的業務場景下,需要多少網絡、存儲、計算資源,如何讓系統具有高可用和彈性伸縮的能力,以及單點故障規避方案等都需要考慮,總之就是要考慮清楚如何部署運維才能保證系統長時間穩定的不間斷運行。
數據視圖架構:主要關注系統數據的可靠持久化和高性能響應問題。比如數據如何存儲備份、容災方案如何設計等都需要考慮,比較數據是一家公司最重要的資產,必須保證數據的可靠性和安全性。
以上這麼多的視圖架構,如果都讓一個架構師設計,往往無法兼顧,且對一個人的能力要求很高。因此,很多公司裡面又將架構師細分成軟體架構、系統架構、業務架構等角色,將不同的架構任務進行拆分。
正所謂「書山有路勤為徑,學海無涯苦作舟」,技術日新月異,更新太快,學是學不完的。擼起柚子盡力鑽研吧。