從SOA治理到微服務治理,對整體框架構建的再思考
今天談下微服務治理方面的內容,對于微服務治理是整個企業(yè)微服務架構轉型和微服務建設實施中一個關鍵內容,很多企業(yè)在轉型過程中各自技術工具雖然采用了最新的微服務開發(fā)框架環(huán)境,治理平臺等,但是實際上微服務整個從需求,設計到上線運行全是一種混亂狀態(tài),其中關鍵還是微服務治理出現(xiàn)了問題。
對于微服務治理,很多人一談這個這個最容易想到的就是類似SpringCLoud開發(fā)框架,類似Istio的微服務治理平臺,或者就是一堆的微服務標準規(guī)范,技術規(guī)范體系。實際上微服務治理的內容卻是遠遠不止這么一點。
從IT治理和SOA治理談起

治理確定誰負責制定決策,需要制定什么決策,以及使決策制定保持一致的決策。治理不同于管理。治理規(guī)劃需要制定什么決策,而管理是制定和實施決策的過程。治理重在建立決策,而管理重在貫徹執(zhí)行決策。
IT治理
IT 治理是指針對 IT 的治理;即:針對 IT 組織及其人員、流程和信息應用治理,以提供指導,使這些資產支持業(yè)務需求。IT治理是描述企業(yè)或政府是否采用有效的機制,使得IT的應用能夠完成組織賦予它的使命,同時平衡信息化過程中的風險,確保實現(xiàn)組織的戰(zhàn)略目標的過程。
它的使命是:保持IT與業(yè)務目標一致,推動業(yè)務發(fā)展,促使收益最大化,合理利用IT資源,適當管理與IT相關的風險。
下圖為山東省軟件評測中心總結的IT治理的總體框架,描述了IT治理的出發(fā)點、IT治理的關鍵要素、IT治理的對象、IT治理的最佳實踐。

IT治理的目的是使IT與組織業(yè)務有效融合,其出發(fā)點首先是組織的發(fā)展戰(zhàn)略,以組織發(fā)展戰(zhàn)略為起點,遵循組織的風險與內控體系,制定相應的IT建設運行的管理機制。
IT治理的關鍵涵蓋IT組織、IT戰(zhàn)略、IT架構、IT基礎設施、業(yè)務需求、IT投資、信息安全等,主要確定這些要素中“做什么決策?誰來決策?怎么來決策?如何監(jiān)督和評價決策?”。
整個IT建設生命周期都是IT治理的對象,包括IT組織與規(guī)劃、IT建設與交付、IT運行與維護、IT評估與優(yōu)化。IT治理的國際最佳實踐就是基于各個對象治理的成熟的方法論和工具,包括CobiT、ITIL、ISO27001、Prince2等。
對于Cobit是當前采用的比較多的IT治理框架規(guī)范和企業(yè)IT治理水平評估標準。Cobit信息系統(tǒng)審計與控制協(xié)會在1996年公布,是在國際上公認的、權威的安全與信息技術管理和控制的標準,將IT過程,IT資源與企業(yè)的策略與目標(準則)聯(lián)系起來,形成一個三維的體系結構。

在當前Cobit5流程規(guī)范框架中,更加強調了企業(yè)組織,業(yè)務和技術之間的平衡,幫助企業(yè)更好的建設內部IT創(chuàng)造更多的業(yè)務價值。Cobit5能夠為整個企業(yè)使IT在整體上得以治理和管理,并承擔整個端到端業(yè)務和IT功能區(qū)域的責任,同時兼顧內外部利益相關者與IT相關的利益。
在以往的IT項目咨詢規(guī)劃中,我們基本也會借鑒Cobit標準框架來構建企業(yè)內部IT治理框架規(guī)范。
SOA治理
SOA 治理是 IT 治理的一種特殊化,其將關鍵 IT 治理決策置于服務組件、服務和業(yè)務流程的生命周期上下文中。SOA 治理對生命周期進行有效管理,生命周期是其關鍵目標。SOA 治理重點關注服務生命周期的一些方面,例如:計劃、發(fā)布、發(fā)現(xiàn)、版本治理、管理和安全性。
對于SOA治理往往比IT治理更加重要,一個核心原因就是傳統(tǒng)的SOA架構解決的是多個業(yè)務系統(tǒng)間的接口服務基礎和復用問題,往往涉及到多個開發(fā)商,多個業(yè)務部門,多個流程間的協(xié)同。這個更加需要制訂嚴格的標準規(guī)范去管理和執(zhí)行。
比如在SOA項目實施過程中,經常聽到的接口管理混亂,接口實現(xiàn)標準不統(tǒng)一,接口版本混亂,接口無退出或下線機制,接口無法復用,無法分析某個接口究竟多少消費方在調用等都是屬于前期的SOA治理體系不完整導致。
對于SOA治理,IBM給出過一個完整生命周期,即:

IBM 的 SOA Governance and Management Method (SGMM) 是一個完整的流程,用于執(zhí)行 SOA 治理生命周期,將治理應用于 SOA 生命周期。SGMM 包括四個階段:
- 計劃——確定治理的重點。
- 定義——定義 SOA 治理模型。
- 啟用——實現(xiàn) SOA 治理模型。
- 度量——改進 SOA 治理模型。

在該治理框架中核心還是圍繞服務全面生命周期管理,關鍵內容包括:
- 服務定義(服務的范圍、接口和邊界)
- 服務部署生命周期(各個生命周期階段)
- 服務版本治理(包括兼容性)
- 服務遷移(啟用和退役)
- 服務注冊中心(依賴關系)
- 服務消息模型(規(guī)范數(shù)據模型)
- 服務監(jiān)視(進行問題確定)
- 服務所有權(企業(yè)組織)
- 服務測試(重復測試)
- 服務安全(包括可接受的保護范圍)
對于SOA治理本身,我實際上在前面很多文章都已經談到過,應該是包括了SOA建設前周期和SOA運維后周期兩個部分的內容。前期覆蓋SOA實施全生命周期,后期覆蓋SOA運維監(jiān)控全流程。而從當前主流的DevOps方法論來看,這兩個本身又應該融為一體。
以下是我原來給出的一個SOA治理管控體系構圖:

其中在縱向覆蓋了SOA從設計,開發(fā),測試,部署,運維,監(jiān)控的全生命周期管理。同時在橫向又從業(yè)務,服務,支撐三個過程域進行展開。
即在有了SOA治理后,做任何一件事你都知道應該遵循什么樣的規(guī)則來做,這是其一。其二在出現(xiàn)問題需要決策的時候,你都知道應該遵循什么樣的決策流程來決策。在這里面一是涉及到業(yè)務系統(tǒng),集成商,甲方信息化和業(yè)務部門組織;二是涉及到技術標準規(guī)范和流程,不僅僅是規(guī)范,同時包括了流程,例如服務接入流程,消費流程,接口問題的分析和解決流程等。
在整個SOA服務全生命周期管理中,你所有執(zhí)行的內容都有章可循,這就是SOA治理。
SOA治理不僅僅是后期的服務運維和SLA管理等,同時也包括了前面談到的SOA從服務識別,定義,設計,開發(fā),測試,部署上線的全生命周期管理規(guī)范和流程。而在SOA運維階段,談SOA治理的時候首先你要看到對于常規(guī)的IT治理和ITIL的內容,SOA實施和建設也需要完全去遵守。
而這里面最重要的幾點拿出來說就是:
其一就是服務變更和版本管理,上線后的服務如何變更,服務變更如何進行影響分析,變更究竟是升級大版本還是升級小版本,包括服務進行版本升級后如何對老的業(yè)務系統(tǒng)進行版本兼容等,這些都必須提前制定規(guī)范和流程,同時制定變更分析方法。否則就會導致后續(xù)服務上線版本混亂,無法管理的局面。
其二就是服務SLA管理,服務的SLA等級如何進行制定,當出現(xiàn)資源約束的時候如何根據服務優(yōu)先級進行服務流量控制,對于高SLA等級的服務如何來保證更高的服務運行高可用性,高性能和冗余等。SOA的服務監(jiān)控,服務告警如何與服務運行實例,服務SLA等級密切結合,這些也需要在前期制定規(guī)范和標準。好的SLA管理和監(jiān)控運維體系,核心目標就是確保SOA平臺的高可用和高性能,確保在資源約束情況下高SLA等級服務的高可用性。
其三就是服務的狀態(tài)管理,這個也相對重要,服務如何從定義設計狀態(tài)到上線運行,對于上線運行的服務如何進行下線處理等,這些應該遵循什么樣的原則,對于服務下線如何進行影響分析,遵循什么樣的下線流程,如何進行例行檢查以分析潛在可能下線的服務等,這些也必須提前約定并制定規(guī)范流程。
最后還有一點就是服務的安全管理,如何保證服務運行的安全,服務如何進行訪問授權,對于有特別要求的服務如何進行傳輸安全,數(shù)據安全控制,如何進行數(shù)據加密處理那么具體的加密和解密規(guī)則約定是如何的。對于接入的服務,在哪些場景下必須啟用哪些類別的安全控制。這些也屬于我們必須考慮的問題。
微服務治理概述
在談微服務治理的時候,首先還是需要重新回顧下微服務的概念。

微服務是指可以在“自己的程序”中運行,并通過“輕量級設備與HTTP型API進行溝通”。
其中關鍵在于該服務可以在自己的程序中運行。通過這一點我們就可以將服務公開與微服務架構(在現(xiàn)有系統(tǒng)中分布一個API)區(qū)分開來。在服務公開中,許多服務都可以被內部獨立進程所限制。如果其中任何一個服務需要增加某種功能,那么就必須縮小進程范圍。在微服務架構中,只需要在特定的某種服務中增加所需功能,而不影響整體進程。
注意,當我們經常談服務的時候,很容易直接想到的就是類似WS,Rest API等服務接口,因為在SOA架構概念里面服務即特指這些服務接口。
而在微服務架構下,特別要注意微服務不是簡單的Http Rest API接口。也就是說微服務本身包括了拆分后的微服務模塊,微服務模塊提供的API兩個部分內容。
即微服務 = 微服務模塊 + 微服務API接口
也正是這個原因,我們才看到微服務治理不能簡單地和SOA治理做等同。比如將微服務治理簡單理解為類似SOA架構下的Http Rest API接口或RPC接口的管控治理。一個完整的微服務治理應該同時包括了傳統(tǒng)的軟件開發(fā)全生命周期管理+接口服務全生命周期管理的內容。
只是原來的軟件系統(tǒng)開發(fā)變成了一個個拆分后的微服務模塊開發(fā)。
微服務治理框架
對于微服務治理,如果我們用這個關鍵字進行搜索,搜索到的內容主要包括兩個部分。
- 類似Springcloud,Istio,治理平臺等軟件框架平臺內容
- 類似服務限流熔斷,服務鏈監(jiān)控,安全,日志,SLA管理等內容
當然這兩個部分內容本身沒有錯。但是現(xiàn)在容易造成的誤解的就是將對微服務架構平臺上線后的微服務運行管控,監(jiān)控分析理解為完整的微服務治理內容。而實際上我們看到微服務治理的范疇遠遠超過這個理解。
也就是說軟件治理框架僅僅是工具或平臺,是執(zhí)行你制定的策略用地。那么治理本身的關鍵是制訂策略,而不是策略究竟是人來執(zhí)行,還是軟件工具平臺來執(zhí)行。
我們舉一個簡單的例子來說明下。
對于治理平臺提供了服務限流熔斷的功能,比如并發(fā)數(shù)大于1萬次就進行限流,我們也很容易將該規(guī)則配置到治理平臺。但是實際治理的關鍵是制定一個策略,即我們針對不同的業(yè)務場景,服務類型,服務SLA重要性要求,應該如何去制訂合理的限流策略。
不清楚基于什么規(guī)則制訂策略,在平臺上胡亂配置,反而是起到副作用。
再比如你的治理平臺同時提供了服務集成,消息集成和大文件集成能力,這個是治理平臺本身的功能。但是針對不同的業(yè)務集成需求,如何制訂服務集成類型,這就是典型的服務治理要考慮的內容。否則服務實現(xiàn)類型不對,服務定義顆粒度不對,都導致服務運行效率,質量出問題。
這也正是前面強調的,管理治理工具平臺不難,難得是基于什么原則去管理。
微服務治理體系架構和實踐

上面這本書是我最近購買和閱讀的一本書,差不多讀到了一半,很多地方有啟發(fā),而且里面很多做法實際和我們實施SOA集成大項目中的,SOA治理管控做法一致。
對于這本書的內容,我后面還會單獨整理筆記。
從這本書,可以看到作者對微服務治理的理解包括了度量,管控,管理幾個關鍵方面,并基于三位一體的思路實現(xiàn)一個微服務治理的閉環(huán)。
而里面涉及到的關鍵就是微服務度量體系的建設,服務監(jiān)控管理(限流,熔斷,降級,安全)和服務鏈監(jiān)控。其中服務度量涉及到服務開發(fā),測試,運維,上線運行各階段的度量;對于服務管控本書也涉及到微服務全生命周期的管控。
在該書給出了微服務治理和微服務管理之間的關系如下:

從中可以看到度量在整個微服務治理中起到要給關鍵作用,即通過度量來實現(xiàn)整個治理和管理過程的閉環(huán),其次是實現(xiàn)治理規(guī)范和準則的持續(xù)優(yōu)化和改進。
網上有一篇文章大家可以參考:
http://www.uml.org.cn/wfw/201908013.asp?artid=22256
在該書里面給出了一個治理,管理,度量三位一體的微服務治理整體架構。

從圖中可以看到,微服務的治理既要進行線上的治理,也要進行線下的治理,通過線上線下兩大維度進行治理指標的采集,并把它匯總到數(shù)據倉庫中,進行統(tǒng)一的度量和分析。
這些度量指標中,有相當一部分線上的性能及異常指標會被轉化為運維事件,一旦觸發(fā)我們預先設置的閾值,就會被進一步轉化成“管控指令”,并通過調度中心下發(fā),進行服務的彈性伸縮、擴容縮容操作,或者進行服務的限流、降級、容錯、路由調整等管控操作。
另外一部分度量指標,包括架構、開發(fā)、測試、運維、過程協(xié)作效率等指標會通過治理委員會(泛指,治理成員的集合)進行人為的深入分析,并制定出治理決策,這些治理決策會通過相關的管理措施進行落地。
重新思考微服務治理框架
基于前面內容,這兩天重新思考了下微服務治理和治理框架。
對于微服務治理在前面已經談到了實際上包括了微服務模塊本書和微服務API接口治理兩個方面的內容,而不能簡單理解為API接口的治理。因此微服務治理應該進一步融入IT治理和SOA治理兩個部分的內容。
如果重新給微服務治理一個定義,應該如下:
微服務治理是針對企業(yè)組織和業(yè)務目標,制訂一套標準的管理,業(yè)務,技術,過程規(guī)范體系,實現(xiàn)微服務從需求,設計,開發(fā)上線,運行,下線的全生命周期管理能力。同時構建一套完整的度量指標體系,通過實時的日志和性能數(shù)據采集,持續(xù)的監(jiān)控服務運行監(jiān)控狀態(tài),并執(zhí)行相應的限流,預警等管控策略,以確保微服務的持續(xù)健康,可靠和高效運行。
基于這個,可以理解為整個治理框架應該包括三方面內容:
- 設計態(tài):如何進行微服務分析和設計,模塊拆分,接口設計
- 運行態(tài):如何構建度量分析體系,實現(xiàn)微服務監(jiān)控,確保微服務健康運行
- 規(guī)范類:構建一套完整的覆蓋管理,業(yè)務,技術,過程支撐的規(guī)范體系
- 工具類:基于上面治理要求,選擇可行的技術平臺或工具進行支撐
以上就是一個微服務治理本書應該包括的全面內容。從這個里面也可以看到微服務治理平臺或開發(fā)框架實際上僅僅占了微服務治理的一部分內容,而不是全部。
微服務治理概括來說,實際上關鍵包括兩個部分。
即在微服務需求和設計期是如何進行微服務拆分,接口顆粒度設計;在運行期是如何基于度量體系進行監(jiān)控并形成閉環(huán)持續(xù)優(yōu)化改進。
基于以上思考,對微服務治理整體框架進行重構如下:

該圖基本圍繞微服務全生命周期管理和基于服務度量體系的持續(xù)運維監(jiān)控兩個方面展開,對于一些二級的內容在該圖暫時無法展開,比如常說的服務版本管理,服務依賴分析是微服務治理的要給關鍵內容,暫時在該圖沒有體現(xiàn)。
在運行期還有一個關鍵思維的轉變就是不是簡單的發(fā)生問題故障后的運維治理,而是應該基于監(jiān)控預警分析下的主動的技術運營和SLA服務等級提升。