架构之美
架構的完美性
《團隊之美》這本書里面有對 Mike Cohn 的一段采訪,他提到:
“一個應用中所有的代碼不一定要處于同樣的質量水平”。
“不是每件事都要做到第一流,在大多數情況下,我們根本沒機會做到第一流”。
軟件架構設計其實更加類似于大自然“設計”一個生物,通過演化讓生物適應環境,逐步變得更加強大。
就如下圖的技術發展趨勢圖一樣,世界上其實不存在完美的架構。多數情況下,架構是一種妥協,一種特定時期和場景下平衡的產物。
架構的抽象性
如果一個技術已經存在3年,比如現在很火的前端技術React和Vue等,那么預估這個技術大致還有3年的生命期,再久就不確定了;
如果一個架構或設計原則已經存在15年,例如面向對象設計的SOLID原則,可以預期它還有15年甚至更久的生命期。原則是比具體技術
更抽象,更接近事物本質,也更經得起時間考驗的東西。這些原則沉淀在架構師的腦海中,最終內化成他的mindset,以潛意識方式影響和指導他的架構和設計工作。
今天和大家介紹實戰派的開發架構大師Robert C.Martin以及他的力作
干凈的代碼,既在質量上較為可靠,也為后期維護、升級奠定了良好基礎。
在這本書,Robert 提出一種觀念:所謂的架構,就是用最小的人力成本來滿足構建和維護系統需求
架構的著名定律
計算機雖然歷史不長,但是在高速發展的歷程中,產生了很多著名定律。除了大家耳熟能詳的摩爾定律外,今天我們再聊聊和架構相關的兩個著名定律。
分別是并發編程的阿姆達爾定律和微服務的康威定律。
阿姆達爾定律的模型闡釋了我們現實生產中串行資源爭用時候的現象。如下圖模型,一個系統中,不可避免有一些資源必須串行訪問,這限制了我們的加速比,即使我們增加了并發數(橫軸),但取得效果并不理想,難以獲得線性擴展能力(圖中直線)。
這個定律的最佳工程實踐,大家可以參看 《并發編程實戰》的 第11章 性能與可伸縮性
康威定律的核心就如下一句話:
Organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations. - Melvin Conway(1967)
設計系統的組織,其產生的架構設計等價于組織間的溝通結構。
組織的溝通和系統設計之間的緊密聯系,在很多別的領域有類似的闡述。對于復雜的系統,聊設計就離不開聊人與人的溝通,解決好人與人的溝通問題,才能有一個好的系統設計。
相信幾乎每個程序員都讀過的《人月神話》,里面許多觀點都和這句話有異曲同工之妙。
總結
- 上一篇: Android权限管理原理
- 下一篇: 电子计算机常用面试题,计算机常用面试题文