架構設計複雜度的6個來源
談到架構設計,相信每個技術人員都耳熟能詳。我總結了三個架構設計相關的特性:
- 架構設計的思維和程式設計的思維差異很大。
- 架構設計沒有體系化的培訓和訓練機制。
- 程式設計師對架構設計的理解存在很多誤區。
所以,雖然每個程式設計師心中都有一個成為架構師的夢想,夢想是美好的,但道路是曲折的。
我在十餘年的技術生涯中,先後參與了包括社交、電商、遊戲、中介軟體、內部運營系統等領域的架構設計,不斷學習、思考、實踐、總結、改進、交流,逐步形成了自己的一套架構設計方法論。《從0開始學架構》專欄涵蓋了我的整套架構設計方法論和架構實踐,主要包括以下內容:
開始學習之前,我們先來分析一下架構設計的目的是什麼?通過回顧架構產生的歷史背景和原因,我們可以基本推匯出答案:架構設計的主要目的是為了解決軟體系統複雜度帶來的問題。那麼,架構設計的複雜度來源是什麼呢?我總結了6個複雜度來源:
一、高效能
對效能孜孜不倦的追求是整個人類技術不斷髮展的根本驅動力。但伴隨效能越來越高,相應的方法和系統複雜度也是越來越高。軟體系統中高效能帶來的複雜度主要體現在兩方面,一方面是單臺計算機內部為了高效能帶來的複雜度;另一方面是多臺計算機叢集為了高效能帶來的複雜度。
二、高可用
系統的高可用方案五花八門,但萬變不離其宗,本質上都是通過“冗餘”來實現高可用。它在形式上和高效能一樣,都是通過增加更多機器來達到目的,但本質上是有根本區別的:高效能增加機器目的在於“擴充套件”處理效能;高可用增加機器目的在於“冗餘”處理單元。通過冗餘增強了可用性,但同時也帶來了複雜性,我會在專欄中根據不同的應用場景逐一分析。
部分解決方案:
複雜度來源:高可用
三、可擴充套件性
由於軟體系統固有的多變性,新的需求總會不斷提出來,因此可擴充套件性顯得尤其重要,幾乎所有的技術人員對於可擴充套件性都特別重視。設計具備良好可擴充套件性的系統,有兩個基本條件:正確預測變化、完美封裝變化。但要達成這兩個條件,本身也是一件複雜的事情。在具體程式碼中使用哪些可擴充套件的技術?最終的效果如何?我將在專欄中為你具體分析。
部分解決方案:
複雜度來源:可擴充套件性
四、低成本、安全、規模
我將在專欄中,為你分析低成本給架構設計帶來的主要複雜度,體現在引入新技術或創造新技術,討論從功能安全和架構安全引入的複雜度,以及規模帶來複雜度的主要原因是“量變引起質變”。
學習了6大複雜度來源後,你可以結合所在的業務,分析一下主要的複雜度是這其中的哪些部分?是否還有其他複雜度原因?歡迎你加入專欄的學習,和我一起討論。相信經過深度的思考,你對技術的理解會更加深刻。
部分解決方案:
複雜度來源:低成本、安全、規模
專欄簡介:
每個程式設計師都有成為架構師的夢想,程式設計師成長也繞不開架構設計。
《從0開始學架構》專欄作者是資深技術專家李運華,目前帶領多個研發團隊,承擔架構設計、架構重構、技術團隊管理、技術培訓等職責,曾就職於華為和UCWeb,寫過《物件導向葵花寶典》一書。
在專欄中,作者從架構基礎、三大架構模式和實戰的角度分享一整套架構設計方法論。照著做,你也能成為架構師。
專欄共50期,已更新完畢。目前有超過3萬人加入學習,互動留言字數超過20萬,邀請你加入學習!
相關文章
- 軟體設計的複雜度複雜度
- 複雜頁面架構架構
- 【資料結構】-時間複雜度和空間複雜度資料結構時間複雜度
- 複雜的資料結構設計求解?資料結構
- 時間複雜度的計算時間複雜度
- 解析 Twitter 前端架構 學習複雜場景資料設計前端架構
- 關於計算時間複雜度和空間複雜度時間複雜度
- 複雜度分析的套路及常見的複雜度複雜度
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 設計一個可複用的 ArkWeb 基礎元件架構Web元件架構
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 前端資料結構---複雜度分析前端資料結構複雜度
- 資料結構~時間複雜度資料結構時間複雜度
- 資料結構:時間複雜度資料結構時間複雜度
- 今日頭條:iOS 架構設計雜談iOS架構
- 複雜度分析複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- 時間複雜度和空間複雜度 順序時間複雜度
- 重構複雜條件的規則設計模式 - levelup設計模式
- 領域驅動設計對軟體複雜度的應對複雜度
- 說說你對演算法中時間複雜度,空間複雜度的理解?如何計算?演算法時間複雜度
- 密碼複雜度設定函式密碼複雜度函式
- 網路模型複雜度計算方法模型複雜度
- 每個程式設計師都應該收藏的演算法複雜度速查表程式設計師演算法複雜度
- 淺析程式碼圈複雜度及認知複雜度複雜度
- 【資料結構】根據主定理,計算時間複雜度資料結構時間複雜度
- 架構設計(二):資料庫複製架構資料庫
- 面試中的複雜度分析面試複雜度
- 討厭演算法的程式設計師 4 - 時間複雜度演算法程式設計師時間複雜度
- 如何基於開源構架設計一個影片平臺?
- 專車架構進化往事:好的架構是進化來的,不是設計來的架構
- 自學 資料結構四月二十一日_時間複雜度&空間複雜度資料結構時間複雜度
- Linux 如何設定密碼複雜度?Linux密碼複雜度
- 後端技術雜談8:OpenStack架構設計後端架構
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 六邊形架構:管理複雜性的解決方案架構