版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 洞見企業(yè)架構之道在軟件行業(yè),架構師和工程師就類似于上帝,創(chuàng)建出形形色色的軟件產品來服務于人類。要想當好這個角色,架構師自然也需要具備某種上帝的視角,來觀察并表達這個世界。討論什么是架構、怎樣做好架構、軟件架構如何落地、如何寫好程序等問題,幫你理清技術、業(yè)務和架構之間的關系,洞見架構之道,進階為更優(yōu)秀的架構師。什么是架構?架構實際上解決的是人的問題,架構的產出物就是對問題的分析,以及解決問題的方案。它包括:拆分的原則以及理由,溝通合并的原則以及理由,以及拆分,拆分出來的各個部分和合并所對應的角色和所需要的核心能力等。1、根據要解決的問題,對目標系統的邊界進行界定。2、對目標系統按某個原則的進行
2、切分。切分的原則,要便于不同的角色,對切分出來的部分,并行或串行開展工作,一般并行才能減少時間。并對這些切分出來的部分,設立溝通機制。3、根據 2,使得這些部分之間能夠進行有機的聯系,合并組裝成為一個整體,完成目標系統的所有工作。這就是架構。認識概念是理解架構的基礎要做好架構首先必須具備的能力是能夠正確的認識概念,能夠發(fā)現概念背后所代表的問題,進而才能夠認識目標領域所需要解決的問題。比如,什么是“杯子”?杯子這個概念并不是瓷器,回歸作用:其實是為了解決“人需要一個可單手持握,但是希望避免直接接觸所盛物體”這個問題。每個概念實際上所解決的,還是人遇到的某個特定的問題,我們把解決問題的解決方案,給
3、定了一個名字,這個名字就是對應的某個特定的概念。事實上,這一能力,在任何一個領域都是適用的。比如我們如果想要學習一項新的技術,如 Hibernate、Spring、PhotoShop、WWW、Internet 等等,如果知道這些概念所要解決的問題,學習這些新的技術或者概念就會如虎添翼,快速的入手;學習一個新的領域,也會非常的快速有效;使用這些概念來解釋問題,甚至發(fā)明新的概念都是很容易的事。為什么強調這個?因為做架構的時候,很多時候都是在一個新的領域解決問題,必須要快速進入并掌握這個領域,然后才能夠正確的解決問題。如何做好架構?第一、識別問題,找到問題的主體如果把真正的問題找到,那么問題就已經解
4、決了 80% 了。這個能力基本上就決定了架構師的水平。找出問題的主體,是做架構的首要問題。這也是前面強調的,我們要解決的問題,一定都是人的問題。更進一步,作為軟件工程師或者架構師,我們大部分時候是要去解決別人的問題,“別人”是誰,是值得好好思考的。再進一步,我們一定要明白,任何找上架構師的問題,絕對都不是真正的問題。為什么呢? 因為如果是真正的問題的話,提問題過來的人肯定都能夠自己解決了,不需要找架構師。架構師都要有這個自覺:發(fā)現問題永遠都比解決問題來的更加重要。一般來說,從問題暴露的點,一點點去溯源查找,一定會找出來誰的問題,以及是什么問題。最壞情況就是當我們時間或者能力有限,實在是無法定位
5、出是誰的問題的時候,比如系統出故障,也就意味著我們無法根本解決問題。這時最好的辦法就是去降低問題發(fā)生所帶來的成本,盡量去隔離問題影響的范圍。給我留出時間和空間去識別真正的問題??偨Y一下,要正確的認識問題,需要問兩個問題:1、這是誰的問題?2、有什么問題?當得到的回答是支支吾吾的時候,我們就知道正確的方向在哪兒,以及需要做哪些事了。以我的經驗,問題 1 會花比較多的時間,也是支支吾吾最多的地方,因為架構要解決的問題都是人的問題。但是一旦確定了答案,問題 2 就會變得非常容易??梢赃@樣說,架構師的能力大部分會體現在問題 1 的識別上。第二、架構切分,本質上是利益的調整在識別出是誰的問題之后,會發(fā)現
6、,在大部分情況下,問題都迎刃而解,不需要做額外的動作。但總還有一部分確實是有問題的,需要做調整,那么就必須要有所動作,做相應的調整。這個調整就是架構的切分。簡單來說:1、架構的切分的導火索是人的負載太重。2、架構的切分實際就是對 stakeholder 的利益進行切分或合并,使得每個 stakeholder 的權責是對等的,每個 stakeholder 可以為自己的利益負責。3、架構切分的最終結果都會體現在組織架構上,只有這樣才能夠讓架構落地并推進。4、架構切分的結果一定是一個樹狀,這也是為什么會產生分層。層數越多溝通越多,效率越低,分層要越少越好。盡可能變成一顆平衡樹,才能讓整個系統的效率最
7、大化。什么是軟件?軟件的歷史,實際上可以說是用機器模擬人的歷史。不管大家有沒有意識到,我們都有意無意的在計算機上模仿人類的行為。人們越來越愿意把原來只有人才能做的事情,交給計算機來做。結果就導致軟件越來越豐富,能夠做的事情也越來越多,成本也越來越低。所以,軟件的本質,其實就是通過把人類的日常工作生活虛擬化,減少成本,提升單個人員的生產力,提升人類自己的利益。隨著軟件的規(guī)模的變大,程序從早期由一個人完成,也逐漸變成了由很多不同角色的人共同合作來完成。軟件工程師的職責在這個浪潮中,不堪重負,自然而然就分拆為不同的角色,形成了一個獨特的架構體系。這一切的背后,仍然是為了提升人類自己的利益,解決人類自
8、己的問題。軟件架構到底是要解決什么問題?如前所述,軟件實際上就是把現實生活模擬到計算機中,并且軟件是需要在計算機的硬件中運行起來的。要做到這一點需要解決兩個問題:一、業(yè)務問題具體的現實生活狀態(tài)下,沒有軟件的時候,所解決的問題的主體是誰,解決的是什么問題,是如何解決,如何運作的?二、計算機問題如何把現實生活用軟件來模擬?模擬出來的軟件,需要哪些硬件設施才能夠滿足要求? 并且當訪問量越來越大的時候,軟件能否支持硬件慢慢長大,性能線性擴展?因為硬件是可能會失效的,軟件如何在硬件失效的情況下,仍然能夠保證可用性,讓用戶能夠不中斷的訪問軟件提供的服務?怎么收集軟件產生的數據,為下一階段的工作提供依據?總
9、之,軟件架構包括了:代碼架構,以及承載代碼運行的硬件部署架構。實際上,硬件部署架構最終還是由代碼的架構來決定。架構師沒有話語權,還架什么構!架構師必須是一個組織的領導人,有權利調動這個組織的架構,才能夠更好的發(fā)揮架構師的作用,更好的把利益的調整落到實處。如果架構師只能夠通過建立某些流程來行使架構師的權利,比如強制架構 review,反而會造成很多內部不必要的沖突,最終都會導致這些流程流于形式,得不償失。反過來,具備架構師能力的組織領導人,一定是一個很好的領導,這個組織一定是很健康向上的,因為每個人的權利和義務就是比較均等的。并且這類領導對于組織成員權利和義務的對等狀況會非常的敏感,會及時的調整
10、組織架構,在問題發(fā)生之前就解決了。這樣這個組織就會具備更好的抗壓能力,能夠更好的為這個組織的客戶服務,這個組織的成員內心一定都是比較平衡的,每個人的能力都能夠得到比較好的發(fā)展。所有架構的核心就是組織架構?;蛘咭部梢赃@樣說,一個合格的組織領導人,一定必須是一個合格的架構師。從架構的角度看如何寫好代碼我們經常會聽說,重寫代碼,推翻原有架構,重新設計等等說法,來說明架構的進化。這實際上就是當初為了完成任務,沒有充分思考所帶來的后果。工程師要想真正快速的完成代碼工作,就要克服自己對時間的恐懼,真正的去研究業(yè)務的問題,相關 stakeholder 的利益,把這個變成我們的習慣。寫代碼的時候讓該出現邏輯的
11、地方出現邏輯,讓不該出現的地方不能出現。一旦不該出現的地方出現了邏輯,那么要馬上意識到,這個地方是一個坑,這個問題一定和業(yè)務的分析不透徹有關系。這里還有作者分析的案例和圖示,請看書細細品味吧。所以,你理清技術、業(yè)務和架構之間的關系了嗎?技術人普遍看不起業(yè)務,認為技術更高端,而業(yè)務太低端,并且業(yè)務往往喜歡給技術挖坑。業(yè)務則覺得技術眼光高卻實際解決不了問題,而且常常理解有偏差,但是業(yè)務又無可奈何,因為自己不會。為什么會發(fā)生這種沖突呢?這是因為技術人員很多時候關心的技術,和業(yè)務的主要目標往往不是直接對應的;業(yè)務也是負責某一部分的業(yè)務,也不是和業(yè)務的主要目標直接對應的,都是樹的分支節(jié)點。只有直接解決業(yè)
12、務問題的那個技術(或業(yè)務)樹的根節(jié)點會和業(yè)務直接相關。所以一旦產生沖突,一般必須兩個根節(jié)點(一般都是領導)碰面才能解決問題,就是這個原因他們都知道業(yè)務主要目標。這也是為什么下層無法理解上層,而上層都喜歡下軍令狀,要求下層執(zhí)行。人只有盡量去理解上層的問題才能做下層的分拆。在軟件行業(yè),這個根節(jié)點技術就是軟件。這也是為什么架構師要認識什么叫軟件,軟件解決誰的問題,什么問題,軟件本身又是怎么分拆的,才能夠更好的組合不同的技術,完成業(yè)務的目標。而軟件里面和業(yè)務直接相關的,只有 Business Domain 這一部分。用人來打比方,Business Domain 相當于人的大腦,而 Service,Repository,Glue Code 等部分所采用的技術,全部都是計算機自己領域的技術,都是為了能夠讓程序跑起來,相當于人的四肢。我們大部分開發(fā)人員的工作主要專注于四肢部分。我們真正應該投入的是大腦部分。因為大腦能夠決定四肢長什么樣,而不是反過來。很多架構師、技術人員主要專注于計算機相關
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司房屋租賃協議書樣本
- 2024年農產品購銷合同范本簡單
- 離婚資金監(jiān)管協議模板2024年
- 簡單易行的個人汽車租賃合同模板
- 租賃合同爭議調解
- 個人房屋租賃協議書樣本
- 商品房合同權利轉讓協議
- 2024年租地合同協議書
- 創(chuàng)業(yè)團隊股權分配協議
- 塔機租賃協議
- 鋰離子電池PFMEA過程失效模式及后果分析
- 預制箱梁常見問題以及處理方案
- 水利工程質量監(jiān)督管理辦法
- 二手挖掘機評估表
- 閥門壓力等級對照表(共10頁)
- 小學數學六年級“24點”試題及答案
- 海利普SJ系列變頻器使用說明書
- 接地變使用說明書(共11頁)
- 產品外觀檢驗標準(全球通用)
- 博雅計劃試題
- 如何高效進行初中信息技術學業(yè)水平考試復習
評論
0/150
提交評論