【細品架構4/100】架構之架構切分

猿碼道發表於2018-06-30

本文主要是繼續研讀了資深架構師王概凱Kevin執筆的《架構漫談》系列的《架構漫談(四):如何做好架構之架構切分》的心得感受。王概凱Kevin結合自己多年的架構經驗,通過不同的視角,重新審視架構的本質,從而產生一力作《架構漫談》系列,作者希望能夠丟擲自己從實踐中得出的一些觀點,並引發大家的一些思考,歡迎大家溝通討論。

如需要閱讀原文,請關注公眾號“聊聊架構”,從歷史文章中獲取《架構漫談》系列。

本文內容結構圖:

架構切分


上一篇已經講過了如何識別問題,只有在識別出誰的問題之後,才能發現真正的問題,在大部分情況下,問題都會迎刃而解,不需要做額外的動作。很多時候問題的產生都是因為溝通的誤解,或者主觀上有很多不必要的利益訴求導致的。

但是總還有一部分確實是有問題的,需要做調整,那麼就必須要有所動作,做相應的調整。這個調整就是架構的切分


切分就是利益的調整

要非常的清楚,所有的切分調整,都是對相關人的利益的調整。為什麼這麼說呢,因為維護自己的利益,是每個人的本性,是在骨子裡面的,我們不能逃避這一點。

我們已經知道,隨著社會的發展,分工是必然的,為什麼呢? 這個背後的動力就是每個人自己的利益。每個人都希望能夠把自己的利益最大化,比如:生活的更舒適,更輕鬆,更安全,佔用並享有更多的東西。但是每個人的能力和時間都非常的有限,不可能什麼都懂,所以自然需要舍掉一些自己不擅長的東西,用自己擅長的東西去換取別人擅長的東西。

對比一個人幹所有的事情,結果就是大家都能夠得到更多,當然也產生了一個互相依賴的社會,互相誰都離不開誰。這就是自然而然而產生的架構切分,背後的原動力就是人們對自己利益的渴望。人們對自己利益的渴望也是推動社會物質發展的原動力。

在這個模式下,比較有意思的是,每個人必須要舍掉自己的東西,才能夠得到更多的東西。有些人不願意和別人進行交換,不想去依賴於別人,這些人的生活就很明顯的差很多,也辛苦很多,自然而然的就被社會淘汰了。如果需要在這個社會上立足,判斷標準就變成了:如何給這個社會提供更好更有質量的服務。提供更好的更多的服務,自然就能夠換取更多的更好的生活必需品。實際上這就是我們做人的道理


為什麼需要切分

當人們認識到要主動的去切分一個系統的時候,毫無疑問,我們不能忘掉利益這個原動力。所有的切分決策都不能夠違背這一點,這是大方向。結合上一篇“識別問題”,一旦確定了問題的主體,那麼系統的利益相關人(用現代管理學語言叫:stakeholder)就確定了下來。所發現的問題,會有幾種情況:

  1. 某個或者某些利益相關人負載太重。
  2. 時間上的負載太重。
  3. 空間上的負載太重,本質上還是時間上的負載太重。
  4. 某個或者某些利益相關人的權利和義務不對等。

切分的原則

情況1是切分的原因,情況2是切分不合理而導致的新的問題,最終還是要回到情況1。對於情況1,本質上都是時間上的負載。因為每個人的時間是有限的,怎麼在有限的時間內做出更多的事情?那麼只有把時間上連續的動作,切分成時間上可以並行的動作,在空間上橫向擴充套件。所以切分就要有幾個原則:

  1. **必須在連續時間內發生的一個活動,不能切分。**比如孕婦懷孕,必須要10月懷胎,不能夠切成10個人一個月完成。
  2. **切分出來的部分的負責人,對這個部分的權利和義務必須是對等的。**比方說媽媽10月懷胎,媽媽有權利處置小孩的出生和撫養,同樣也對小孩的出生和撫養負責。為什麼必須是這樣呢? 因為如果權利和義務是不對等的話,會傷害每個個體的利益,分出來執行的效率會比沒有分出來還要低,實際上也損害了整體的利益,這違背了提升整體利益的初衷。
  3. **切分出來的部分,不應該超出一個自然人的負載。**當然對於每個人的能力不同,負載能力也不一樣,需要不斷的根據實際情況調整,這實際上就是運營。
  4. **切分是內部活動,內部無論怎麼切,對整個系統的外部應該是透明的。**如果因為切分導致整個系統解決的問題發生了變化,那麼這個變化不屬於架構的活動。當然很多時候當我們把問題分析的比較清楚的時候,整個系統的邊界會進一步的完善,這就會形成螺旋式的進化。但這不屬於架構所應該解決的問題。進化的發生,也會導致新的架構的切分。

原則2是確保我們不能違反人性,因為維護自己的利益,是每個人的本性。只有權利和義務對等才能做到這一點。從原則2的也可以推理,所有的架構分拆,都應該是形成樹狀的結果,不應該變成有向圖,更不應該是無向圖。很多人一談架構,必談分層,但是基本上都沒意識到,是因為把一個整體分拆為了一棵樹,因為有了樹,才有層。

從某種意義上來說,談架構就是談分層,似乎也沒有錯,但是還是知道為什麼比較好。從根節點下來,深度相同的是同一層

同樣我們看一個組織架構,也可以做一個粗略的判斷,如果一個企業的組織架構出現了“圖”,比方說多線彙報,一定是對stakeholder的利益分析出現了問題,這就會導致問題2的發生。問題2一旦出現,我們必須馬上要意識到,如果這個問題持續時間長,會極大的降低企業的運作效率,對相關stakeholder的利益都是非常不利的,同樣對於企業的利益也是不利的。必須快速調整相關stakeholder的職責,使得企業的組織架構成為一個完美的樹狀,並且使得數的層數達到儘可能的低。只有平衡數可以比較好的達到這個效果。

當然如果某個節點的能力很強,也可以達到減小樹的高度的結果。技術的提升,也是可以提升每個節點的能力,降低樹的層數

很多管理學都在討論如何降低組織架構的層數,使得管理能夠扁平化,原因就在於此,這裡就不展開討論了。從這裡也基本可以得出一個結論,一個好的組織的領導,一定也是一個很好的架構師


切分與建模

實際上切分的過程就是建模的過程,每次對大問題的切分都會生成很多小問題,每個小問題就形成了不同的概念。這也是系列第二篇文章嘗試表達的。這些不同的概念大部分時候人們自發的已經建好了,架構師更多的是要去理解這些概念,識別概念背後所代表的的人的利益

比如:人類社會按照家庭進行延續,形成了家族,由於共享一片土地資源,慢慢形成了村莊,村莊聯合體,不同地域結合,形成了國家。由於利益分配的原因,形成了政權。每次政權的更迭,都是利益重新分配的動力所決定的

同樣對於一個企業也是一樣的,一開始一個人幹所有的事情。當業務量逐漸變大,就超過了一個人能夠處理容量,這些內容就會被分解出來,開始招聘人進來,把他們組合在一起,幫助處理企業的事務。整個企業的事務,就按照原則2,分出來了很多新的概念:營銷,售前,售中,售後,財務,HR等等。企業的創始人的工作就變成了如何組合這些不同的概念完成企業的工作。如果業務再繼續增大,這些分出來的部分還要繼續分拆,仍然要按照原則2才能夠讓各方達到利益最大化。如果某個技術的提升,提高了某個角色的生產力,使得某個角色可以同時在承擔更多的工作,就會導致職責的合併,降低樹的層數。


切分的輸出和組織架構

架構切分的輸出實際上就是一個系統的模型,對於一個整體問題,有多少的相關方,每個相關方需要承擔哪些權利和義務,不同的相關方是如何結合起來完成系統的整體任務的。有的時候是從上往下切(企業),有的時候是從下往上合併,有的時候兩者皆有之(人類社會的發展)。而切分的結果最終都會體現在組織架構上,因為我們切分的實際上就是人的利益

從這方面也可以看出,任何架構調整都會涉及到組織架構,千萬不可輕視。同樣,如果對於stakeholder的利益分析不夠透徹,也會導致架構無法落地,因為沒有入願意去損壞自己的利益。一旦強制去執行,人心就開始潰散。這個也不一定是壞事,只要滿足原則2就能夠很好的建立一個新的次序和新的利益關係,保持組織的良性發展,長久來看是對所有人的利益都有益的,雖然短期內有對某些既得利益者會有損害。


總結一下:

  1. 架構的切分的導火索是人的負載太重。
  2. 架構的切分實際就是對stakeholder的利益進行切分或合併,使得每個stakeholder的權責是對等的,每個stakeholder可以為自己的利益負責。
  3. 架構切分的最終結果都會體現在組織架構上,只有這樣才能夠讓架構落地並推進。
  4. 架構切分的結果一定是一個樹狀,這也是為什麼會產生分層。層數越多溝通越多,效率越低,分層要越少越好。儘可能變成一顆平衡樹,才能讓整個系統的效率最大化。

架構切分=利益調整,利益調整代表了以人為中心,進行的利益在分配。從時間負載、空間負載觸發架構切分,而架構切分的原則就是以人的利益為本,也可以說不違揹人的本性,切分的過程其實就是分層建模的過程,分層建模就是概念劃分的過程,每個概念背後都代表一個問題,最終會形成樹狀的組織結構,而這種組織結構的調整會涉及到人的組織架構,從而要切實要考慮到人的利益。

相關文章