如何拆分你的微服務架構?

伊竹凌發表於2019-03-01
如今,市場環境紛繁複雜,瞬息萬變,現代企業為了更好地生存,需要有極強的適應能力。快速而輕鬆地迎接改變,成為了一個優質企業的特徵之一,同時企業還要求技術團隊構建更科學的架構,搭建成本更低的平臺,這就使得這些團隊越來越傾向於使用微服務架構來應對以上要求。

微服務的做法有利於軟體元件和資料的分散化,將一個整體分解成更小、更容易改變的部分,分散僅幫助團隊加快工程進度,而不會犧牲系統的安全性。要想讓這種架構工作得很好,需要改變工作方式。

微服務架構的設計,其實是為了使團隊能夠在執行工作的人之間分配決策權力,向更多成員直接推行決策權,允許他們以更自由的方式生產。微服務架構使用正確的話,將產生更好和更快的變化。但是如果你的架構錯誤,那麼一系列壞的決定可能會降低轉化率,甚至會損害你的業務。

1.jpg


我們講決策權分配,即是說微服務架構的拆分實際上就是在尋求正確的權力下放戰略。這是一個進化過程,需要不斷地進行分析和調整。而如何正確的拆分微服務架構,我認為可以重點從以下三個方面考慮:

1、我們應該做哪些決定?

設計微服務系統不僅僅是改變元件大小,架構中涉及建立和更改服務的所有領域都有一定的作用。在這裡總結了以下九個方面,作為拆分微服務架構時所做決定的參考:

• 生命週期: 什麼時候建立或停止服務?我們什麼時候需要將它們分開?
• 服務實現:我們應該在每個服務中使用哪些工具、語言和架構?
• 系統架構: 服務如何引導他人?開發人員如何瞭解?
• 資料架構:服務之間如何共享資料?
• 變更過程: 什麼時候可以改變服務?部署和QA的工具和過程?
• 團隊管理:誰在哪個團隊服務?每個團隊負責什麼?團隊成員做了什麼?
• 人事管理:人員如何被僱用和解僱?員工如何激勵和獎勵?
• 安全管理:我們如何降低安全事故的風險?需要做些什麼來改善整個系統的安全性?
• 採購過程:可以購買什麼軟體?使用開源軟體需要哪些保護?

2、涉及到哪些人?

不得不承認,一個員工做出的一些決定對他們的公司來說可能是非常有影響力的。一個很典型的現象是,公司試圖對內部的決策者增加控制,以便將風險降至最低,從而導致決策權集中化。例如,在過去的幾年中,蘋果以擁有一個高度集中的設計團隊而聞名,少數的人做出產品設計的大部分決策。

集中發生是因為正確的人需要做出最重要的決定。通常,“正確的人”是具有天賦,專業知識和經驗的組合,使我們能夠相信他們做出最好的決定,我們可以稱這些人為我們的“明星決策者”。但實際上,公司的“明星決策者”數量有限,大多數團隊只有幾顆“明星”。

微服務改變了這種少數人行使決策權的現象,同時更容易應對錯誤的決策。如果一個團隊在微服務工作時作出錯誤的決定,其錯誤的波及範圍會很小,容錯率變高。當系統的更改變得便宜和容易時,團隊可以快速改進先前的決策,使他們能夠更快地獲得最佳決策。

2.png


3、誰擁有哪一部分?
決策基於選擇,而選擇又基於領域知識。決策不應該立即執行,它需要一個過程,需要高度專業的技能或知識來實現。

管理專家亨利•明茨伯格(Henry Mintzberg)為我們提供了一個很好的模式,其中概述了決策過程的步驟:
  1. 研究與資訊採集
  2. 生成選擇
  3. 做出選擇
  4. 授權的選擇
  5. 執行和實施

所有這一切的關鍵,是在採用決策分權化時,不需要絕對。每個步驟都可以獨立集中或分散化,在平衡效率和安全性時,可以獲得更大的靈活性。如今,集中選擇與非集中選擇相結合,也是現在很多大公司常見的模式。

當人們談論微服務架構時,權力下放過程的選擇、授權和執行部分相互協作、快速、規模化地移動,這些都降低了變化來臨時對整體系統產生的負面影響。它是提高變革速度的有效途徑,但不要忘記,你的成員特點、團隊協調,以及所有的系統、工具和工作環境同樣重要。

你必須瞭解如何做出決策,如何改進流程,這才是迎接變化的好方法。


相關文章