中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

什么是架構(gòu)?

2018-07-20    來源:編程學習網(wǎng)

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

架構(gòu)漫談是由資深架構(gòu)師王概凱Kevin執(zhí)筆的系列專欄,專欄將會以Kevin的架構(gòu)經(jīng)驗為基礎(chǔ),逐步討論什么是架構(gòu)、怎樣做好架構(gòu)、軟件架構(gòu)如何落地、如何寫好程序等問題。專欄的目的是希望能拋出一些觀點,并引發(fā)大家思考,如果你有感觸或者新的感悟,歡迎聯(lián)系專欄負責人Gary(微信greenguolei)深聊。

  本文是漫談架構(gòu)專欄的第一篇,作者將會通過類比的方式來介紹什么是架構(gòu)以及為什么會產(chǎn)生架構(gòu)。

  緣起

  一直以來,在軟件行業(yè),對于什么是架構(gòu),都有很多的爭論,每個人都有自己的理解。甚至于很多架構(gòu)師一說架構(gòu),就開始談論什么應用架構(gòu)、硬件架構(gòu)、數(shù)據(jù)架構(gòu)等等。我曾經(jīng)也到處尋找過架構(gòu)的定義,請教過很多人,結(jié)果發(fā)現(xiàn),沒有大家都認可的定義。套用一句關(guān)于big data流行的笑話,放在架構(gòu)上也適用:

Architecture is like teenage sex,everybody talks about it,nobody really knows what is it。

  事實上,架構(gòu)在軟件發(fā)明時的N多年以前,就已經(jīng)存在了,這個詞最早是跟隨著建筑出現(xiàn)的。所以,我覺得有必要從源頭開始,把架構(gòu)這個概念先討論清楚,只有這樣,軟件行業(yè)架構(gòu)的討論才有意義。

  什么是架構(gòu)?

  架構(gòu)的英文是Architecture,在Wikipedia上,架構(gòu)是這樣定義的:

Architecture (Latin architectura, from the Greek ?ρχιτ?κτων arkhitekton"architect", from ?ρχι- "chief" and τ?κτων "builder") is both the process and the product of planning, designing, and constructing buildings and other physical structures。

  從這個定義上看,架構(gòu)好像是一個過程,也不是很清晰。為了講清楚這個問題,我們先來看看為什么會產(chǎn)生架構(gòu)。

  為什么會產(chǎn)生架構(gòu)?

  想象一下,在最早期,每個人都完全獨立生活,衣、食、住、行等等全部都自己搞定,整個人類都是獨立的個體,不相往來。為了解決人類的延續(xù)的問題,自然而然就有男女群居出現(xiàn),這個時候就出現(xiàn)了分工了,男性和女性所做的事情就會有一定的分工,可是人每天生活的基本需求沒有發(fā)生變化,還是衣食住行等生活必須品。

  但是一旦多人分工配合作為生存的整體,力量就顯得強大多了,所以也自然的形成了族群:有些人種田厲害,有些人制作工具厲害,有些地方適合產(chǎn)出糧食,有些地方適合產(chǎn)出棉花等,就自然形成了人的分群,地域的分群。當分工發(fā)生后,實際上每個人的生產(chǎn)力都得到了提高,因為做的都是每個人擅長的事情。

  整個人群的生產(chǎn)力和抵抗環(huán)境的能力都得到了增強。為什么呢?因為每個人的能力和時間都是有限的,并且因為人的結(jié)構(gòu)的限制,人同時只能專心做好一件事情,這樣不得已就導致了分工的產(chǎn)生。既然分工發(fā)生了,原來由一個人干生存所必需的所有的事情,就變成了很多不同分工的角色合作完成這些事情,這些人必須要通過某些機制合在一起,讓每個人完成生存所必需的事情,這實際上也導致了交易的發(fā)生(交易這部分就不在這里展開了,有機會再討論)。

  在每個人都必須自己完成所有生活必須品的生產(chǎn)的時候,是沒有架構(gòu)的(當然在個人來講,同一時刻只能做有限的事情,在時間上還是可能會產(chǎn)生架構(gòu)的)。一旦產(chǎn)生的分工,就把所有的事情,切分成由不同角色的人來完成,最后再通過交易,使得每個個體都擁有生活必須品,而不需要每個個體做所有的事情,只需要每個個體做好自己擅長的事情,并具備一定的交易能力即可。

  這實際上就形成了社會的架構(gòu)。那么怎么定義架構(gòu)呢?以上面這個例子為例,把一個整體(完成人類生存的所有工作)切分成不同的部分(分工),由不同角色來完成這些分工,并通過建立不同部分相互溝通的機制,使得這些部分能夠有機的結(jié)合為一個整體,并完成這個整體所需要的所有活動,這就是架構(gòu)。由以上的例子,也可以歸納出架構(gòu)產(chǎn)生的動力:

  1. 必須由人執(zhí)行的工作(不需要人介入,就意味著不需要改造,也就不需要架構(gòu)了)

  2. 每個人的能力有限(每個人都有自己的強項,個人的產(chǎn)出受限于最短板,并且由于人的結(jié)構(gòu)限制,同時只能專注于做好一件事情,比如雖然有兩只眼睛,但是只能同時專注于一件事物,有兩只手,無法同時做不同的事情。ps. 雖然有少部分人可以左手畫圓右手畫框,但是不是普遍現(xiàn)象)

  3. 每個人的時間有限(為了減少時間的投入,必然會導致把工作分解出去,給擅長于這些工作的角色來完成,見2,從而縮短時間)

  4. 人對目標系統(tǒng)有更高的要求(如果滿足于現(xiàn)狀,也就不需要進行架構(gòu)了)

  5. 目標系統(tǒng)的復雜性使得單個人完成這個系統(tǒng),滿足條件2,3(如果個人就可以完成系統(tǒng)的提高,也不需要別的人參與,也就不需要架構(gòu)的涉及,只是工匠,并且一般這個工作對時間的要求也不迫切。當足夠熟練之后,也會有一定的架構(gòu)思考,但考慮更多的是如何提高質(zhì)量,提高個人的時間效率)

  有人可能會挑戰(zhàn)說,如果一個人對目標系統(tǒng)進行分解,比如某人建一棟房子,自己采購材料,自己搭建,難道也不算架構(gòu)嘛?如果對于時間不敏感的話,是會出現(xiàn)這個情況的,但是在這種情況下,并不必然導致架構(gòu)的發(fā)生。如果有足夠的自覺,以及足夠的熟練的話,也會產(chǎn)生架構(gòu)的思考,因為這樣對于提高生產(chǎn)力是有幫助的,可以縮短建造的時間,并會提高房子的質(zhì)量。事實上建筑的架構(gòu)就是在長期進行這些活動后,積累下來的實踐。

  當這5個條件同時成立,一定會產(chǎn)生架構(gòu)。從這個層面上來說,架構(gòu)是人類發(fā)展過程中,由懵懵懂懂的,被動的去認識這個世界,變成主動的去認識,并以更高的效率去改造這個世界的方法。以下我們再拿建筑來舉例加強一下理解。

  最開始人類是住在山洞里,住在樹上的,主要是為了躲避其他猛獸的攻擊,以及減少自然環(huán)境的變化,對人類生存的挑戰(zhàn)。為了完成這些目標,人類開始學會在平地上用樹木和樹葉來建立隔離空間的設施,這就是建筑的開始。但是完全隔離也有很多壞處,慢慢就產(chǎn)生了門窗等設施。

  建筑的本質(zhì)就是從自然環(huán)境中,劃出一塊獨占的空間,但是仍然能夠通過門窗等和自然環(huán)境保持溝通。這個時候架構(gòu)就已經(jīng)開始了。對地球上的空間進行切分,并通過門窗,地基等,保持和地球以及空間的有機的溝通。當人類開始學會用火之后,茅棚里面自然而然慢慢就會被切分為兩部分,一部分用來燒飯,一部分用來生活。當人的排泄慢慢移入到室內(nèi)后,洗手間也就慢慢的出現(xiàn)了。這就是建筑內(nèi)部的空間切分。

  這個時候人們對建筑的需求也就慢慢的越來越多,空間的切分也會變成很多種,組合的方式也會有很多種,比如每個人住的房子,群居所產(chǎn)生的宗教性質(zhì)的房子,集體活動的房子等等。這個時候人們就開始有意識的去設計房子,架構(gòu)師就慢慢的出現(xiàn)了。一切都是為了滿足人的越來越高的需求,提升質(zhì)量,減少時間,更有效率的切分空間,并且讓空間之間更加有機的進行溝通。這就是建筑的架構(gòu)以及建筑的架構(gòu)的演變。

  總結(jié)一下,什么是架構(gòu),就是:

  1. 根據(jù)要解決的問題,對目標系統(tǒng)的邊界進行界定。
  2. 并對目標系統(tǒng)按某個原則的進行切分。切分的原則,要便于不同的角色,對切分出來的部分,并行或串行開展工作,一般并行才能減少時間。
  3. 并對這些切分出來的部分,設立溝通機制。
  4. 根據(jù)3,使得這些部分之間能夠進行有機的聯(lián)系,合并組裝成為一個整體,完成目標系統(tǒng)的所有工作。

  同樣這個思考可以展開到其他的行業(yè),比如企業(yè)的架構(gòu),國家的架構(gòu),組織架構(gòu),音樂架構(gòu),色彩架構(gòu),軟件架構(gòu)等等。套用三國演義的一句話,合久必分,分久必合。架構(gòu)實際上就是指人們根據(jù)自己對世界的認識,為解決某個問題,主動地、有目的地去識別問題,并進行分解、合并,解決這個問題的實踐活動。架構(gòu)的產(chǎn)出物,自然就是對問題的分析,以及解決問題的方案:包括拆分的原則以及理由,溝通合并的原則以及理由,以及拆分,拆分出來的各個部分和合并所對應的角色和所需要的核心能力等。

標簽:

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:svn常用命令整理

下一篇:從架構(gòu)的角度看,如何寫好代碼?