日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

收藏!架构师需要掌握的99条铁律

發(fā)布時(shí)間:2025/3/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 收藏!架构师需要掌握的99条铁律 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

經(jīng)常有人問(wèn)我:我是多少年某某行業(yè)工作經(jīng)驗(yàn),我現(xiàn)在是去創(chuàng)業(yè)公司做技術(shù)總監(jiān)還是去大公司做架構(gòu)師?我發(fā)現(xiàn)我都無(wú)法回答這個(gè)問(wèn)題。因?yàn)槎嗌倌昴衬承袠I(yè)工作經(jīng)驗(yàn),并不能解析為具有怎樣的知識(shí)結(jié)構(gòu)和掌握的能力數(shù)量和深度,很難與相應(yīng)的職位需求進(jìn)行匹配對(duì)應(yīng)。

比如,架構(gòu)師,幾乎所有公司的架構(gòu)師需求都不完全一樣。為什么呢?軟件架構(gòu)師是 IT 行業(yè)里獨(dú)一無(wú)二的職業(yè),既要精通軟件開(kāi)發(fā)技術(shù),又要掌握業(yè)務(wù)知識(shí),還要周旋于公司不同部門之間,協(xié)調(diào)各種矛盾。

以下是有志于成為架構(gòu)師或已經(jīng)是軟件架構(gòu)師的應(yīng)該知道的 99 件事,如果都精通吃透,應(yīng)用在日常工作中,百萬(wàn)年薪工作不是夢(mèng)。

1.??多去參加大會(huì)沙龍,跟成功的架構(gòu)師探討案例、思維模式和前沿技術(shù)。

自己摸索和嘗試耗費(fèi)很多時(shí)間,有時(shí)候需要廣交朋友,跟成功的架構(gòu)師們一起討論、一起成長(zhǎng)。捷徑是找到成功的架構(gòu)師,一起探討,走成功者走過(guò)的路。

2.??簡(jiǎn)化根本復(fù)雜性?,消除偶發(fā)復(fù)雜性

根本復(fù)雜性指的是問(wèn)題與生俱來(lái)的、無(wú)法避免的困難。偶發(fā)復(fù)雜性是人們解決根本復(fù)雜性的過(guò)程中衍生的。分析問(wèn)題好比撥云見(jiàn)月、水落石出。架構(gòu)師的責(zé)任在于解決問(wèn)題的根本復(fù)雜性,同時(shí)避免引入偶發(fā)復(fù)雜性。

3.??關(guān)鍵問(wèn)題可能不是出在技術(shù)上

大多數(shù)項(xiàng)目是由人完成的,人才是項(xiàng)目成敗與否的基礎(chǔ)。學(xué)會(huì)尊重他人,給予團(tuán)隊(duì)成員充分的信任,是聰明的架構(gòu)師獲得成功必須掌握的核心技能。團(tuán)隊(duì)同心,其利斷金。

4.??以溝通為中心,堅(jiān)持簡(jiǎn)明清晰的表達(dá)方式和開(kāi)明的領(lǐng)導(dǎo)風(fēng)格

溝通應(yīng)當(dāng)言簡(jiǎn)意賅、詳略得當(dāng),別拖泥?帶水。

5.??架構(gòu)決定性能

種瓜得瓜,種豆得豆,架構(gòu)設(shè)計(jì)也是一樣道理。它是影響應(yīng)用性能和可伸縮性的決定因素,性能參數(shù)是無(wú)法簡(jiǎn)單地通過(guò)更換軟件,或者“調(diào)優(yōu)”底層軟件架構(gòu)來(lái)改善,必須遵循分布式計(jì)算和物理學(xué)的基本原理,必須在架構(gòu)的設(shè)計(jì)(或重新設(shè)計(jì))上投入更多精力。

6.??分析客戶需求背后的意義

抽絲剝繭,洞見(jiàn)癥結(jié)。不要被表面需求迷惑。

7.??起立發(fā)言

讓溝通事半功倍,起立發(fā)言是最簡(jiǎn)單、有效的方法。

8.??故障終究會(huì)發(fā)生

系統(tǒng)必然存在不同形式的故障隱患,無(wú)論如何都無(wú)法徹底消滅,應(yīng)該提前設(shè)計(jì)預(yù)防措施,限制故障。

9.??我們常常忽略了自己在談判?

工程師應(yīng)該適時(shí)轉(zhuǎn)換角色,學(xué)習(xí)談判的技巧。絕不能在與對(duì)方談判的第一個(gè)要求上就妥協(xié)讓步。

10.?量化需求

沒(méi)有規(guī)矩,不成方圓。在記錄需求的過(guò)程中,對(duì)一些模糊的描述比如“靈活”,“可維護(hù)性”,“性能”等通過(guò)簡(jiǎn)單的問(wèn)題來(lái)量化需求,比如“數(shù)量多少”,“有多頻繁”,“不能超過(guò)多長(zhǎng)時(shí)間”等。如果缺乏客觀的標(biāo)準(zhǔn),就只能任憑挑剔的用戶擺布。

11.?一行代碼比五百行架構(gòu)說(shuō)明更有價(jià)值

可工作的代碼才是目標(biāo),設(shè)計(jì)只是達(dá)成目標(biāo)手段。摩天大樓的建筑師如果一味追求美觀而無(wú)視物理定律,遲早會(huì)自食其果。

  12.?不存在放之四海皆準(zhǔn)的解決方案

  軟件世界沒(méi)有放之四海皆準(zhǔn)的解決方案。架構(gòu)師必須培養(yǎng)和訓(xùn)練情境意識(shí),才能更好地設(shè)計(jì)架構(gòu)和解決問(wèn)題。

  13.?提前關(guān)注性能問(wèn)題

  盡早展開(kāi)性能測(cè)試。尤其是對(duì)性能要求苛刻的系統(tǒng),可以驗(yàn)證架構(gòu)和設(shè)計(jì)是否符合實(shí)際性能要求。

  14.?架構(gòu)設(shè)計(jì)要平衡兼顧多方需求

  平衡兼顧項(xiàng)目的技術(shù)需求和相關(guān)各方的業(yè)務(wù)需求。

  15.?草率提交任務(wù)是不負(fù)責(zé)任的行為???(?Niclas?Nilsson?)

  要設(shè)法杜絕開(kāi)發(fā)人員草率提交任務(wù)的念頭。

  16.?不要在一棵樹(shù)上吊死???(?Keith?Braithwaite?)

  為客戶提供多樣化的解決方案。

  17.?業(yè)務(wù)目標(biāo)至上?(?Dave?Muirhead?)

  技術(shù)決策不能脫離業(yè)務(wù)目標(biāo)和現(xiàn)實(shí)條件的約束。

  18.?先確保解決方案簡(jiǎn)單可用,再考慮通用性和復(fù)用性?

  如果存在多個(gè)可實(shí)施方案難以取舍,“先簡(jiǎn)單后通用”原則可以成為最終的評(píng)判標(biāo)準(zhǔn)。通過(guò)經(jīng)驗(yàn)提練的簡(jiǎn)單方案,遠(yuǎn)勝過(guò)不切實(shí)際的通用性。

  19.?架構(gòu)師應(yīng)該親歷親為?(?John?Davies?)

  身先士卒才能贏得同事的信任。

  20.?持續(xù)集成?(?David?Bartlett?)

  持續(xù)集成確保當(dāng)前的開(kāi)發(fā)不會(huì)出現(xiàn)意外,借助它可以取得更穩(wěn)定、更符合要求的開(kāi)發(fā)成果。

  21.?避免進(jìn)度調(diào)整失誤?(?Norman?Carnovale?)

  不惜一切代價(jià)拒絕調(diào)整項(xiàng)目進(jìn)度的要求。為提高交付速度而改變計(jì)劃會(huì)帶來(lái)一系列的問(wèn)題。

  22.?取舍的藝術(shù)?(?Mark?Richards?)

  架構(gòu)不可能滿足所有需求。魚(yú)和熊掌不可兼得,應(yīng)牢記瑞典和波蘭戰(zhàn)爭(zhēng)中瑞典瓦薩號(hào)(Vasa)戰(zhàn)艦的故事。

  23.?打造數(shù)據(jù)庫(kù)堡壘?(?Dan?Chak?)

  一開(kāi)始就要定義好數(shù)據(jù)模型。數(shù)據(jù)模型的設(shè)計(jì)必須做到能夠拒絕無(wú)效數(shù)據(jù),阻止無(wú)意義的關(guān)系。

  24.?重視不確定性?(?Kevlin?Henney?)

  推遲決策,建設(shè)性地利用不確定性。推遲決定不是故意拖延,而是強(qiáng)調(diào)作出的決定應(yīng)該基于足夠的事實(shí),不能僅憑假定和猜測(cè)。

  25.?不要輕易放過(guò)不起眼的問(wèn)題?(?Dave?Quick?)

  別忘了溫水煮青蛙的故事。

  26.?讓大家學(xué)會(huì)復(fù)用?(?Jeremy?Meyer?)

  重復(fù)利用已有資源,首先要改變大家的觀念。

  27.?架構(gòu)里沒(méi)有大寫的“I?”?(?Dave?Quick?)

  不要讓自己變成自大狂。辯解容易,難的是學(xué)會(huì)停止辯解,恃才傲物容易,難的是擁有自知之明。

  28.?使用“?一千英尺高”?的視圖?(?Erik?Doernenburg?)

  選擇合適的架構(gòu)視圖。不能太抽象,也不能細(xì)節(jié)太多,看清整個(gè)架構(gòu)。

  29.?先嘗試后決策?(?Erik?Doernenburg?)

  越晚做出決策,可利用的信息就越多。可先通過(guò)嘗試,對(duì)問(wèn)題的最佳解決方案有了共識(shí),再組織協(xié)調(diào)制定決策。

  30.?掌握業(yè)務(wù)領(lǐng)域知識(shí)?(?Mark?Richards?)

  掌握業(yè)務(wù)領(lǐng)域知識(shí)有助于架構(gòu)師選擇合適的架構(gòu)模式,更好地制定針對(duì)未來(lái)的擴(kuò)展計(jì)劃,適應(yīng)不斷變化的產(chǎn)業(yè)趨勢(shì)。

  31.?程序設(shè)計(jì)是一種設(shè)計(jì)?(?Einar?Landre?)

  軟件開(kāi)發(fā)也分成設(shè)計(jì)和生產(chǎn)兩個(gè)階段。程序設(shè)計(jì)屬于設(shè)計(jì)范疇,而不是生產(chǎn)范疇,軟件的生產(chǎn)則是自動(dòng)化的,由編譯器、構(gòu)建工具和測(cè)試代碼共同完成。

  32.?讓開(kāi)發(fā)人員自己做主?(?Philip?Nelson?)

  架構(gòu)師的工作重點(diǎn)是仔細(xì)觀察整個(gè)系統(tǒng)是怎樣組合在一起的,確保系統(tǒng)良好地協(xié)調(diào)運(yùn)作,應(yīng)該給予團(tuán)隊(duì)成員足夠的自主權(quán),讓他們發(fā)揮自己的創(chuàng)意和能力。

  33.?時(shí)間改變一切?(?Philip?Nelson?)

  選擇值得投入精力的工作,漂亮的解決方案搭配正確的任務(wù),才能經(jīng)受時(shí)間的考驗(yàn)。別跟以前的工作過(guò)不去。回顧過(guò)去的工作,永遠(yuǎn)會(huì)覺(jué)得以前的設(shè)計(jì)和自己的期望有差距,把這些問(wèn)題當(dāng)作今后的工作標(biāo)準(zhǔn),克制自己回過(guò)頭去修改的沖動(dòng)。

  34.?設(shè)立軟件架構(gòu)專業(yè)為時(shí)尚早?(?Barry?Hawkins?)

  這個(gè)自己分析吧!

  35.?控制項(xiàng)目規(guī)模?(?Dave?Quick?)

  分而治之,將大項(xiàng)目分解成獨(dú)立的小項(xiàng)目,設(shè)置優(yōu)先級(jí),盡快交付,實(shí)現(xiàn)最重要的需求,盡快獲得客戶的反饋,越快越好。

  36.?架構(gòu)師不是演員,是管家?(?Barry?Hawkins?)

  架構(gòu)師的職責(zé)和管家相似,承擔(dān)著管理他人資產(chǎn)的責(zé)任,架構(gòu)師應(yīng)該盡可能為客戶利益著想,計(jì)算可用的時(shí)間和人力,綜合考慮成本和復(fù)雜性等因素,設(shè)計(jì)出折中的解決方案,不能存有私心,賣弄時(shí)髦的軟件框架和流行的技術(shù)詞匯,只會(huì)把系統(tǒng)變得更復(fù)雜,給公司造成損失。

  37.?軟件架構(gòu)的道德責(zé)任?(?Michael?Nygard?)

  架構(gòu)師的決定會(huì)影響許多人,務(wù)必慎重。雖然設(shè)計(jì)必填項(xiàng)從表面上看并無(wú)不妥之處,但實(shí)際上是架構(gòu)師在強(qiáng)迫用戶接受自己的意圖。必填項(xiàng)迫使用戶準(zhǔn)備更多的信息,這個(gè)過(guò)程常常會(huì)耽擱工作,讓人非常沮喪。

  38.?摩天大廈不可伸縮?(?Michael?Nygard?)

  但軟件可以。無(wú)論是開(kāi)發(fā)新項(xiàng)目還是替換已有的系統(tǒng),都應(yīng)該逐個(gè)部署系統(tǒng)組件,一來(lái)可以將風(fēng)險(xiǎn)分散到各個(gè)時(shí)間段,每次砌好“一塊磚”,二來(lái)迫使我們?cè)O(shè)計(jì)清晰的組件間接口。

  39.?混合開(kāi)發(fā)的時(shí)代已經(jīng)來(lái)臨?(?Edward?Garson?)

  混合編程是指在同一套軟件系統(tǒng)中同時(shí)采用多種核心編程語(yǔ)言。新的技術(shù)變革正逐步瓦解我們以往積累的技術(shù)成果,架構(gòu)師應(yīng)擁抱這種變化,跳出原有的思維模式,充分挖掘軟件的多元化特性。

  40.?性能至上?(Craig?Russell?)

  性能,減少軟件響應(yīng)時(shí)間,提高人機(jī)交互效率!

  41.?留意架構(gòu)圖里的空白區(qū)域?(?Michael?Nygard?)

  空白區(qū)域“充滿”了各種軟件和“硬件”。隱藏著一系列復(fù)雜的事件,應(yīng)該考慮各種隱藏的細(xì)節(jié),才能順利地解決空白區(qū)域里的問(wèn)題。

  42.?學(xué)習(xí)軟件專業(yè)的行話?(?Mark?Richards?)

  架構(gòu)師必須掌握基本的架構(gòu)模式和設(shè)計(jì)模師,學(xué)會(huì)識(shí)別不同的模式,并借助它們和同行及開(kāi)發(fā)人員進(jìn)行交流。模式可分類四大類:

  • 企業(yè)架構(gòu)模式定義架構(gòu)的全局框架結(jié)構(gòu)。

  • 應(yīng)用架構(gòu)模式指出了全局架構(gòu)下的子系統(tǒng)及局部應(yīng)用的設(shè)計(jì)方法。

  • 集成模式研究怎樣在系統(tǒng)的組件、應(yīng)用和子系統(tǒng)之間傳遞信息,共享功能。

  • 設(shè)計(jì)模式研究架構(gòu)中每個(gè)組件的構(gòu)造方法。

  43.?具體情境決定一切?(?Edward?Garson?)

  架構(gòu)不存在設(shè)計(jì)理念,具體情境決定一切,根據(jù)具體情境設(shè)計(jì)盡量簡(jiǎn)單的解決方案。

  44.?侏儒、精靈、巫師和國(guó)王?(?Evan?Cofsky?)

  開(kāi)發(fā)團(tuán)隊(duì)不應(yīng)該同質(zhì)化。軟件架構(gòu)師好比國(guó)王,應(yīng)該熟悉各種人的性格特點(diǎn),招聘不同性格的人加入自己的團(tuán)隊(duì),為不同性格的團(tuán)隊(duì)成員安排合適的任務(wù),輕構(gòu)化解各種難。由一幫性格相同的人設(shè)計(jì)的架構(gòu)只能吸引同樣性格的人加入團(tuán)隊(duì),只能解決一類問(wèn)題。

  45.?向建筑師學(xué)習(xí)?(?Keith?Braithwaite?)

  借鑒建筑行業(yè)的經(jīng)驗(yàn)。架構(gòu)師應(yīng)該蘊(yùn)含適當(dāng)?shù)乃囆g(shù)成分。

  46.?避免重復(fù)?(?Niclas?Nilsson?)

  兩條公認(rèn)的軟件開(kāi)發(fā)的真理:

  (1)?復(fù)制是魔鬼。

  (2)?重復(fù)性的工作拖累開(kāi)發(fā)進(jìn)度。

  消滅重復(fù)的內(nèi)容是架構(gòu)師的責(zé)任,為此應(yīng)該重新研究框架,創(chuàng)造更完善的抽象機(jī)制,或者使用代碼生成器。

  47.?歡迎來(lái)到現(xiàn)實(shí)世界?(?Gregor?Hohpe?)

  現(xiàn)實(shí)世界比軟件世界復(fù)雜。不要抱怨現(xiàn)實(shí)世界中用戶需求帶來(lái)的麻煩,不妨從中尋找解決問(wèn)題的靈感。

  48.?仔細(xì)觀察,別試圖控制一切?(?Gregor?Hohpe?)

  選擇合適的抽象層次能提供有效的信息,也方便用基本的驗(yàn)證規(guī)則檢查模型,架構(gòu)師應(yīng)仔細(xì)觀察,提取模型,然后檢查驗(yàn)證,別妄想掌控一切。

  49.?架構(gòu)師好比兩面神?(?David?Bartlett?)

  架構(gòu)師應(yīng)該像兩面神一樣,眼觀六路、耳聽(tīng)八方。

  50.?架構(gòu)師應(yīng)關(guān)注邊界和接口??(?Einar?Landre?)

  尋找自然的邊界,分而治之。架構(gòu)師應(yīng)關(guān)注和繪制“有界情境”和“情境地圖”,有界情境是用以唯一定義一個(gè)模型或概念的區(qū)域,通常以一朵云或一個(gè)氣泡來(lái)表示。情境地圖則包含了一系列有界情境及它們之間的接口。

  51.?助力開(kāi)發(fā)團(tuán)隊(duì)?(?Timothy?High?)

  優(yōu)秀團(tuán)隊(duì)是成功的保障,要盡量助力開(kāi)發(fā)團(tuán)隊(duì)。

  52.?記錄決策理由?(?Timothy?High?)

  記錄架構(gòu)決策背后的理由,長(zhǎng)期有用,又無(wú)須為之付出過(guò)多精力維護(hù),具有極高的投資回報(bào)價(jià)值。

  53.?挑戰(zhàn)假設(shè),?尤其是你自己的?(?Timothy?High???)

  臆斷是事情搞砸的主要根源。一定要拿出相關(guān)的經(jīng)驗(yàn)證據(jù),仔細(xì)驗(yàn)證假設(shè),才能做出最終決策,務(wù)必要確保軟件基石堅(jiān)實(shí)可靠。

  54.?分享知識(shí)和經(jīng)驗(yàn)?(?Paul?W.?Homer?)

  討論有助于發(fā)現(xiàn)不足,只有能非常容易地做出解釋,才表明你真正理解了。只有不斷解釋和討論,才能把經(jīng)驗(yàn)?zāi)鄢芍R(shí)。幫助周圍的人不斷改善,他們也會(huì)幫助我們發(fā)揮出全部的潛力。

  55.?模式病?(?Chad?La?Vigne?)

  不要讓一展設(shè)計(jì)模式功力的欲望,遮蔽了務(wù)實(shí)的真知。使用模式解決適用的問(wèn)題才是最重要的。

  56.?不要濫用架構(gòu)隱喻?(?David?Ing?)

  不要耽溺于系統(tǒng)隱喻之中,只將之用于探索性的溝通,不要反讓它拖了后腿。

  57.?關(guān)注應(yīng)用程序的支持和維護(hù)?(?Mncedisi?Kasper?)

  應(yīng)用程序的支持和維護(hù),永遠(yuǎn)都不應(yīng)該是事后才考慮的事情。由于應(yīng)用程序超過(guò) 80% 的生命周期都是在維護(hù)上,在設(shè)計(jì)時(shí)就應(yīng)該多多關(guān)注支持和維護(hù)的問(wèn)題。考慮生產(chǎn)環(huán)境修誤錯(cuò)誤的壓力,生產(chǎn)環(huán)境中的日志記錄級(jí)別要比開(kāi)發(fā)環(huán)境中的低很多,考慮開(kāi)發(fā)人員與支持人員具有不同的技能等。

  58.?有舍才有得

  珍惜需要權(quán)衡的時(shí)機(jī),遠(yuǎn)勝毫無(wú)約束和限制。

  59.?原則、公理和類比勝于個(gè)人意見(jiàn)和口味?(?Michael?Harmer?)

  清楚的架構(gòu)原則,能夠使那些不熟悉某項(xiàng)特別技術(shù)或組件的人,明白其中的緣由,更透徹地理解他們本不熟悉的技術(shù)。

  60.?從“?可行走骨架”?開(kāi)始開(kāi)發(fā)應(yīng)用?(?Clint?Shank?)

  “可行走骨架”是對(duì)系統(tǒng)的最簡(jiǎn)單實(shí)現(xiàn),它貫穿頭尾,將所有主要的架構(gòu)組件連接起來(lái)。從“?可行走骨架”?開(kāi)始,增量培育系統(tǒng)成長(zhǎng)?。

  61.?數(shù)據(jù)是核心(?Paul?W.?Homer?)

  從“數(shù)據(jù)是核心”這個(gè)角度去認(rèn)識(shí)系統(tǒng),能大大降低理解復(fù)雜度?。

  62.?確保簡(jiǎn)單問(wèn)題有簡(jiǎn)單的解?(Chad?La?Vigne?)

  試圖猜測(cè)未來(lái)的需求時(shí),錯(cuò)的概率是 50%,錯(cuò)得很離譜的概率是 49%。今天只需要解決今天的問(wèn)題就好。把應(yīng)用發(fā)布出去,從反饋中生成真實(shí)的需求。

  63.?架構(gòu)師首先是開(kāi)發(fā)人員?(Mike?Brown?)

  碰到麻煩時(shí),架構(gòu)師可不能只會(huì)干吹煙圈卻束手無(wú)策。獲得開(kāi)發(fā)人員信任的最快捷方式:你的代碼就是你的資本。作為架構(gòu)師,主要目標(biāo)應(yīng)該是創(chuàng)建可行、可維護(hù)的解決方案,當(dāng)然,也一定要能夠解決當(dāng)前的問(wèn)題。

  64.?根據(jù)投資回報(bào)率(ROI?)進(jìn)行決策(?George?Malamidis?)

  在判斷每個(gè)決策選項(xiàng)是否務(wù)實(shí)或恰當(dāng)時(shí),將架構(gòu)決策視為投資,并將相關(guān)的回報(bào)率也一并考慮在內(nèi)。

  65.?一切軟件系統(tǒng)都是遺留系統(tǒng)(?Dave?Anderson?)

  軟件很快便會(huì)過(guò)時(shí),修改維護(hù)無(wú)可避免。需考慮以下幾點(diǎn):

  (1)?清晰性:各個(gè)組件和類的角色清晰。

  (2)?可測(cè)性:系統(tǒng)易于驗(yàn)證。

  (3)?正確性:結(jié)果和設(shè)計(jì)或期望的一致。

  (4)?可跟蹤:能迅速診斷出故障并立馬解決問(wèn)題。

  66.?起碼要有兩個(gè)可選解決方案(?Timothy?High?)

  軟件架構(gòu)是要在所有給定的約束條件下,尋找到解決問(wèn)題的最佳方案。期望第一個(gè)解決方案即滿足全部的需求和約束,幾乎是不可能的。如果對(duì)手頭的問(wèn)題只有一個(gè)解決方案,這意味著將沒(méi)有進(jìn)行折衷權(quán)衡的余地。這個(gè)唯一的解決方案可能無(wú)法令系統(tǒng)投資方滿意。

  67.?理解變化的影響?(?Doug?Crawford?)

  清楚認(rèn)識(shí)變化類型及其影響。變化有多種不同的表現(xiàn)形式:

  (1)?功能需求的變化

  (2)?可擴(kuò)展性需求的演進(jìn)

  (3)?系統(tǒng)的接口被修改

  (4)?團(tuán)隊(duì)人員流動(dòng)等。

  管理變化并非架構(gòu)師的職責(zé),但架構(gòu)師要確保變化是可控的,有許多工具和技術(shù)可以用以減輕變化的影響。

  (1)?進(jìn)行小規(guī)模的增量漸變。

  (2)?構(gòu)建可重復(fù)運(yùn)行的測(cè)試用例,并經(jīng)常運(yùn)行。

  (3)?讓測(cè)試用例更易編寫。

  (4)?跟蹤好依賴關(guān)系。

  (5)?系統(tǒng)性的行動(dòng),根據(jù)反饋信息作出進(jìn)一步反應(yīng)。

  (6)?自動(dòng)化重復(fù)的任務(wù)。

  68.?你不能不了解硬件(?Kamal?Wickramanayake?)

  硬件容量規(guī)劃,是和軟件架構(gòu)同等重要的事情。水平伸縮能力是關(guān)鍵,可以在需要時(shí)才添加硬件,而無(wú)須一開(kāi)始就過(guò)量采購(gòu)。

  69.?現(xiàn)在走捷徑,將來(lái)需付息(?Scot?Mcphee?)

  及時(shí)還清技術(shù)債務(wù)。可能覺(jué)得單元測(cè)試并不直接產(chǎn)生價(jià)值,于是就讓開(kāi)發(fā)人員跳過(guò)這些嚴(yán)格的測(cè)試工作,這將導(dǎo)致所交付的系統(tǒng)在未來(lái)更難修改,而且在修改時(shí)信心不足。?除了避免在開(kāi)發(fā)初期走捷徑,發(fā)現(xiàn)有不當(dāng)?shù)脑O(shè)計(jì)決策時(shí)就要盡快修正,擱置越久,為之付出的利息也將越高。

  70.?不要追求“完美”,“足夠好”就行(?Greg?Nyberg?)

  避免過(guò)度設(shè)計(jì)。不要屈服于企圖使設(shè)計(jì)或?qū)崿F(xiàn)達(dá)到完美的誘惑。把目的設(shè)定在“足夠好”就行,當(dāng)已經(jīng)達(dá)成目標(biāo)時(shí),就停下來(lái)。

  71.?小心“好主意”?(?Greg?Nyberg?)

  “駱駝的鼻子”是?一個(gè)隱喻,指一旦允許一些不期望但很小的情況發(fā)生,后面就會(huì)招致巨大而無(wú)法避免的情況發(fā)生。“好主意”就如“駱駝的鼻子”,它將導(dǎo)致范圍膨脹,復(fù)雜度上升,竭力把和業(yè)務(wù)需求無(wú)關(guān)的東西塞入應(yīng)用中,這純粹是浪費(fèi)精力。

  72.?內(nèi)容為王?(?Zubin?Wadia?)

  內(nèi)容即網(wǎng)絡(luò),即界面。在聯(lián)系日益緊密的今日世界,內(nèi)容質(zhì)量很快成為了成敗的關(guān)鍵。優(yōu)秀的內(nèi)容指的是其內(nèi)容之間互相關(guān)聯(lián),而不是空洞割裂。系統(tǒng)的成功取決于其內(nèi)容,在設(shè)計(jì)過(guò)程中,要對(duì)內(nèi)容價(jià)值的評(píng)估給予足夠重視。

  73.?對(duì)商業(yè)方,架構(gòu)師要避免憤世嫉俗(?Chad?La?Vigne?)

  過(guò)度自信,會(huì)讓你在業(yè)務(wù)領(lǐng)域頭破血流。不要讓自己成為憤世嫉俗的“天才”,總是以一副自作聰明,居高臨下的語(yǔ)調(diào),力求證明公司當(dāng)前的運(yùn)營(yíng)是多么的糟糕不堪,以期觸動(dòng)業(yè)務(wù)方。成為優(yōu)秀架構(gòu)師的秘訣之中有一個(gè)關(guān)鍵要素,那就是要對(duì)工作滿懷激情,但不要是那種帶著憤怒和火氣的“激情”。

  74.?拉伸關(guān)鍵維度,發(fā)現(xiàn)設(shè)計(jì)中的不足(?Stephen?Jones?)

  單獨(dú)拉伸每個(gè)維度,然后綜合起來(lái)看待,便可暴露出那些隱藏于最初設(shè)計(jì)中的潛在限制與不足。架構(gòu)師可以通過(guò)拉伸關(guān)鍵維度,對(duì)解決方案進(jìn)行校核:

  (1)?了解基礎(chǔ)設(shè)施的規(guī)劃是否能夠應(yīng)付增長(zhǎng)的需求,圈出限制范圍。

  (2)?確認(rèn)在預(yù)期的吞吐量下,系統(tǒng)不但能在當(dāng)天內(nèi)及時(shí)完成全天的任務(wù)處理,同時(shí)具備峰值儲(chǔ)備,才能應(yīng)

  對(duì)“特別忙碌的日子”,才能在停電后“加班補(bǔ)上”.

  (3)?對(duì)當(dāng)前的數(shù)據(jù)訪問(wèn)方案進(jìn)行校核,確保其在系統(tǒng)伸縮擴(kuò)展時(shí)依然有效。

  (4)?確保在系統(tǒng)工作負(fù)載上升時(shí),(如果需要)能夠以增加硬件和轉(zhuǎn)換處理路徑的方式進(jìn)行系統(tǒng)的伸縮擴(kuò)展。

  (5)?數(shù)據(jù)量持續(xù)上升,導(dǎo)致數(shù)據(jù)必須在更多的基礎(chǔ)設(shè)施間進(jìn)行分割時(shí),要確保應(yīng)用程序仍然可用。

  75.?架構(gòu)師要以自己的編程能力為依托(?Mike?Brown?)

  為項(xiàng)目設(shè)計(jì)架構(gòu)時(shí),對(duì)實(shí)現(xiàn)每個(gè)設(shè)計(jì)元素所需的工作量,要做到心中有數(shù);如果以前曾開(kāi)發(fā)過(guò)其中某種設(shè)計(jì)元素,那么估算所需工作量將會(huì)容易得多。

  76.?命名要恰如其分(?Sam?Gardiner?)

  弄清楚要做的究竟是什么。設(shè)計(jì)就是要去實(shí)現(xiàn)各種意圖,例如,快速、廉價(jià)、靈活、而名字便是用來(lái)承載和傳達(dá)這些意圖的。

  77.?穩(wěn)定的問(wèn)題可以獲得高質(zhì)量的解決方案(?Sam?Gardiner?)

  架構(gòu)師必須從整體上看待雜亂無(wú)章的數(shù)據(jù)、概念、數(shù)據(jù)和處理邏輯,架構(gòu)師要能夠?qū)⑺鼈冏鳛檎w看待,并將它們分解為更小的片段或塊。這些問(wèn)題塊必須是穩(wěn)定的,只要問(wèn)題是穩(wěn)定的,就可以創(chuàng)建出一個(gè)擁有穩(wěn)定設(shè)計(jì)的系統(tǒng)。穩(wěn)定的設(shè)計(jì)可以讓你集中精力,打造出高質(zhì)量的應(yīng)用程序。

  78.?天道酬勤(?Brian?Hart?)

  勤奮體現(xiàn)在很多方面,但歸根結(jié)底是指具備堅(jiān)強(qiáng)的毅力,并且對(duì)系統(tǒng)的每項(xiàng)任務(wù)和每個(gè)架構(gòu)目標(biāo),都能投入足夠的精力。真正做好那些看似簡(jiǎn)單的任務(wù),堅(jiān)守承諾。很多時(shí)候,不是能力不足導(dǎo)致項(xiàng)目的失敗,而是由于勤奮不夠,緊迫感不強(qiáng)。

  79.?對(duì)決策負(fù)責(zé)(?Yi?Zhou?)

  有效的架構(gòu)決策包含:

  (1)?無(wú)論是以敏捷的形式還是傳統(tǒng)的形式做出架構(gòu)決策,都必須對(duì)決策過(guò)程有充分的認(rèn)識(shí)。

  (2)?要定期對(duì)架構(gòu)決策進(jìn)行復(fù)審;對(duì)照檢查決策的實(shí)際效果和預(yù)期效果;

  (3)?要貫徹架構(gòu)決策,只有全程跟進(jìn)實(shí)施過(guò)程,才能夠確保最到位地實(shí)現(xiàn)其設(shè)計(jì)意圖。

  (4)?并沒(méi)有所謂的全能技術(shù)天才,可以將一些決策委托給相應(yīng)問(wèn)題域的專家。

  80.?棄聰明,求質(zhì)樸(?Eben?Hewitt?)

  別去理會(huì)什么流行風(fēng)潮,只有真正睿智的架構(gòu)師才懂得如何保持質(zhì)樸。在質(zhì)樸的方案中,每個(gè)組件只做一件事。

  81.?精心選擇有效技術(shù),絕不輕易拋棄(?Chad?La?Vigne?)

  架構(gòu)師工作很大的一部分,是要選擇用以攻克難題的合適技術(shù)。精心選擇熟悉的武器,不到萬(wàn)不得已絕不輕易拋棄它們。同時(shí),以審慎的態(tài)度更新你的技術(shù)武器庫(kù)。

  82.?客戶的客戶才是你的客戶!( Eben Hewitt )

  假設(shè)你正在編寫一個(gè)電子商務(wù)應(yīng)用程序,那么該仔細(xì)考慮的應(yīng)當(dāng)是那些會(huì)在那個(gè)網(wǎng)站上購(gòu)物的人的需求。

  83.?事物發(fā)展總會(huì)出人意料?(?Peter?Gillard-Moss?)

  設(shè)計(jì)是在不斷變化的世界中持續(xù)進(jìn)行探索試驗(yàn)的過(guò)程。無(wú)論研究得多么深入透徹,無(wú)論設(shè)計(jì)是如何深思熟慮,事情最后總會(huì)變得和你想的不一樣,我們會(huì)發(fā)現(xiàn)通常無(wú)法預(yù)知的新信息。

  84.?選擇彼此間能和諧共處的框架?(?Eric?Hawthorne?)

  當(dāng)心“無(wú)所不能”型的框架。系統(tǒng)應(yīng)該由多個(gè)相互獨(dú)立的框架組成,其中每個(gè)框架都精專于各自的領(lǐng)域,但同時(shí)又非常簡(jiǎn)潔、包容和靈活。

  85.?著重強(qiáng)調(diào)項(xiàng)目的商業(yè)價(jià)值(?Yi?Zhou?)

  可通過(guò)下面五步,成功將架構(gòu)提案打造為典型的商業(yè)項(xiàng)目:

  (1)?形成價(jià)值陳述,用以說(shuō)明組織的業(yè)務(wù)為何要采用某種特定的軟件架構(gòu),重點(diǎn)應(yīng)放在說(shuō)明其在提高生產(chǎn)力、改進(jìn)業(yè)務(wù)效率方面的能力。

  (2)?建立量化的度量標(biāo)準(zhǔn),量化得越具體越到位,項(xiàng)目也將越具有說(shuō)服力。

  (3)?回過(guò)頭來(lái)關(guān)聯(lián)傳統(tǒng)商業(yè)的衡量方式,如果能將技術(shù)分析轉(zhuǎn)化為財(cái)務(wù)數(shù)據(jù),則會(huì)更為完美。

  (4)?知道該在哪里停止。準(zhǔn)備好一張路線圖,用以捕獲遠(yuǎn)景目標(biāo),清楚地知道每一個(gè)里程碑將帶來(lái)的商業(yè)價(jià)值。讓利益相關(guān)者自己決定在何處停止。

  (5)?尋找恰當(dāng)?shù)臅r(shí)機(jī),如果時(shí)機(jī)不對(duì),可能仍然無(wú)法成功推銷你的點(diǎn)子。

  86.?不僅僅只控制代碼,也要控制數(shù)據(jù)?(?Chad?La?Vigne?)

  數(shù)據(jù)庫(kù)的變化不應(yīng)該影響構(gòu)建活動(dòng)的連續(xù)性。要把數(shù)據(jù)庫(kù)也作為一個(gè)構(gòu)建單元包含在內(nèi),做到一次性構(gòu)建整個(gè)應(yīng)用程序。

  87.?償還技術(shù)債務(wù)?(?Burkhardt?Hufnagel?)

  在速度和架構(gòu)間進(jìn)行權(quán)衡,保持平衡。“臟但快速”的路線也許適合將修改快速納入產(chǎn)品中,但由于“臟但快速”的修復(fù)有隱性成本,記得安排開(kāi)發(fā)人員回頭去妥善修復(fù)解決,納入下一個(gè)計(jì)劃發(fā)布的版本中。

  88.?不要急于求解(?Eben?Hewitt?)

  不要立即著手去解決擺在面前的問(wèn)題,而要看看自己是否可以改變問(wèn)題。

  89.?打造上手的系統(tǒng)(?Keith?Braithwaite?)

  我們構(gòu)建的系統(tǒng),用戶體驗(yàn)應(yīng)該是“上手的”,一定要能夠幫助人們做事,這是成功的決定性因素。

  90.?找到并留住富有激情的問(wèn)題解決者?(?Chad?La?Vigne?)

  以正確的方式有效地經(jīng)營(yíng)開(kāi)發(fā)團(tuán)隊(duì)。應(yīng)確保團(tuán)隊(duì)具有打不垮的首發(fā)陣容,而一旦已經(jīng)擁有“常勝鐵軍”,就要竭力維持。

  91.?軟件并非真實(shí)的存在?(?Chad?La?Vigne?)

  需求文檔不是藍(lán)圖,軟件并非真實(shí)的存在,虛擬世界中的軟件是柔韌可變的。

  92.?學(xué)習(xí)新語(yǔ)言?(?Burkhardt?Hufnagel?)

  防止溝通不暢和誤解?。架構(gòu)師要能夠以業(yè)務(wù)人員可理解的術(shù)語(yǔ)向業(yè)務(wù)人員解釋其中的問(wèn)題,以程序員可理解的術(shù)語(yǔ)向程序員轉(zhuǎn)述業(yè)務(wù)上的問(wèn)題。

  93.?沒(méi)有永不過(guò)時(shí)的解決方案(?Richard?Monson-Haefel?)

  今天做出的選擇,在未來(lái)很大程度上會(huì)是錯(cuò)誤的,只要選擇能滿足當(dāng)前需求的最佳解決方案就行了。

  94.?用戶接受度問(wèn)題(?Norman?Carnovale?)

  減輕用戶接受度問(wèn)題帶來(lái)的風(fēng)險(xiǎn)。人們并不總是滿心歡喜地接受新系統(tǒng)或系統(tǒng)的重大升級(jí),架構(gòu)師的目標(biāo),是要去了解和衡量接受度問(wèn)題帶來(lái)的威脅,并朝能減輕這些威脅的方向開(kāi)展工作。最有效的解決辦法,是運(yùn)用系統(tǒng)設(shè)計(jì)本身來(lái)消解個(gè)中憂慮,包括培訓(xùn)、定期安排系統(tǒng)的演示,并分享用戶從新系統(tǒng)中將會(huì)獲得的知識(shí)。

  95.?清湯的重要啟示?(?Eben?Hewitt?)

  軟件架構(gòu)設(shè)計(jì)需要不斷的精煉濃縮。反思各種構(gòu)想,直至可以確定系統(tǒng)中每個(gè)需求的本質(zhì)。

  96.?對(duì)最終用戶而言,界面就是系統(tǒng)?(?Vinayak?Hegde?)

  最終用戶通過(guò)用戶界面訪問(wèn)系統(tǒng),用戶交互應(yīng)和產(chǎn)品健壯性和性能同等重要,好的用戶界面能夠幫助客戶提高生產(chǎn)力,能夠幫助人們更加高效,也有利于產(chǎn)品自身的業(yè)務(wù)收益。

  97.?優(yōu)秀軟件不是構(gòu)建出來(lái)的,而是培育起來(lái)的(?Bill?de?hóra?)

  要抵制試圖設(shè)計(jì)出龐大完整的系統(tǒng)來(lái)“滿足甚或超出”已知需求的特性期望的想法,要有宏偉的遠(yuǎn)景,

  但不要有龐大的設(shè)計(jì)。設(shè)計(jì)盡可能小的系統(tǒng),幫助成功交付,并推動(dòng)它向宏偉遠(yuǎn)景目標(biāo)不斷演化。

  98. ???客戶需求重于個(gè)人簡(jiǎn)歷

  客戶需求至上。為了自己的簡(jiǎn)歷更炫而采用新技術(shù)是沽名釣譽(yù),往往事與愿違。

  99. ???多用書(shū)面方式總結(jié)架構(gòu)師的思維模式,多講述和分享,提高溝通能力和影響力

  架構(gòu)師的溝通能力和影響力很重要,要利用大會(huì)和互聯(lián)網(wǎng),把自己的思維模式和架構(gòu)體系整理出來(lái),提煉,并多講述。這樣可以不斷提高自己的總結(jié)能力,溝通能力和影響力,提高日常跟團(tuán)隊(duì)的協(xié)作能力。

? ? ? ?本文轉(zhuǎn)自itwriter的“架構(gòu)師大會(huì):頂級(jí)架構(gòu)師應(yīng)該知道的99件事”,稍有改動(dòng)。本文是針對(duì)中國(guó)架構(gòu)師大會(huì)宣傳而寫,但是文章不乏很多架構(gòu)師箴言和經(jīng)驗(yàn),值得大家學(xué)習(xí)和研究。


申明:感謝原創(chuàng)作者的辛勤付出。本號(hào)轉(zhuǎn)載的文章均會(huì)在文中注明,若遇到版權(quán)問(wèn)題請(qǐng)聯(lián)系我們處理!

Elasticsearch在線分享直播

劉征,Elastic 中國(guó)技術(shù)布道師

《DevOps Handbook》《The Site Reliability Workbook》譯者;精通DevOps/SRE/ITSM等理論體系和相關(guān)實(shí)踐等落地實(shí)現(xiàn)。致力于通過(guò)社區(qū)推廣開(kāi)源Elastic Stack技術(shù)堆棧的應(yīng)用,包括運(yùn)維大數(shù)據(jù)分析平臺(tái)、云原生服務(wù)治理、APM全鏈路監(jiān)控和AIOps等使用場(chǎng)景。

使用 Elastic Stack 監(jiān)測(cè) COVID-19 疫情爆發(fā)網(wǎng)絡(luò)研討會(huì)2020年4月8日15:00 線上分享

用實(shí)際應(yīng)用場(chǎng)景探索 Kibana 的多種用法 ,構(gòu)建自己的個(gè)性化儀表板,從公共數(shù)據(jù)源跟蹤全球各地的COVID-19疫情狀況。在本演示中,您將了解如何輕松地在Elasticsearch中索引任何類型的數(shù)據(jù)索引,使用采集節(jié)點(diǎn)對(duì)其進(jìn)行數(shù)據(jù)轉(zhuǎn)換,然后使用Kibana 的可視化、儀表板和地圖對(duì)疫情現(xiàn)狀進(jìn)行分析。

亮點(diǎn):

Elastic在CNCF云原生交互場(chǎng)景中的位置

在Kubernetes上運(yùn)行?Elastic?Stack

演示:如何使用 ECK 部署、防護(hù)和升級(jí) Elasticsearch

Beats?中使用?autodiscover?監(jiān)測(cè)動(dòng)態(tài)工作負(fù)載的入門知識(shí)

在Kubernetes上掌握可觀測(cè)經(jīng)驗(yàn)

報(bào)名方式:識(shí)別圖片二維碼或閱讀原文報(bào)名


想要加入中生代直播群的小伙伴,請(qǐng)?zhí)砑尤褐?strong>大白的微信

申請(qǐng)備注(姓名+公司+技術(shù)方向)

總結(jié)

以上是生活随笔為你收集整理的收藏!架构师需要掌握的99条铁律的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。