架構的道與術

架構的道與術

大型網站的典型架構

實際的架構決策並不能在這張圖上反映出來。

比如:· 如何拆分服務?· 如何組織服務與服務之間的層次關係?· 如何設計介面?· 快取資料結構與更新策略是什麼樣的?· 快取宕機後系統是否可用?· 資料庫如何分庫分表?· 訊息佇列在什麼地方使用?· 需要部署多少臺Tomcat?需要部署多少臺RPC服務?

這個方法論,即是架構的道。

具體來說,對於技術問題,主要指高併發、高可用和一致性方面;

對於業務問題,主要指業務的需求分析和業務建模。

道與術的辯證關係

知,是理論,是套路,是解決問題的方法論;行,是實踐,是操作,用於解決一個個實際問題。

先有實踐,然後總結出理論,用理論指導新的實踐,在新的實踐中再總結出新的理論。

如此迴圈往復,即是歸納和演繹迴圈往復的過程,也是螺旋式上升的過程具體到軟體架構,就是道和術都不能偏廢,一方面需要不斷實踐,在實踐中深究原理;一方面要把實踐的東西抽象、總結出來,形成方法論。

在短期能看到術的結果,想要看到道的效果卻需要長期地修煉,必須到了一個頓悟的拐點,才能發出驚人的能量。

除了從“知”和“行”的角度去看待,還可以從“問題”和“答案”的角度去看待。術偏重“答案”,是工具,是錘子;道偏重“問題”,是釘子。

架構的道與術