架構設計複雜度的6個來源

weixin_34319999發表於2019-03-13

談到架構設計,相信每個技術人員都耳熟能詳。我總結了三個架構設計相關的特性:

  • 架構設計的思維和程式設計的思維差異很大。
  • 架構設計沒有體系化的培訓和訓練機制。
  • 程式設計師對架構設計的理解存在很多誤區。

所以,雖然每個程式設計師心中都有一個成為架構師的夢想,夢想是美好的,但道路是曲折的。

我在十餘年的技術生涯中,先後參與了包括社交、電商、遊戲、中介軟體、內部運營系統等領域的架構設計,不斷學習、思考、實踐、總結、改進、交流,逐步形成了自己的一套架構設計方法論。《從0開始學架構》專欄涵蓋了我的整套架構設計方法論和架構實踐,主要包括以下內容:
\"\"

開始學習之前,我們先來分析一下架構設計的目的是什麼?通過回顧架構產生的歷史背景和原因,我們可以基本推匯出答案:架構設計的主要目的是為了解決軟體系統複雜度帶來的問題。那麼,架構設計的複雜度來源是什麼呢?我總結了6個複雜度來源:
\"\"

延伸閱讀
架構是什麼?
架構設計的目的是什麼?

一、高效能

對效能孜孜不倦的追求是整個人類技術不斷髮展的根本驅動力。但伴隨效能越來越高,相應的方法和系統複雜度也是越來越高。軟體系統中高效能帶來的複雜度主要體現在兩方面,一方面是單臺計算機內部為了高效能帶來的複雜度;另一方面是多臺計算機叢集為了高效能帶來的複雜度
\"\"

部分解決方案:
複雜度來源:高效能
高效能快取架構

二、高可用

系統的高可用方案五花八門,但萬變不離其宗,本質上都是通過“冗餘”來實現高可用。它在形式上和高效能一樣,都是通過增加更多機器來達到目的,但本質上是有根本區別的:高效能增加機器目的在於“擴充套件”處理效能;高可用增加機器目的在於“冗餘”處理單元。通過冗餘增強了可用性,但同時也帶來了複雜性,我會在專欄中根據不同的應用場景逐一分析。
\"\"

部分解決方案:
複雜度來源:高可用

三、可擴充套件性

由於軟體系統固有的多變性,新的需求總會不斷提出來,因此可擴充套件性顯得尤其重要,幾乎所有的技術人員對於可擴充套件性都特別重視。設計具備良好可擴充套件性的系統,有兩個基本條件:正確預測變化、完美封裝變化。但要達成這兩個條件,本身也是一件複雜的事情。在具體程式碼中使用哪些可擴充套件的技術?最終的效果如何?我將在專欄中為你具體分析。
\"\"

部分解決方案:
複雜度來源:可擴充套件性

四、低成本、安全、規模

我將在專欄中,為你分析低成本給架構設計帶來的主要複雜度,體現在引入新技術或創造新技術,討論從功能安全和架構安全引入的複雜度,以及規模帶來複雜度的主要原因是“量變引起質變”。
\"\"

學習了6大複雜度來源後,你可以結合所在的業務,分析一下主要的複雜度是這其中的哪些部分?是否還有其他複雜度原因?歡迎你加入專欄的學習,和我一起討論。相信經過深度的思考,你對技術的理解會更加深刻。

部分解決方案:
複雜度來源:低成本、安全、規模

專欄簡介:

每個程式設計師都有成為架構師的夢想,程式設計師成長也繞不開架構設計。

《從0開始學架構》專欄作者是資深技術專家李運華,目前帶領多個研發團隊,承擔架構設計、架構重構、技術團隊管理、技術培訓等職責,曾就職於華為和UCWeb,寫過《物件導向葵花寶典》一書。

在專欄中,作者從架構基礎、三大架構模式和實戰的角度分享一整套架構設計方法論。照著做,你也能成為架構師。

專欄共50期,已更新完畢。目前有超過3萬人加入學習,互動留言字數超過20萬,邀請你加入學習!

相關文章