架構設計三原則

筆記

  • 業務千變萬化,技術層出不窮,設計理念也是百花齊放,看起來似乎很難有一套通用的規范來適用所有的架構設計場景。

  • 幾個共性的原則隱含其中,這就是:合適原則、簡單原則、演化原則。

合適原則宣言:“合適優于業界領先”。

  • 腳踏實地”主要體現在下面幾個方面。

    1. 將軍難打無兵之仗。沒那么多人,卻想干那么多活,是失敗的第一個主要原因。
    2. 羅馬不是一天建成的。沒有那么多積累,卻想一步登天,是失敗的第二個主要原因。
    3. 冰山下面才是關鍵。更多的時候,業界領先的方案其實都是“逼”出來的!簡單來說,“業務”發展到一定階段,量變導致了質變,出現了新的問題,已有的方式已經不能應對這些問題,需要用一種新的方案來解決,通過創新和嘗試,才有了業界領先的方案。沒有那么卓越的業務場景,卻幻想靈光一閃成為天才,是失敗的第三個主要原因。
  • 真正優秀的架構都是在企業當前人力、條件、業務等各種約束下設計出來的,能夠合理地將資源整合在一起并發揮出最大功效,并且能夠快速落地。

簡單原則宣言:“簡單優于復雜”。

  • 無論是結構的復雜性,還是邏輯的復雜性,都會存在各種問題,所以架構設計時如果簡單的方案和復雜的方案都可以滿足需求,最好選擇簡單的方案。《UNIX 編程藝術》總結的 KISS(Keep It Simple, Stupid!)原則一樣適應于架構設計。

  • 軟件領域的復雜性體現在兩個方面:1. 結構的復雜性。2. 邏輯的復雜性。

  • 結構復雜的系統幾乎毫無例外具備兩個特點:組成復雜系統的組件數量更多;同時這些組件之間的關系也更加復雜。

  • 組件越多,就越有可能其中某個組件出現故障,從而導致系統故障。

  • 某個組件改動,會影響關聯的所有組件,這些被影響的組件同樣會繼續遞歸影響更多的組件。

  • 定位一個復雜系統中的問題總是比簡單系統更加困難。首先是組件多,每個組件都有嫌疑,因此要逐一排查;其次組件間的關系復雜,有可能表現故障的組件并不是真正問題的根源。

  • 邏輯復雜的組件,一個典型特征就是單個組件承擔了太多的功能。

  • 邏輯復雜幾乎會導致軟件工程的每個環節都有問題。

演化原則宣言:“演化優于一步到位”。

  • 對于建筑來說,永恒是主題;而對于軟件來說,變化才是主題。軟件架構需要根據業務的發展而不斷變化。
  • 如果沒有把握“軟件架構需要根據業務發展不斷變化”這個本質,在做架構設計的時候就很容易陷入一個誤區:試圖一步到位設計一個軟件架構,期望不管業務如何變化,架構都穩如磐石。
  • 軟件架構設計其實更加類似于大自然“設計”一個生物,通過演化讓生物適應環境,逐步變得更加強大。
  • 軟件架構設計同樣是類似的過程:
    1. 首先,設計出來的架構要滿足當時的業務需要。
    2. 其次,架構要不斷地在實際應用過程中迭代,保留優秀的設計,修復有缺陷的設計,改正錯誤的設計,去掉無用的設計,使得架構逐漸完善。
    3. 第三,當業務發生變化時,架構要擴展、重構,甚至重寫;代碼也許會重寫,但有價值的經驗、教訓、邏輯、設計等(類似生物體內的基因)卻可以在新架構中延續。
  • 架構師在進行架構設計時需要牢記這個原則,時刻提醒自己不要貪大求全,或者盲目照搬大公司的做法。應該認真分析當前業務的特點,明確業務面臨的主要問題,設計合理的架構,快速落地以滿足業務需要,然后在運行過程中不斷完善架構,不斷隨著業務演化架構。

理解與思考

  • 印象比較深的一點是:軟件的主題是變化。在工作中也深有體會。雖然部門設置了一堆的流程來試圖減少需求的變化,很顯然沒起作用。我覺得開發在埋怨需求變化的同時,也要做好設計,擁抱變化。埋怨和消極應付不是長遠之計。
  • 很久之前我也表達過類似的觀點:軟件的發展和自然界的進化更類似。
  • 以后碰到需求,先做起來,不要過分的追求完美,不要因沒有理想的方案而踟躕不前。
  • 軟件架構能力是在實踐中鍛煉起來的。以后學習,一定要注意應用,不能為學習而學習。

課后題

我講的這三條架構設計原則是否每次都要全部遵循?是否有優先級?談談你的理解,并說說為什么。
這三條原則,我理解其實是講的一件事情,即:做架構設計的時候,以滿足當前業務需要為目標,保留演化和發展的能力,不好高騖遠,貪多求全。所以做設計的時候,應該都遵守。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容

  • 合適原則、簡單原則、演化原則,架構設計時遵循這幾個原則,有助于做出最好的選擇。 合適原則 合適原則宣言:“合適優于...
    星夜95閱讀 825評論 0 1
  • 成為架構師是每個程序員的夢想,但并不意味著把編程做好就能夠自然而然地成為一個架構師,優秀程序員和架構師之間還有一個...
    yoku醬閱讀 310評論 0 1
  • 可是一旦涉及“選擇”,就很容易讓架構師陷入兩難的境地,例如: 如果選了最先進的技術后出了問題怎么辦?如果選了目前最...
    hedgehog1112閱讀 742評論 3 3
  • 第68篇 極客時間《從0開始學架構》課程筆記。 編程的本質是『確定性』,同樣一段代碼,在任何時候執行,結果應該是確...
    短暫瞬間閱讀 2,517評論 0 0
  • 每天上班路的各種辛酸啊,今日來細數一下! 倘若有一日出門稍晚,心里焦急得恨不得快速飛起,忐忑遇到紅燈會添堵加時,卻...
    小小亂語閱讀 423評論 0 0