01.21 微服務:微服務組織的去中心化架構設計思考

微服務組織的去中心化

導引

適應力——快速方便改變的能力——正在變成現代商業組織的主要目的,由此要求技術平臺面對變化更加簡便高效低成本。這種需求促使技術團隊更多采用微服務類型的軟件架構,吸引力來自於微服務架構承諾軟件快速迭代對業務影響甚微。

微服務:微服務組織的去中心化架構設計思考

微服務一般都是通過將軟件模塊和數據去中心化,或者說將原來“單體式”模式進化為更小、更易於改變的模式,將這些小模塊部署到網絡上。如何更好讓這種架構發揮作用需要工作方式以及控制工作流的改變。採用微服務的組織一般都擺脫了傳統開發模式,提供了發生巨大變化的可能性。

在設計型組織中授權決策可以實現去中心化。對比於以前少數人決策情形,去中心化使得參與設計工作的所有人都可以進行分佈式決策。

將決策權下放到底層可以使得大家工作中更自由和自治,如果引導適當,將會產生快速而正確的改變。然而,如果組織引導不適當,一系列錯誤決定會反過來損害業務。關鍵點是:只在能夠幫助加快業務發展而不損害系統安全的領域去中心化。

如何找到正確的去中心化戰略點是一個需要仔細判斷、分析和適應的革命性過程。有三個關鍵點可以幫助實現這一過程。

應該面向哪些決定?

我們的目的是擴大平臺的適應性。因此應該從現有流程的瓶頸開始尋找。從一個政策落地開始,去發現那些必須等待其他人做出決定才能繼續執行的瓶頸點。

去中心化有時候也不一定是解開瓶頸的關鍵。在一個依靠中心化決策的組織內部,去中心化可能會起到作用。然而,另一方面,如果不能發現因為中心化決策而被卡住的流程,去中心化可能起不到作用。

微服務系統並不只是改變構成元素規模這麼簡單,所有和創建改變服務相關的部門都需要介入其中。以下是採用去中心化微服務架構需要考慮的因素列表:

  • 服務生命週期:服務什麼時候創建,什麼時候退出?分別叫什麼?什麼時候需要分開他們?
  • 服務實施:每個服務都應該用什麼工具,什麼語言和架構完成?
  • 系統架構:服務之間如何通信?開發者如何獲得消息?
  • 數據就夠:服務之間數據如何共享?
  • 更改流程:服務什麼時候可以被改變?部署和QA的工具和流程是什麼?
  • 團隊管理:人員服務於哪個團隊?每個團隊負責什麼?團隊成員做什麼?
  • 人員管理:人員如何進出團隊?僱員如何激勵和獎勵?有什麼福利制度?
  • 安全管理:如何減小安全意外風險?需要做什麼才能提高系統級安全?
  • 採購:什麼軟件可以採購?開源軟件滿足那種保護級別?

值得分析這些領域決定都是如何做出的。如何改變系統變化的方式?哪個決定流程拖後腿?最終,哪種自由和自治對整個業務最佳?

Netfix是一個在創新領域去中心化的示範企業,他們的“賦能員工決策自己工作時間”策略將以往需要封閉控制的決策去中心化了。讓員工決定自己假期方式聽起來很奇怪,但是迫使一個企業改變就應該從剔除冗餘流程開始,同時引入新的風險,這是屢試不爽的方法。採用微服務開發軟件的團隊應該同時考慮在組織內部也推行這種優化。

這並不意味著分佈式假期決定策略應該是微服務架構的首要問題。Netfix可以採用這種策略是跟他自己的文化和工作環境相關的,他們的員工之間有整體最佳的信任,公司也在僱傭什麼樣員工上廣為稱道。

並不是每個組織看起來都像Netfix是定位在在線視頻內容發佈領域。每個公司都有自己特定的領域和目標。自己需要發現擅長領域的特點,進行分析,內審和經驗都可以幫助優化流程,使得企業朝適應化目標邁進。

應該引入哪些人?

有些決策者可以對公司產生巨大影響。一個改變客戶賬號交易的決定對傳統銀行來說是個巨大風險。一個改變用戶使用習慣的決定對於擁有大量習慣於舊接口用戶的軟件公司來說也是一個巨大風險。

為了減小這種風險,更好控制住這種類型的決定導致了中心化決策流程。例如,過去幾年中,蘋果公司有一個著名的高度集中化設計團隊,由少部分人對產品設計做決定。

正確的人做出重要的決斷選擇了中心化。正確的人一般都是兼備潛能、專業和經驗,使我們高度相信他們能做出正確決定的人。可以稱呼他們為“明星”決策者。

如果一個組織只有明星構成,那麼決策就變成去中心化的。如果我們相信大多數人可以做最好決定,我們就可以將決策權分發給更多人。而實際上,一般公司只有為數不多的明星決策者。相對的,大多數團隊有幾個明星,更多的是缺乏所需經驗和潛力做決定的人。

好消息是採用去中心化策略並不需要所有人都是明星員工,只需要考慮如何部署團隊以及如何放置員工到最佳位置。採用微服務模式後,個體變化加快限制決策影響範圍使得一切顯得更容易。如果一個採用微服務的團隊做了一個錯誤決定,其影響範圍會被限制在很小的範圍。當改變越來越容易,團隊就可以快速修訂之前做出的決定,使得儘快進化為正確的決定。

這種環境下,並不受限於明星員工的能力,只需要提供一個員工自由和自治的環境即可。

誰負責哪塊?

沒有決定是實時做出的,決定都是基於選擇,也就是基於專業知識。決定不能被立刻實現,有時需要一些運氣,有時則需要高度專業的知識。

管理學專家Henry Mintzberg給出了一些決定流程重要步驟如下:

  1. 信息蒐集Research and information gathering
  2. 生成選項Generating choices
  3. 選擇Selection (making a choice)
  4. 選項授權Authorization of the choice
  5. 執行並實現Execution and implementation

以上步驟並不需要去中心化決策架構,每個步驟都可以獨立中心化或者去中心化,這樣就可以在效率和安全性之間做出平衡。

考慮一個大公司典型招聘流程:一般都是HR部門負責廣播開放職位邀請應聘者應聘崗位。然後蒐集應聘者簡歷,列出最佳可選人員,列表被送到招聘經理那, 他會仔細從中再次篩選合適人選。隨後球會被踢回HR部門,由他們來完成紙面工作完成整個流程。

中心化生成選項而選擇去中心化在大公司中很常見。實際上,大部分採用微服務模式的組織或多或少都有用過這種方式。例如,一箇中心化團隊可以分辨出三類微服務團隊樂於使用的數據庫,選擇權交由各個團隊自己選擇,但是隻能從三種選項中做出決擇。如果他們不從中選擇,就需要給出理由,交由中心化團隊進行重新評估可選項。

去中心化選擇、授權和執行可以使得很多小團隊快速成長。中心化研究和生成選項的步驟,總體上看會傷害創新,但是減少不良選擇影響整個系統的風險。這是一個普遍問題因為很多組織都必須在兩者之間做出折衷選擇。

當在微服務化組織內部討論去中心化對於提高變革很有用,但是別忘記這只是一方面,另一方面,團隊成員構成,如何協調,以及採用什麼工具和上下文也都很重要。

對於形成適應性組織和重要的是理解如何做出決定,而且更重要的是,流程如何改變才能提高面對變化的適應性。

原文鏈接:Decentralizing Your Microservices Organization

https://thenewstack.io/decentralizing-microservices-organization/


分享到:


相關文章: