講在前面的話:
若企業缺乏對服務變更的控制和規則,那么一個服務在經過幾個項目之后,就很有可能被隨意更改成多個版本,將來變成什么樣更是無法預測。久而久之,降低了服務重用的可能性,提高了服務利用的成本。
服務治理在SOA實施之初的作用不明顯,甚至在一定程度上影響到項目的進展,但隨着SOA實施深入開展和服務數量的增加,其作用會越來越明顯。正如SOA架構通過引入了多個層級,在一定程度上犧牲單筆服務調用的效率卻換來架構的靈活性一樣。
什么是SOA
面向服務的體系結構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)通過這些服務之間定義良好的接口和契約(規范)聯系起來。
SOA的定義
面向服務架構,它可以根據需求通過網絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調用,從而有效控制系統中與軟件代理交互的人為依賴性。
SOA的優勢
對 SOA 的需要來源於需要使業務,讓服務變得更加靈活,以適應業務中的改變。更好的實現業務驅動。
SOA具有低耦合性特點,業務伙伴對整個業務系統的影響較低。
SOA的特性
暴露API,可從企業外部訪問
隨時可用
松散耦合
可重用的服務(與重組服務)
標准化的服務接口
精確定義的服務契約
...
SOA四大支柱
團隊合作
理念共識
紀律規范
范圍邊界
SOA八個原則
標准化服務合同原則
服務松散耦合原則
服務的抽象原則
服務可重用性原則
服務自治原則(服務合同定義良好功能邊界,避免服務重疊)
服務無狀態原則?
服務可發現原則
服務可組合原則
服務治理的重要性
服務是SOA的核心。按其願景,在新項目設計實施過程中,項目團隊通常會面臨如下問題:
1.企業有無服務目錄,服務目錄在哪里?
2.哪些服務可在新項目實施中重用?
3.需要新開發哪些功能,這些功能是否要封裝成服務,供其他應用使用?
4.當新系統所需要的某一功能已經存在於某一現有系統之中,但是並非以服務形式出現時,是否要對它進行封裝,如何封裝?
5.服務的調用是否必須經過企業服務總線(ESB、dubbo_zk),何種情況下必須經過ESB,何種情況下不需要?
6.當某個現有服務功能部門滿足某項需求時,如何對服務進行改造和版本控制?
7.待開發的新系統是對某個舊系統的升級,那么舊系統提供的服務何時中止,用新系統中的服務替換,還是將服務升級成另一種形式?
8.服務來自於哪個系統,被哪些系統所用?
9.服務由誰負責管理和維護?
10.服務可被哪些人或角色有權限訪問?
如何服務治理
1、建立服務倉庫
2、制定治理規范
服務定義(服務的范圍、接口和邊界)
服務部署生命周期(各個生命周期階段)
服務版本治理(包括兼容性)
服務變更(啟用和退役)
服務注冊中心(依賴關系)
服務監視(進行問題確定)
服務所有權(企業組織)
服務測試(重復測試)
服務安全(包括可接受的保護范圍)