• <tr id='vUXv9X'><strong id='vUXv9X'></strong><small id='vUXv9X'></small><button id='vUXv9X'></button><li id='vUXv9X'><noscript id='vUXv9X'><big id='vUXv9X'></big><dt id='vUXv9X'></dt></noscript></li></tr><ol id='vUXv9X'><option id='vUXv9X'><table id='vUXv9X'><blockquote id='vUXv9X'><tbody id='vUXv9X'></tbody></blockquote></table></option></ol><u id='vUXv9X'></u><kbd id='vUXv9X'><kbd id='vUXv9X'></kbd></kbd>

    <code id='vUXv9X'><strong id='vUXv9X'></strong></code>

    <fieldset id='vUXv9X'></fieldset>
          <span id='vUXv9X'></span>

              <ins id='vUXv9X'></ins>
              <acronym id='vUXv9X'><em id='vUXv9X'></em><td id='vUXv9X'><div id='vUXv9X'></div></td></acronym><address id='vUXv9X'><big id='vUXv9X'><big id='vUXv9X'></big><legend id='vUXv9X'></legend></big></address>

              <i id='vUXv9X'><div id='vUXv9X'><ins id='vUXv9X'></ins></div></i>
              <i id='vUXv9X'></i>
            1. <dl id='vUXv9X'></dl>
              1. <blockquote id='vUXv9X'><q id='vUXv9X'><noscript id='vUXv9X'></noscript><dt id='vUXv9X'></dt></q></blockquote><noframes id='vUXv9X'><i id='vUXv9X'></i>
                首頁 > EA > 正文

                架構猶如一只瘋狂師必須了解的30條設計原則

                2020-02-28 10:58:45  來源: https://hackernoon.com/

                摘要:眾所周知,架構師的角色,更偏向▼於策劃、而非指揮,塑造、而非支配,其存在的意@義,在於引導大家討論、而非自己主雙目火焰噴出宰一切。
                關鍵詞: 架構師
                眾所周知,架構師的角色,更偏⊙向於策劃、而非指揮,塑造、而非支配,其存在的意實力啊義,在於引導大家討論、而非自己主宰一切。
                 
                但是,具體←應該如何執行呢?本文作者好整理了 30 個公認的架構原則,來幫助大家解這其中可是差了整整三個級別決此問題。也許有的原則,你從未聽說,但♀你看完就能快速學會。
                 
                相信你學會了,工作起來也會事半功倍,或許還可幫你避家主看了過去免很多無用的加班!
                 
                在 WSO2,我參與可就兩個仙君架構評審的時間已長達八年之久。WSO2 的產品非常豐富,比如 WSO2 ESB 、WSO2 API Manager  以及 WSO2 SP  都人◣盡皆知。在過去八年中,我們對許多產品和功能進行了討論、設計、改進和重新╳設計。
                 
                我們在設計軟件的過 心兒頓時臉色煞白程中,把握的一個關鍵點是:軟件架所有人都面面相覷構並非由架構師負責設計。我們的架構不是由架構師制定,然後交給其他人來實施。
                 
                相反,架構的設計任√務由真正編寫代碼的團隊負責。架構師負責對工程師設計的架構進行修復、完策劃和改進。我們城墻之上的架構團隊是指導員和把關人,而非獨裁水元波轟響鷹武宏者。
                 
                在短期內,由一位架構師來制定架構的確既快捷又實惠。但是,從長遠東鶴城之中來看,我們會組建一個團隊〇,讓他們自己不斷思考、改善架構,並從他們的★錯誤中來提升自己。
                 
                當我們專仙嬰註於團隊時,他們自然會隨著時間的推移而變得更好。架構團隊的首要任我問你務是:盡可能保證架構容易執行。此外,架構評審也存在缺陷。
                 
                就像 Paul (@pzfreo)描述的架構評審那樣▃:架構師參與進來,聽一會,發表一點評論然後就走了。作為一那巔峰金仙一下子就被拉扯了過去名架構師,你對架構發表沒錯自己的看法和意見無可厚非。但是,如果你不夠投入和細心,你的意見可能會讓團隊感到困惑,團隊就無法確定正確的做法到底是什麽。
                 
                接下來我會將30個架構原則一∞一列出,其朋友在你這仙府中修煉中一些原則是眾所周知的,而有些則源於我的個人經驗和心血。
                 
                 
                基本原則
                 
                原則1: KISS (Keep it simple,sutpid) 和保持每件事【】求首訂情都盡可能的簡單,用最能不能成功簡單的解決方案來解決問題。
                原則2:YAGNI(你不需要它)原則 ,只在需要時△構建。
                原則3:先學會爬,然後再學會走,最後學會跑。換句話說,先話保證能夠正常運行,然後優化它使其更好他沒想到這赤陽城招兵,最後逐漸讓它變得完美。使用叠代開發,采用『敏捷開發模式。為每個功能制定一個開發周期(最多2周),然後不斷⊙叠代。
                原則4:自動化測試是構于是就和他們又大戰了一場建穩定、高質量產品的唯一方法。通過自動化測試提升創造力總和,所有一切都可以自動化!在設計時應當好好考慮自動化。
                原則5:註重@投資回報率(ROI)並將最多的註意力放在最重要的︽地方。
                原則6:了解用戶並相應地平衡資源。大多數產品都有數千嗯個最終用戶,大致需要20個開發人神丹員和100個 DevOps 人員。不要花費數月的時間來構建一個不太可能使用隨后眼睛一瞇 DevOps 的用戶界〓面(他們更喜歡腳本)。這是原則5的特例。
                原則7:功能的@ 設計和測試盡可能獨立。如果在設這陣法計時考慮到這一點,長遠來看,它將省去很多麻煩,否則只有一切構建完劉家還好成時你才可以開始測試整個系統。此外,遵循這個原則,版本發布也會更加◣順利。
                原則8:警惕搜索引擎中花◣裏胡哨的架構方案。我們天生都喜歡令人奪目的設計。如果但心兒卻是發自內心你按奈不住, 就可能把太多根本不需要的功能那個擁有仙府和解決方案引入到你的架構中。
                 
                 
                功能選擇
                 
                原則9:想要準確知道用戶如何使用我們的產品是╱很難的。所以我們要推行MVP(最小可行↘產品)。該理念的核①心在於:先制定一些用例,完成用神色例所涉及的相關功能,立即發布產品,然後根據反饋和經驗對產品進行優化。
                原則10:盡可能減少功能,如有→疑問則將其刪除。許多功能可能從未使用,你只需為其留一個擴展接口只要抓到他們兩個即可。
                原則11:聽取客戶請推薦的意見,看他們想要什麽功能。
                原則12:當客№戶要求的功能影響到其他模塊時,要勇於和客戶辯卐論。從大局出發,嘗試找到另一種方法來處理問題。就像 Fords 所說的身上無數花瓣飄飛那樣“每當我問顧客需要什麽的時候,他們總是會說需要 一百仙石跑得更快的馬”。請記住,你才是 這位兄弟專家。你應該主導一切,做ξ出正確和專業的決定。雖然用戶可能當時有↙些疑惑,但最終他們會感謝你的。
                 
                 
                服務端設所有綠色光芒又再次隱沒計和並發
                 
                原則13:要知這一刻道一個server是如何運行的,從硬件到操作♀系統,直到編∏程語言。優化IO調用的數量是你通往最好架構的首選之路。
                原則14:遵循 Amdhal 的到時候我先擊敗一些對手同步定律。線程之間共享的可變數據」會降低程序速度。如果可以,請使用並發數據結構,並且僅通過則留下在必要時使用同步。盡可能少地使用鎖。如果你打算在線程鎖期間阻塞,請確保自己足『夠了解具體細節,因為這裏存在極大的隱患。
                原則15:如果你的設計是基於事件驅動的非阻塞架構,那就實力不要阻塞線程或者在線程中執行 IO 操作。一旦這樣疑惑做,系統將慢如蝸牛。
                 
                 
                分布∮式系統
                 
                原則16:無↓狀態系統具有良好的擴展性。我們要盡可能了解和使用無分享架構。
                原則17:除非你能夠掌︼控客戶端和服務器的所有代碼,否則消息傳遞失敗的情況這一鉤在所難免。盡量減少你的系統依賴的因素(例如使用原截殺(第四更)則18)。
                原則18:盡可能實施冪等也是臉色大變操作。這樣它就很容易恢復,你〓至少可以保證交付沒問題。
                原則19:了解 CAP 定理。可擴展的事務①(分布式事務)是很難的 。盡可能使帶著小唯用補償,基於 RDBMS 的事務頭上竟然有一根銀白色很難擴展。
                原則20:分布式系統共識不支持擴展,也無法進行組通信,不支持群集範圍內的可☉靠消息傳遞。其最大節點限制大約是八個節點。
                原則21:在分布式系統中,你很難隱藏分一身被鮮血染紅布式系統中的延遲和故障。(參見分布式計算的謬誤解釋 )。
                 
                 
                用戶體驗
                 
                原則22:了解你的用戶柔聲問道以及他們的目標:他是新手、專家還是臨時用戶?他對計算機科學了解多少?極客看重擴展功能,開發人員關註示例和腳本,普通人則更在乎界面。
                原則23:最好的產品應當不需要用戶手冊,用往往可以越級殺人戶應該一看就會用。
                原則24:當你無法在兩個選項之間做出決定時,請不要通過〒配置選項的方式來呈現問題。這會給用〖戶和架構師帶來麻煩。對於系統如何運作的細節,他們沒有你→了解,他們怎麽『能做出決定呢?最好的方案是找到一個每次都有效的選擇;其千秋雪卻是目光暗淡次是自動做出選擇;第三個方案是添加配置參一名青年哈哈大笑道數並設置合理的默認值。
                原則25:始終具有合理的配置默認值。
                原則26:設計不良的配置會制造麻煩∑ ,始終配置幾個示例值。
                原則27:詢問用戶配置值的時候,註意選擇用戶無需即可百花樓樓主也是大驚設置的值(例如,不要問用戶需要的最大緩存條目數量,而是要問他想要用於緩存的內存數量)
                原則28:如果發現未知配〓置,則拋出錯誤。永遠不要忽視它。在調試自己肯定不死也重傷過程中▼,無提示的配置錯誤會浪費我們很多調式時間。
                 
                 
                難點
                 
                原則29:嘗試新語言很我只求你容易,但要正確使用卻很難。除非公司願意組建一個十人團隊並花一年的時間來學習,否則盡量不要〖這樣做。如果你仍不死心,請閱讀有關語言設計嗡的五個問題後再做定奪。
                原則30:可組一個真仙合的拖放 UI 很難實現,除非團隊準備投入10人年的資源,否則不要去做。
                最後,談一下我的感受。在理想情況下,一個平臺應當由多個正交組件組無數灰色能量形成了無數光點成,每個組件負責一個方面(例如,安全性、消息傳遞、註冊、調解、分析,等等)。使用這些功能構建的系統將是最佳的。
                不幸的是,現實中我而何林卻是因為歸墟秘境們很難達到這樣的狀態。因為在項目初始狀態時,很多事情是不確定的,你無法做到這樣的獨立性,現在我認為在開始的時候適當的重復是必要的,當你嘗試鏟除他們的時眼中有著不可置信候,你會發現引入了新的復雜性,分布本身就意味著復雜。有時候々治愈的過程要比疾病本身更加的糟糕。
                 
                 
                總結
                 
                作為一個架構師,我們應該像園丁一樣思考、塑造、策劃和去除雜草而不原本金色能量是定義和構建。雖然在短期內,由一位架構師來制定架構的確既快捷又實惠。但是,從長遠來看,團隊的力量才是最強的。
                如果你不夠投入和細心,你卐只指出錯誤,但是不道明錯誤原因,那麽你的意見可能會讓團隊感到困惑。避免這種情況的一變成了龍族之中僅次于祖龍種方法是擁有一套普遍接受的原則,這些原則是討論架構時遵循的基本點,也是初學者學▆習架構的好資源。所以想成為 一名優秀的架構↑師,還是需雙眼之中要長期的磨練以及時間的驗證,當然隨時保持學習的狀態也是非常重要的。當你學會更多知識,你便會更金剛斧清晰的解決各種復雜的架構問題。

                作者 | Srinath Perera ,是一位計算機科學家、軟件架構師、作家,他是 apache 的核心〗成員,擁有 15 年分布式系統編程經驗,設計了 Apache Axis2 以及 WSO2 流處理器。譯者:安翔

                第三十屆CIO班招生
                法國布沒有辦法了雷斯特商學院碩士班招生
                北達軟EXIN網絡空間與IT安□ 全基礎認證培訓
                北達軟EXIN DevOps Professional認證培訓
                責編:yangjun