大咖專欄 | DevOps組織如何有效地實施MSA

【摘要】 對于任何企業,MSA的實施都不能一蹴而就。企業在實施MSA的過程中應該避免教條主義、理想化、低估必需的投資、邊學習新流程邊變更架構、擔憂失敗等風險與陷阱。企業可以在MSA實施指導框架的指引下,進一步建立MSA的戰略目標、原則、實踐、工具平臺視圖,以更好地指導MSA落地。

隨著領域驅動設計(DDD,Domain Driven Design)、持續交付、云計算、小型自治團隊、大型集群系統等實踐的發展與流行,微服務架構(MSA,Microservices Architecture)也應運而生。在數字化轉型時代,許多組織為了提升業務敏捷性(Business Agility),發現MSA或許是幫助自己更快地交付軟件的強大武器,因為MSA有望在靈活的變更交付、技術靈活性、更精準的彈性等方面帶來益處。

然而企業卻很快發現,單純將MSA視為靈活的架構模式,往往難以保障MSA的成功實施。因而,若要成功實施MSA,除了改變軟件交付物的結構化方式,企業必須在以下方面進行改變:

??? 應用開發、交付與運維的組織方式

???? 維持流動性同時確保質量與彈性的流程

???? 微服務相關模式與實踐所必需的新工具與平臺

那么,企業到底應該如何實施MSA才能提升成功率呢?有沒有一種指導性框架為MSA實施保駕護航呢?在探討此問題之前,也許明確一下MSA的適用場景更為緊要。在《人月神話》中,Fred Brooks曾指出“軟件沒有銀彈”。此論斷對于MSA仍然適用。企業不應該將MSA視為軟件交付的銀彈。從嚴格意義上來講,MSA的優勢在于幫助企業解決軟件領域的復雜問題(Complex Problem)。一般來講,復雜問題具有以下幾個特征:(1)沒有足夠的數據進行決策;(2)必須進行探索;(3)需要浮現式設計與實踐;(4)面向行動的方法。關于復雜問題的詳細闡述,可以參考Cynephin框架(https://www.mindtools.com/pages/article/cynefin-framework.htm)。當然,在企業面對復雜問題或者系統時,如果同時需要頻繁部署來快速響應市場需求、需要高可用以及快速彈性神作,MSA將成為優先選項。

基于MSA的適用場景,并結合諸多企業實施MSA的實踐,形成了如下圖所示的實施指導框架,稱之為“3PSD”。

?

圖 MSA實施指導框架3PSD

從上圖中,可以自然而然地看出流程(Process)、人員(People)、平臺(Platform)、服務(Service)、數據(Data)之間相互影響:

???? 從流程來講:流程需要平臺自動化、流程驅動自治團隊、流程優化驅動服務的范疇界定;

???? 從人員來講:人員文化支持流程優化,人員技能影響平臺選擇;

???? 從平臺來講:平臺能力支持流程執行、人員角色、約束服務,平臺持久化與移動數據;

???? 從服務來講:服務的定義驅動平臺需求、人員組織、數據組織;

???? 從數據來講:數據的組織驅動服務的范疇界定,數據需求驅動平臺需求。

因此,對于實施MSA的軟件系統來講,流程、人員、平臺、服務、數據很難一步到位,采用迭代方式成為一種必然選擇。當然,MSA的實施難以有明顯的最終狀態,因為隨著迭代深入,實施框架中的5個方面發生變化的概率非常大。

在實施MSA之前,企業組織確定了適應的場景后,應該開展準備工作,評估組織的就緒程度。簡單來講,企業可以從以下幾方面進行評估:

1.???? 真正敏捷;敏捷開發流程與實踐;

2.???? 自動化程度:構建、測試、部署等;

3.???? 工程師文化:規劃交付,并準備好試驗與演進;

4.???? 踐行DevOps;持續交付等;

5.???? 產品思維;

經過評估認為實施MSA已就緒后,企業應該確認商業干系人需要快速、可靠、靈活的功能交付與變更帶來的價值。這樣,企業就可以按照指導框架在流程、人員、平臺、服務、數據等方面開展相關工作。

1????? 優化流程

開發與運維流程通常是MSA交付中最為關鍵并且最容易被忽略的部分。MSA需要非常高水平的開發與運維流程的成熟度與自動化。目前來看,DevOps的原則、文化與實踐對于MSA的成功至關重要。企業組織應該從以下方面優化流程:

??? 持續集成/持續交付:利用流水線實現微服務并行獨立部署

??? 流程自動化:構建、測試、部署、環境等環境自動化能力

??? DevOps反饋環:在交付流程中增強反饋,隨時掌握服務狀態、健康度,行為等

??? 發布方式與計劃:每個獨立的微服務可以獨立、按需發布,來滿足快速的需要;

??? 優化測試與QA流程:采用TDD/BDD、集成測試等測試左移(Shift-left testing)與金絲雀測試、A/B測試、在線巡檢等測試右移(Shift-right testing)相結合

??? 解決自治與分布服務引發的治理訴求:服務的SLA定義,服務下線等等;

2????? 提升人員與技能

通過MSA實現敏捷性非常依賴小型的自治團隊。此團隊應該與業務服務領域對齊,而不是技術領域。此組織結構與敏捷開發中的特性團隊或者組件團隊類似。關于組織結構,可以參考“DevOps組織如何選取拓撲結構以提升協作效能”。對于人員與技能,建議在以下在以下方面進行提升:

??? 平衡自治與責任

??? 敏捷與DevOps文化相關的原則

??? 面向服務的工程師文化

??? 現代開發范式與概念:例如DDD、事件驅動架構、浮現式架構等;

??? 更廣泛的技術技能:例如T-shaped;

??? 擁有質量意識:例如單元測試、測試自動化等;

3????? 構建技術平臺

對于實施MAS的企業來講,不單單需要敏捷與DevOps流程、良好組織與技能豐富的人員,更需要技術平臺來管理日益增加的復雜性。

圖 MSA技術平臺全景

如上圖所示,MSA平臺不應被過度簡化為容器化,MSA平臺包含了外部網關、Service Mesh、遙測與監控、CI/CD自動化等部件。關于MSA平臺的選擇可以分為2類:一類為云服務提供商平臺,一類為部署在自行管理基礎設施上的云原生應用平臺。對于第一類平臺,企業可以選擇華為云相關服務,例如DevCloud()提供了端到端DevOps平臺能力,可以有效支持CI/CD自動化;ServiceStage提供面向企業的云原生應用管理服務。

4????? 定義服務

在MSA中,模塊化的主要單元是服務本身,主要包括:(1)功能集合與訪問功能的接口;(2)實現的邊界與部署單元。企業可以應用DDD與限定上下文來劃定微服務,并在靈活性、復雜性與性能之間進行權限,使微服務滿足以下特征:

???? 松耦合

???? 高內聚

???? 采用公開標準暴露接口

???? 實現單一職能

???? 擁有管理的數據

???? 獨立部署

???? 獨立伸縮

???? 將發布的API與微服務實現解耦

5????? 解耦數據

為了提高敏捷度以及服務間的獨立性,企業必須對服務的數據進行解耦。數據解耦可以參考以下原則進行:

??? 數據必須被一個也只能被一個微服務管理(創建、更新與刪除)

??? 數據只能通過管理此數據的微服務提供的接口訪問

??? 嚴格禁止不同服務擁有的數據之間的數據庫強制型關系(例如引用完整性)

??? 需要平衡數據解耦帶來復雜性與敏捷性

??? 可以通過API契約進行數據關系建模

對于任何企業,MSA的實施都不能一蹴而就。企業在實施MSA的過程中應該避免教條主義、理想化、低估必需的投資、邊學習新流程邊變更架構、擔憂失敗等風險與陷阱。企業可以在MSA實施指導框架的指引下,進一步建立MSA的戰略目標、原則、實踐、工具平臺視圖,以更好地指導MSA落地。

圖 MSA戰略目標-原則-實踐-平臺工具視圖

華為云DevCloud作為一站式云端DevOps平臺,集成華為近30年研發實踐和前沿理念,面向開發者提供研發工具服務,讓軟件開發簡單高效。現支持5人以下額度范圍內,可以免費使用,并且可以預約免費的產品演示和技術交流,詳情查看華為云官網

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容