一个架构师谈什么是架构以及怎么成为一个架构师--转载
原文地址:http://blog.csdn.net/lifetragedy/article/details/43925857
新年新事,來點輕松的話題。我們調(diào)劑一下后再繼續(xù)講CAS SSO單點登錄吧因為后面的內(nèi)容全部和代碼有關,大家會覺得枯燥。所以今天我們先來點”番外篇“,講講什么是架構師,什么是架構這個永恒的話題吧。此篇源出自我在公司內(nèi)部寫的一個PPT,它是用于在公司內(nèi)部向廣大技術人員做普及用的一個資料,而CSDN這邊的編輯不支持圖文混排的效果,因此一些章節(jié)我就直接截取自我的PPT里的內(nèi)容了,這樣可能對大家在閱讀上會顯得更加生動和活潑一些吧。
?
架構的定義
先來看看軟件架構的普遍定義吧。?
- 一個程序和計算系統(tǒng)軟件體系結構是指系統(tǒng)的一個或多個結構。結構中包括軟件的構建,構建的外部可見屬性以及它們之間的相互關系。
- 體系結構并非可運行軟件。確切的說,它是一種表達,使軟件工程師能夠:
軟件架構的生命周期
軟件開發(fā)有其生命周期,它應該是: 而軟件架構也有著其生命周期,它又是怎么樣的呢?軟件架構的重要性
為什么說一個軟件架構是很重要的呢?直接編程直接開發(fā),多EASY?請看下面幾點:
- 軟件架構能夠滿足系統(tǒng)的品質(zhì)
- 架構設計使受益人達成一致的目標
- 架構設計能夠支持計劃編制過程
- 架構設計對系統(tǒng)開發(fā)的指導性
- 架構設計能夠有效地管理復雜性
- 架構設計為復用奠定了基礎
- 架構設計能夠降低維護費用
- 架構設計能夠支持沖突分析
什么是好的軟件架構
這個問題,可能大家一直都在問,包括一些IT企業(yè)也在問,對于這個問題的回答,可能不僅僅是一個簡單的語句或者是定義就可以回答的出的,我們來看下面的幾個形象的例子: 這個是什么東東呢?樂高玩具,樂高玩具大家肯定都玩過吧? 它即可以以一個完整的模型賣給你,你也可以把它全部打碎了重新從一個模型自由的再去組裝成另一個模型,因為每一個樂高的模塊在橫向、堅向里都有標準的接口,這就是我們常說的高內(nèi)聚、低耦合。什么又是糟糕的架構
大家看看上面這幅圖是什么? 一個是清代的八股文,一個是孔乙己。 還記得回字的四種寫法嗎? 那么你專門就研究回字的四種寫法 ,但你有沒有想過我把回字折開來又可以變成幾個字?是否好折?要知道最時髦的并不一定是最好的
為什么M1A2和阿帕奇直升機里不用A8處理器,或者是最新的奔騰處理器啊?實用、經(jīng)過檢驗的才是最好的!成功的軟件又是怎么樣的呢
我們談的是軟件架構,架構的最終體現(xiàn)是一個軟件,那么什么是成功的架構什么是成功的軟件呢? 大家看左邊的這個圖,是美國的“阿利伯克級”宙斯盾驅(qū)逐艦,右邊的是印度模仿美國的宙斯盾自己設計和建造的”德里級”的“咖喱盾”驅(qū)逐艦。 兩艘戰(zhàn)艦一對比,怎么樣?- 一個是模塊化的設計,整體線條流暢,戰(zhàn)損時模塊可以任意替換。
- 一個卻是拼拼湊湊,線路外露,甲板上布滿了各種電子設備和天線,一旦戰(zhàn)損,極難維護
架構之美
架構,架構,到底什么是架構?我以前上大學時有一個70多歲的老教授,他上課每講20分鐘左右,需要2個同學”架“著去上一次WC,我們的架構師當然不是指這種”架構濕“。那么我們一直說的架構,到底它是一個什么樣的東西呢? 怎么樣又可以做出一個完美的架構呢?架構就像是迷蹤拳
動作輕靈敏捷,靈活多變 它其實違背一切傳統(tǒng)拳法,因此可以克敵制勝。架構就像是獨孤九劍
破劍式、破槍式、無招勝有招,它發(fā)源于傳統(tǒng)武術,又擴展了傳統(tǒng)的武術架構就像是一件藝術珍品
有時一個看似簡單的架構往往卻是一件藝術珍品。 大家知道這幅畫嗎?他是挪威畫家蒙克的一幅作品叫”吶喊“,蒙克這個人是一個瘋子,這幅畫很簡單,就是隨手涂鴉一般,但是大家可知道這幅畫值多少錢嗎?2012年該畫在紐約蘇富比拍賣上以1.19億美元被拍賣。架構的意境
一個好的架構不應該受限于框架,受限于語言,受限于技術,受限于各種條條框框,它是一種意境。架構時需要考慮的幾個基本因素
JAVA通用領域的相關技術
當然,我們這邊主要說的是JAVA,那么作為一名學習JAVA、J2EE的架構師來說,要具備一些什么樣的技能才能達到架構師的水平呢? 上面這張圖,我們這樣來看,它分為3個部分:架構師的職能
說了這么多架構,我們來說說架構師吧。 大家看到了沒有,架構師的第一職責就是關注:non-functional requirements,即非功能性需求。 ? 很多人對功能性需求和非功能性需求的界線劃分還是不清楚,我這邊舉2個例子說明一下吧:功能性需求
頁面查詢,這個查詢是關聯(lián)哪些哪些數(shù)據(jù)庫表,因為我的業(yè)務是有這樣這樣的需求,在界面A里點了一個按鈕,然后彈出窗口B,在窗口B里要顯示什么樣的數(shù)據(jù),最后界面A里點完后,當我打開界面B時哪塊數(shù)據(jù)已經(jīng)隨之發(fā)生了更改。
?
非功能性需求
我們的系統(tǒng)查詢速度小于2S,是否考慮使用異步查詢、使用隊隊列機制,系統(tǒng)要求可以容納1000個并發(fā),這個系統(tǒng)要可以做成插件式的,要可以橫向擴展,要符合XXX協(xié)議,這個Webservice要做成SOAP HEAD內(nèi)帶有BASIC認證,還是做成符合NTLM的認證的,還是使用令牌環(huán)認證的?這個下拉框要做成即可輸入又可以下拉的,這塊認證要訪問LDAP? ? 很多以業(yè)務為主的項目型公司認為架構師就是trouble shooting(即排錯、查錯的意思,就是有錯誤、出問題了再找架構師),把架構師當成了fireman(救火員),可是你不自己想想為什么出了問題架構師過來2秒、2分鐘或者1天半可以解決你們1個月幾十人天天到零晨也解決不了的問題呢?嗯? ? 解決了說這是人家應該的,解決不了,說人家架構師不合格呢?是不是我們應該從這個軟件最早的框架上、架構上去發(fā)現(xiàn)一下問題呢? ? 架構師啊,這不是一個trouble shooting的問題啊。 ? 在節(jié)前我也進行了一些面試,出于純技術角度來說,即走架構師,TECH?LEADER這樣的路線的侯選人。 ? 我還是發(fā)覺了不少的問題這也是中國的一個通病:即我們的程序員,很多時候不是在做程序,而更多時候是在做業(yè)務邏輯,成了一個某一領域的業(yè)務人員了。 ? 當然,我們的程序員在其職業(yè)生涯的前3年、4年都是做某一塊領域的代碼的,這個是沒有問題的,但是請一定一定記住,我們是編碼,是IT,是程序員,不是“業(yè)務人員”!!!什么是IT?什么是程序員?什么是Tech Leader?什么是架構師? ? 這個問題大家有必要好好的去問一下自己,去好好的想一下,架構師的要求是什么?
? 我這邊隨便說一些東西:相信對一些要走技術道路的同學們是有幫助的:
TCP/IP協(xié)議,加密解密,計算機原理(增補反碼),JPG碼,MPEG2-3協(xié)議,邏輯電子電路,計算機編譯器原理(堆、棧、隊列),這些東西你平時工作時一直用到嗎?這些是你一直關注的底層嗎? ? 如果你是要走技術路線,一定一定請記得“數(shù)據(jù)庫+ASP/JSP”不是技術,它只比表單制作,報表制作人員稍微強了那么一點點。
? 請一定記住,技術路線關注的是非功能性需求,非功能性需求啊,就是一種一通百通的東西,有了這塊底蘊,任何需求和你說清了,對你來說是沒有任何“難度”的,或者你再去學,是可以舉一反三的啊。
最近一直面試一些侯選人,做架構師的,在此過程中我對此深有感受,找一個程序員開發(fā)不難,招一個架構師,難。。。唉,我覺得大家有必要要考慮一下,如果我走技術路線,我缺什么,我怎么補,還要關注些什么?
? 科技是第一生產(chǎn)力,管理方法論中的所謂的六SIGMA即六西格瑪?shù)牡谝粭l就是“技術人材是當下企業(yè)的第一生產(chǎn)力”,大家看看能夠發(fā)財?shù)氖悄男┕?#xff1f;阿里,淘寶,支付寶,GOOGLE, 騰迅,互聯(lián)網(wǎng),高科技等等等一些企業(yè),他們靠的不是業(yè)務邏輯,而是真正的技術,這足以說明問題了,所以大家如果要走技術道路,請多關注一下更細節(jié),更底層的東西吧。
? 這也是為什么我在之前的博文中所擅述的那些東西的原因,可見企業(yè)IT項目開發(fā)之七宗罪。
- 第一宗罪:重業(yè)務不重技術
- 第二宗罪:編程開發(fā)人員淪為業(yè)務開發(fā)人員、淪為碼農(nóng)
- 第三宗罪:IT市場淪為自由市場、小菜場一樣的叫買
- 第四重罪:技術無用論的誕生
- 第五宗罪:閉門造車,與實際脫節(jié),完全拋棄業(yè)務
- 第六宗罪:消極怠工?
- 第七宗罪:不思進取
架構師的分類
一般會把架構師分為:- 業(yè)務架構師即BA
- 系統(tǒng)架構師SA
架構師會做什么
一個架構師在一個團隊中或者說在一個企業(yè)中它具體要做哪些日常工作呢?架構師并不是萬能的
架構師很牛B,可是架構師也是人,他不是超人。架構師需要掌握的軟技巧
技術,是架構師的Hard Skill,那么架構師的Soft Skill有哪些呢?架構師不是皇冠上的明珠
大家一定一定要記住,架構師決不是像大家想像中的那樣,是所謂的皇冠上的明珠,架構師承擔的責任是相當?shù)拇蟮摹?/span> ?如何成為架構師
人類是如何進化的? 學習、使用工具、社會協(xié)作性、不斷的總結經(jīng)驗。架構師也會退化到比一般的程序員都不如
如果停止了學習的步伐,那么。。。。。。
?談架構師的自我修養(yǎng)
學習之道
需要掌握的基本功中的基本功
大家注意,上面這個列表在學習時是有先后順序的,從上至下分別為第一步,第二步,第三步。。。。。。不要覺得枯燥,你可以去試試,真的,被折騰著和被快樂著。Bad artist copy good artist steal
放正你的心態(tài)
不斷的需要自我激勵
成功的唯一方法便是,承認現(xiàn)實,超越現(xiàn)實,鼓起勇氣并善用它。- 學會平靜的對待生活中的不完美之處,適應自己的情緒,了解如何讓它們自然宣泄出去
- 學習如何把不完美的地方轉(zhuǎn)換成我們的優(yōu)勢,激發(fā)我們的創(chuàng)造力
- 自我激勵,不管外部條件是否有激勵性,找到一種激發(fā)最佳狀態(tài)的情緒,學習如何在我們的意識中制造一些波動來激勵我們前進
轉(zhuǎn)載于:https://www.cnblogs.com/davidwang456/articles/5083258.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的一个架构师谈什么是架构以及怎么成为一个架构师--转载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 读阿里亿级日活网关通道架构演进有感
- 下一篇: 大战C100K之-Linux内核调优篇-