當前位置:
首頁 > 科技 > 架構拆分原理解析

架構拆分原理解析

作者 | 王概凱

編輯 | 小智

?個?命周期過程為什麼可以做架構拆分?架構拆分時需要有什麼前提條件嗎?對於這些問題很多?比較迷茫。本?嘗試描述作者對架構拆分原理的理解,不?定正確,請各位讀者指正。

為什麼可以進行架構拆分

先來看看?個主體?命周期的內部活動。這些?命周期活動都有?個很明確的特徵:前?個活動的結果是下?個活動的起始條件。既然前?個活動的產出是下?個活動的起始條件,那麼也意味著前?活動已經結束,下?個活動也就和上?個活動天然的沒有任何耦合,保證了每個活動本身是內聚的,因此每個連續的活動都存在拆分的可能。同時,既然是同?個主體的?命周期活動,這也意味著不同活動之間有事物在空間上進?傳遞。反過來,為什麼這些活動組成了?個事物的?命周期?這是因為這些活動都是圍繞著同?個事物進?加?,因此推進了這個事物的向前發展,所體現的是時間對這個事物的作?。

那麼為什麼可以把?個主體上的不同?命周期活動拆分出來?有前?的不耦合的前提還不?以能形成拆分,我們還需要識別不同活動中所傳遞的事物與執?活動的主體之間的關係。如果某個活動中所傳遞的事物不是執?該活動主體的?身,那麼該活動屬於其主體非核??命周期活動,是可以拆分出來的。

以?吃?飯為例,為什麼吃飯是?的核??命周期活動呢?吃?飯的活動,是以?飯為輸入,並且把?飯消化後轉換為?的能量的過程。?餐?餐的吃飯是按順序發?的,每?餐之間傳遞的是?這個形體。這個形體的維持就來源於吃飯後所消耗的能量,?且下?餐吃飯並消化的活動所需要的能量,來源於上?餐消化的結果所產?的能量。所以,只要?個活動中傳遞的是該執?活動的主體?身,那麼這個活動就是該活動執?者的核??命周期活動。那麼吃飯與吃飯之間所傳遞和保持的是吃飯的???本身,因此,吃飯是?的核??命周期,不可以拆分出去。

為什麼?吃飯和產??飯可以拆分開來呢??先是因為這是連續的兩個步驟,前?個步驟即產?飯的結果是後?個步驟即吃飯的輸入。產?飯的結果出來後,產?飯的?命周期已經結束,所以產?飯和吃飯兩個?命周期沒有耦合,因此存在拆分的可能性。其次,?類執?產?飯的?命周期過程中所傳遞的事物是??,不是執?產?飯的?類本身,因此這個活動屬於?類的非核??命周期,因此產?飯的活動才可以從?的?命周期活動中獨?出來,分?給其他?執?。

同時,這兩個步驟中的任何?個步驟本身,都有?個確定的起點和終點,這個步驟推進的?的就是為了達到該步驟終點時所產?的輸出,也可以認為該步驟產?了?個果實。因此,每?個步驟本身也都是?個獨?的?命周期,所以每?個步驟本身也是內聚的,有其?身的業務過程和?標,所以每?個步驟被拆分出來後,也是可以獨?存在的。

既然每?個步驟本身都是?命周期,那麼?然有其?身的?命周期活動來推進其?命周期。也就是說,當這個步驟被拆分出來後,這個步驟也可以進?步的根據其?身的步驟進?拆分,產?下?級別的??命周期,形成其?身的架構樹。

同時,每?個級別的拆分,也都要技術的幫助來完成拆分的落地和實現。如果缺乏拆分的技術,那麼這個拆分就是當前技術?平下的最終節點了,無法再進?步往下拆分。

比如前述吃飯的例?中,?類吃飯分為產??飯和吃?飯兩個步驟。那麼第?個步驟是產??飯,其?的是形成??飯,所以這個步驟本身也是?個?命周期。為達到形成??飯這個?的,則需要經歷稻?的種植、收穫、製作??、燒制的這?過程,才能夠形成?飯,這是產??飯的?命周期活動程序。這些活動也必須要按照時間順序?步?步的發?,前?活動的結果為後?活動的輸入。?執?這些活動的主體是?類,這些活動中所傳遞的事物是??,因此這些活動屬於??的核??命周期,可以在?類?命周期活動中拆分出來形成分?。

同樣,還繼續可以進?下?級別的拆分,比如燒制?飯也可以進?步進?拆分,因為燒制?飯需要燃料,先有燃料才能夠燒制?飯,因此可以拆分為?飯燒制和燃料的產?,就形成了燃料的?產?命周期。?燃料的?產?命周期過程中傳遞的是燃料本身,所以燃料的?產也可以進?拆分,進?步形成?類的分?。

這樣不斷拆分下去,?類的?個很基本的?命周期活動「吃飯」,就形成了?個非常龐?的產業。拓展開來從整個社會來看,?個社會的?產為什麼往往可以分為吃、穿、住、?、醫療等???業??個國家為什麼要保障吃穿、住、?、醫療等?業?並且這些?業在整個社會的佔比非常??因為這些?業本身就是為了滿??類核??命周期活動,是每個?的核??命周期活動進?架構拆分所形成的。這些核??命周期的活動本身不會因為拆分?發?變化,但是拆分可以使得這些核??命周期活動的效率得到提升,縮短?們完成這些核??命周期所需的時間,提升每個?的?命質量。

架構拆分的原理

因此我們可以得到?個結論:在?個主體上連續發?的活動步驟,在空間上確保了兩個步驟之間的業務不耦合,?只有不耦合才能拆分?不同步驟間傳遞的事物是否是執?該步驟的主體?身,決定了該步驟是否屬於執?該步驟主體的核??命周期活動。如果某個步驟傳遞的不是執?該步驟主體的?身,則該步驟是執?該步驟主體的非核??命周期,那麼就可以拆分。如果兩者同時滿?,這個步驟?定可以從其執?主體拆分出去。

?且對於?個主體不同的步驟進?拆分時,該主體最少有?個步驟所傳遞的是執?這個步驟主體的?身、也就是說該主體最少有?個核??命周期活動,以訪問並組合拆分出去的每個步驟來得到最終結果,以確保這些拆分可以組合併完成拆分前的原有?命周期,這?特徵也形成了訪問?命周期。這?特徵確保了原主體可以從拆分中得利,也確保了拆分後原主體的整體業務不會發?變化。也可以看出來,架構拆分和訪問?命周期是?對雙?兄弟,?個的出現必然會導致另?個的出現。

同時,拆分出來的每個步驟本身也是在傳遞某個事物的,也有其?身的步驟,於是也符合架構拆分的條件,可以繼續重複前?的拆分過程。如此循環下去,?個主體的?命周期從初始不同的連續多個步驟,逐漸長成了?顆架構樹。這是不是很像?個種?發育成?棵樹的過程?所有的架構拆分都是樹的長?,其最早的來源就是?顆種?,但是這顆最初的種?具備了拆分的所有要素。

由此也可以看出,為什麼可以拆分,是因為不同主體所佔的空間不同的緣故,可以分離。?某主體?身的連續步驟,則是該主體在其獨佔空間上的連續變化,反應出來也就是時間。

但是要拆分出去,就必須要確保能夠組合回來。?組合回來的?式,就是去獲取拆分後所執?的結果,也就是訪問。沒有訪問的達成,拆分就失去意義了,因為無法組合回來。?訪問的達成,就必須要有?個訪問者,?個空間的通道,?個訪問的?標。看到這?可以發現,這?有點類似於量?物理中觀察者與被觀察者的關係。我們研究?個事物的時候,不能夠僅僅從被觀察的物體?身的角度,因為觀察本身是需要觀察者訪問物體的,?觀察時需要通過光來達成訪問,使得觀察者和被觀察者形成?個整體,所以觀察時必須同時考慮光的介入對被觀察物體的影響。細節在這?就不展開。在軟體?業,訪問通道這?部分就與唯物學者很難理解量?物理類似,很多?忽略了訪問對事物內聚的影響,影響了事物內聚的達成。因此?家要理解,必須要把被訪問的?標事物通過空間的通道傳遞到訪問者才能夠達成訪問。?這個訪問過程就在不同步驟之間傳遞事物,也就是該事物在空間上所進?的跨越。

前?個連續執?步驟在空間上為什麼可以分離,是由於時間的推進, 確保了連續的兩個步驟在空間上沒有耦合,保證了每個步驟本身是內聚的,能夠獨佔空間,有了拆分的前提?後?個空間訪問的分離,則是由於事物在空間上傳遞,使得做空間拆分成為了可能。

因此,我們可以這麼得出結論:所有的架構拆分本質上都是空間的拆分

?空間上拆分的結果,都是形成樹狀的結構。這是因為事物具有對物理空間獨佔的特性,比如同?個物理空間只能夠存在?座房?,兩座不同的房?必須占?各?不同的空間。

既然事物的連續的步驟其實就是?個事物的?命周期過程,那麼這個過程其實就是?個在時間上的管道 (Pipeline),其中流動並推進的就是這個事物本身的變化,該管道的不同階段的活動就是這個事物不同的核??命周期活動。這個從頭到尾的整個管道全體,就是這個事物的核??命周期。?事物在空間上的傳遞,則體現的是事物在空間位置上的變化,通過跨越空間把事物傳遞到事物的訪問者,這形成的是空間上的?個管道 (Pipeline)。這個從頭到尾的整個訪問管道全體,就是訪問者訪問這個事物的訪問?命周期。某事物的連續步驟、也就是其核??命周期活動中所傳遞的,是事物的?身,這?性質,我們稱之為事物的內聚。?事物在空間上到達訪問者的傳遞,是在空間上位置變化的活動過程,我們稱之為訪問?命周期。?由於事物在空間上傳遞時對空間的獨佔性質,我們稱之為事物訪問?命周期的內聚。也可以看到,事物的訪問?命周期也是內聚的,傳遞的是這個事物本身。

因此,架構的核?原則就是內聚。這個內聚,包括事物本身的內聚,以及對其訪問通道的內聚。內聚是由架構拆分本身的原理決定的,由事物佔有物理空間的性質來決定。換個角度來理解,???事物必須要獨佔確定的物理空間以維持事物本身的持續存在,另???,事物在空間中移動時,也要維持事物本身的狀態,以保持事物本身的持續存在。

主體執?事物?命周期活動過程中某些步驟在空間上的拆分,使得主體在空間上執?該步驟所花的時間得以縮短,這?拆分也體現了?類怎麼利?空間的拆分來減少在空間上連續變化所需的時間,這?拆分減?了時間對?的影響。做架構的時間久了,就會發現時間的重要性,因為?們總是時間不夠?,?架構拆分正是每?個?都可以入?改進?身?活品質的地?。掌握了這個原理,每個?都可以去觀察並實踐。慢慢我們也可以體會到,這個拆分在現實?活中隨處可見。雖然?們不?定明?這個原理,可是?類在社會實踐中,都在不知不覺地使?著。

在軟體?業流??個說法,所謂「沒有銀彈」(No Silver Bullet) 。這?說法來源於 Fred Brooks 的?篇論?,「No Silver Bullet – Essence and Accident in Software Engineering」,他說,「there is no single development, in either technology or management technique, which by itself promises even one order of magnitude [tenfold] improvement within a decade in productivity, in reliability, in simplicity」,意思是說,軟體開發中沒有任何?個在技術或者管理技巧上的進展,?年內可以在?產率、可靠性、簡潔性上保證?倍的提升。可是在軟體開發之外的社會實踐中,?年內?倍進展的例?比比皆是,為什麼呢?這就是架構拆分的原因,只是?們沒意識到罷了。因為架構拆分可以保證在原有流程不變的情況下,在保證內聚的前提下,把這個流程拆分為?個架構樹,進??規模分?,並完成原有流程。因為保證了內聚,因此複雜度不變,可靠性不變,提升了原有流程的效率。也就是說,軟體開發中的「銀彈」是存在的,架構就是「銀彈」

什麼情況下不可以進行架構拆分

為什麼稻?的?長周期不能夠進?架構拆分呢?因為稻?是稻的種?,其產?的過程是稻?身從?地吸收能量並逐漸成熟的過程,與?地?體,是稻?身的核??命周期。稻的?命周期活動中所傳遞的是稻?身,無法通過?類的?命周期活動分?來加速稻種?的成熟過程。也就是說,不能夠「拔苗助長」,也不能夠把稻種?的兩個?成熟時間,通過多種?倍的數量,縮短為?個??就和??樣,無法通過增加?個孕婦,把?的??懷胎縮短為?個?。因為在?長的?命周期活動的過程中,稻傳遞的是?身、不是稻?,?身在空間上不可分割,是?個整體?孕婦傳遞的也是?身的增長、不是嬰?,?身在空間上不可分割,也是?個整體。直到稻?成熟、胎?發育完成,稻?和胎?才能夠脫離母體,以獨?的形式存在。每個事物只有在形成新的個體後,才能夠進??類的分?來提升?類?身的?命周期活動的效率。也就是說,所有?命的?身核??命周期所傳遞的都是?身,是?個整體,是不可以在空間上進?架構拆分的。

?作為稻??身,要麼成為?個種?,通過?根發芽?成新的稻,?出新的稻?,完成??的?命周期?或者被?類加?煮熟、或者被其他動物直接食?,轉變為?類和動物所需要的能量。這兩種都是稻?本身的核?性質,也是稻?本身的核??周期活動,傳遞的是其?身,都是不能通過分?來替代的,否則也就無法稱之為稻?了。

可是在?類的早期還沒有發明「交易」技術的時候,每個?必須??在?然界獲取食物,這個時候?們?多是農民或者獵?,此時獲取食物也是?類的核??命周期呀?是的,在沒有「交易」的時候,還沒有產?分?,是不存在?類的架構的,每個?獨?完成?存的整個流程,還不存在架構的分拆。此時?類社會還處於?個種?的狀態,還未開始發芽,?類的這些?為屬於該種?的核??命周期。但是隨著交易技術的出現,慢慢的?類核??命周期回歸到了以?類的身體為邊界,因為?的身體是?個天然的邊界,是?獨佔?個空間的基本單位,基本上除了維持身體?存之外的?作都可以分?出去了,因?形成了?類社會,?通過訪問?類社會的分??得以完成?身的?命周期。?此時?類?存的整個流程並沒發?改變,還是原來的流程,可是這個流程運作的更加?效了。因此,交易是?個非常重要且關鍵的技術,確保了可以把拆分後的流程組裝形成原有的流程。這其實就是訪問技術,確保了架構的實現。

但是我們要注意,這個不可進?架構拆分的核??命周期範圍,隨著?命、科學等技術的進步會發?變化。技術越進步,那麼?些核??命周期活動會逐漸的變成非核??命周期活動,核??命周期的範圍會逐漸的縮?。比如隨著技術的進步,身體的邊界也會逐漸地縮?。比如由於醫療技術的進步,剖腹產?來替代產婦的?然?產,那麼?然?產這?核??命周期就發?了拆分,?然?產所需要的時間也可以縮短,嬰?也不?定要在母親身體內呆??個?,等等等等。

架構拆分的意義

那麼為什麼稻、樹等植物不可以互相通過分?來提升效率呢?這個話題就有意思了。?先稻、樹可以形成?身結構的分?來提升效率,比如形成葉?獲取陽光,形成根來獲取?地的養分。但是它們無法主動的形成植物之間相互的分?,因為植物是沒有意識的,?動物是有意識的,?佛家的話說就是「無情」和「有情」的區別。但是植物可以通過形成花粉或種?,通過?然界的空間變化如風等、或通過為動物提供食物等的被動的?式來延續它們的傳播,從?形成?態鏈。只有有意識的?物才可能主動形成互相的分?合作,有意識的形成空間的架構拆分,形成群居。比如螞蟻,?雁等動物,他們就是典型的群體性動物。很多?對它們所形成的?規模?致性的群體活動無法理解,比如?雁的群飛,螞蟻的分?,認為這些?為很複雜、很神奇。其實如果去研究它們的架構拆分,就會發現很多有意思的東西,背後的原因?點都不複雜。

再往?的地?說,?類必須要從?然界獲取食物才能夠得以?存,這正是對?然界的?個訪問。從前?的討論可以知道,有訪問的存在就必定有架構的拆分,因此,?類不過是?然界的?個分?。也因此可以看到,?類和?然界原本是?個整體。其實從任何?個事物的分?中,都可以關聯訪問到整個世界的全體,通過訪問?形成該事物的?身,因為任何?個事物都無法脫離這個世界?獨?存在。佛家云:「?花?世界,?葉?菩提」,猜想就是這個意思,從形成?朵花?開始的訪問,可以遍及整個世界,因此任何?個事物都包含了整個世界。可見,古?對世界的認識是多麼的深刻。

架構拆分的進一步運用

通過前述的分析可以發現,事物的核??命周期是?個時間的管道,事物的訪問?命周期是?個空間的管道。既然是管道,那麼就有管道獨有的性質。在管道上,我們可以加入不同的新活動,只要符合這個管道的特性,可以連接上下,並可以讓這個事物本身通過即可。於是,我們就可以利?這個性質??進?事物?命周期的架構拆分。架構拆分的過程類似於管道的管理,相當於把管道切開,在中間增加?個處理,再通過這個增加的部分把切斷的管道連接起來,重新形成整體。比如把?管切開,在中間加入過濾器或加入加熱設施後再重新組合管道,等等。

並且我們不但可以按照事情原本的的步驟進?拆分,還可以在不違反?命周期活動時間推進過程的前提下,??增加所需要的步驟,以達到不同的?的,也就是說,可以增加?個原來並不存在的步驟,形成?個?然界不存在的事物。在任何?個業務中,我們可以在?個連續的過程中根據需要插入?個中間過程,傳遞原有事物的同時加入我們??所需要的效果,?不影響整個?命周期的完成。比如在種植??和製作?飯之間,我們可以??加入其他的食物,只要這個新加入的?命周期仍然滿?製作?飯的輸入條件即可。比如在??中加入新的材料,如?棗、核桃等,這就形成了不同?味的?飯,這也拆分出來了?個新的分?。再比如對開關門的改造,可以在開、關門的?命周期活動之間加入不同的裝置,比如加入?動關門裝置來保證門始終是關閉的,或加入緩關裝置防?夾?,或加入定時裝置以提醒關門,增加安全性,等等等等。

也就是說,架構不但可以?來分?,還可以?來改造?然界。當然,?架構改造?然界的過程中,也必然會導致分?的變化。

通過對架構拆分的分析來理解現實

理解了架構拆分,對於我們來理解這個社會的運作也是非常有幫助的。比如就認識公司來說,?個公司就好比是?個?,也需要吃飯,需要吸收能量,並且能夠把吸收的能量轉換為公司的輸出。?個公司的訂單的達成就好比是?要吃飯,需要通過現?流來吸收能量維持?存。在養活公司這個實體的同時,再通過現?流來推進公司的各部門的運作,不斷的形成產品,不斷的完成這個公司?身的社會分?。理解了這個,?們就可以理解??在所在部門的角?是什麼,所在部門在公司的角?是什麼,就可以把握好??的定位。?這個公司的本身,則是整個社會?分?中的?個節點,理解了這個,就可以理解??所在公司在整個社會中的定位,扮演的是什麼角?。

許多?會說,我要理解那麼多?什麼呢?我只不過是扮演?個螺絲釘罷了,我?個打?的不需要操?板的?。聽起來似乎很有道理,但是在分?層?,?板和員?並無本質的區別,只是分?角?不同?已。另???,哪怕是擰螺絲釘這??作,在?個?箭?產企業和?個??車?產企業也是不?樣的,因為所在企業所?對的業務不?樣。如果像在??車上擰螺絲釘的態度來擰?箭的螺絲,那麼結果肯定是不同的。只有理解了企業的分?,才可以理解??的分?,才可以把??的?作做好。

事實上,理解了各種不同的分?,才可以慢慢形成??的思考,形成??的判斷,才可能??通過不斷的分?,讓??的每?分鐘的產出越來越?,讓??的每?分鐘越來越值錢。為什麼有些?單位時間的?資那麼??那是因為他們通過合理的架構拆分,縮短了???作所需的時間,可以在同?時間內創造出更多的財富。因為通過前述的架構拆分可以看到,架構的核?之?就在於縮短主體的?命周期活動所需的時間。古?云:「??光陰???,??難買?光陰」,既然有些?單位時間內創造的財富更多,當然他們的時間也就更值錢。因為每個?的每?分鐘時間雖然都是?樣的,但是每個?的每?分鐘的價值是不?樣的。

沿著這個思路也可以很容易可以發現,要認識?個公司,只要把這個公司的?命周期管道識別出來,就可以發現這個公司的核??命周期,以及可以做哪些架構拆分?只要把這個公司的?戶訪問?命周期識別出來,就可以理解這個公司訪問通道的架構拆分。??個公司的拆分,最終都要通過交易來組合起來,形成?個完整整體。通過這兩??的分析,就可以發現公司拆分的合理與不合理的地?。那麼在這個公司?作,也就?然知道??是在架構拆分的哪個節點,??扮演什麼角?,哪些事??該做,哪些事??不該做,這樣就明?了??的邊界,也就可以把?作做的更好。

本文彩蛋

學習架構的過程,一定是個理論結合實踐的過程。本文更多是偏向於理論的「道」,但你同時也不可缺少實踐類的「術」。InfoQ 的編輯每個月都有精心策劃一期《架構師》電子書,內容翔實、質量上佳,你可以在 InfoQ 公眾號對話框回復關鍵詞:架構,獲取 2018 年度《架構師》電子書合集下載地址。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 InfoQ 的精彩文章:

十年行業趨勢與實踐探索,下一個技術關注點是?
數據分析避雷指南:2大難關和5個「避坑」技巧

TAG:InfoQ |