三招實(shí)現(xiàn)高效的企業(yè)級(jí)微服務(wù)治理
譯文【51CTO.com快譯】眾所周知,在一些中大型應(yīng)用中,企業(yè)通常會(huì)擁有數(shù)千個(gè)微服務(wù)。同時(shí),每個(gè)團(tuán)隊(duì)在選擇自己的技術(shù)堆棧時(shí)也擁有著一定的自主權(quán)。那么,企業(yè)不可避免地需要通過微服務(wù)的治理機(jī)制,來避免構(gòu)建出那些難以管理且不穩(wěn)定的架構(gòu)。而如果缺乏強(qiáng)有力的微服務(wù)治理策略,企業(yè)將會(huì)面臨如下的挑戰(zhàn):
- 缺乏適當(dāng)?shù)臋C(jī)制來監(jiān)控與衡量現(xiàn)有的產(chǎn)品性能,進(jìn)而失去新產(chǎn)品的創(chuàng)新力。
- 由于缺少合適的平臺(tái),企業(yè)將無法從整體上獲得洞見,也無法與IT團(tuán)隊(duì)進(jìn)行規(guī)劃與整體設(shè)計(jì)。
- 各種過期的文檔將會(huì)嚴(yán)重影響產(chǎn)品交付的敏捷性。
- 自治團(tuán)隊(duì)與系統(tǒng)無法通過平臺(tái)進(jìn)行相互操作與協(xié)作,企業(yè)會(huì)因?yàn)閱适艚菪远鵁o法遵循聯(lián)合開發(fā)(federated development)的原則。
雖然每個(gè)團(tuán)隊(duì)都應(yīng)當(dāng)具有標(biāo)準(zhǔn)化的策略可供遵循,但是任何集中式的治理方式都可能會(huì)違背微服務(wù)架構(gòu)的核心原則,即:“為團(tuán)隊(duì)提供自治性和敏捷性”。因此,在面對(duì)具有多個(gè)系統(tǒng)和復(fù)雜操作的企業(yè)級(jí)集成環(huán)境時(shí),我們需要解決的問題是:如何才能有效地提供分散式的治理方案?
在實(shí)施微服務(wù)治理策略時(shí),我們往往需要在思維上進(jìn)行范式的轉(zhuǎn)變。也就是說,各種治理策略應(yīng)當(dāng)符合微服務(wù)的核心原則,即:各種獨(dú)立且自包含的服務(wù)、單一的職責(zé)、以及跨職能的團(tuán)隊(duì),需要與業(yè)務(wù)、策略、以及優(yōu)秀實(shí)踐保持一致。在此,我們提出三個(gè)實(shí)現(xiàn)高效的企業(yè)級(jí)微服務(wù)治理的方法,它們分別是:基于域(domain-based),以產(chǎn)品為中心(product-centric)、平臺(tái)思想(platform thinking)。根據(jù)這三種方法,我們將能夠?yàn)槠髽I(yè)提供一個(gè)與微服務(wù)原則相一致的治理平臺(tái),以便企業(yè)能夠自動(dòng)化地整合各項(xiàng)全局策略、標(biāo)準(zhǔn)和指南。下面,我們將逐一展開討論。
基于域
微服務(wù)體系架構(gòu)的關(guān)鍵原理之一是:遵循域驅(qū)動(dòng)設(shè)計(jì)(domain-driven design,DDD)。也就是說,我們的治理策略應(yīng)當(dāng)將“域”視為重點(diǎn),其中各項(xiàng)業(yè)務(wù)或域?qū)<覒?yīng)當(dāng)根據(jù)DDD來定義信息模型。同時(shí),企業(yè)還應(yīng)該能夠根據(jù)信息模型,為每個(gè)域定義相應(yīng)的業(yè)務(wù)能力。
以產(chǎn)品為中心
企業(yè)應(yīng)該能夠根據(jù)現(xiàn)有的信息模型和業(yè)務(wù)功能,來輕松定義各種產(chǎn)品,并且能夠?yàn)楫a(chǎn)品定義相應(yīng)的業(yè)務(wù)KPI。在治理方面,我們還應(yīng)當(dāng)注意為企業(yè)提供有關(guān)現(xiàn)有產(chǎn)品、API、服務(wù)和實(shí)際KPI的整體視圖。這些將能夠幫助企業(yè)保持業(yè)務(wù)能力與最終客戶在預(yù)期上的一致性,快速識(shí)別和評(píng)估創(chuàng)新產(chǎn)品的有效性。
平臺(tái)思想
借助平臺(tái)思想,企業(yè)應(yīng)該能夠?yàn)闃I(yè)務(wù)和IT提供自助化的服務(wù)治理平臺(tái),以便兩者進(jìn)行相互協(xié)調(diào)和協(xié)作。企業(yè)應(yīng)該能夠通過模板定義全局策略、標(biāo)準(zhǔn)和準(zhǔn)則。團(tuán)隊(duì)可以根據(jù)他們?yōu)樽约旱念I(lǐng)域所確定的工具、以及技術(shù),來構(gòu)建開發(fā)人員的模板。各種技術(shù)工件(artifact)應(yīng)當(dāng)通過模板來自動(dòng)生成,并通過CI/CD管道被部署到相應(yīng)的運(yùn)行時(shí)(run-time)環(huán)境中,從而使得策略、標(biāo)準(zhǔn)和指南能夠得到自動(dòng)化的實(shí)現(xiàn)。
下圖描述了一種業(yè)務(wù)體系架構(gòu)。在整個(gè)開發(fā)生命周期中,它屬于一種嵌入式的自助治理服務(wù)平臺(tái)。
如上圖所示,企業(yè)可以通過定義或上傳現(xiàn)有的信息模型,來建立各種業(yè)務(wù)能力,并快速定義新產(chǎn)品、及其預(yù)期的KPI。而團(tuán)隊(duì)通過設(shè)計(jì)和創(chuàng)建API的定義,為微服務(wù)和業(yè)務(wù)事件定義那些消費(fèi)者(consumer-driven)驅(qū)動(dòng)的合約,以及各種非功能性的需求,以實(shí)現(xiàn)業(yè)務(wù)所定義的產(chǎn)品。同時(shí),他們應(yīng)該能夠定義各種策略、優(yōu)秀實(shí)踐、訪問規(guī)則、數(shù)據(jù)質(zhì)量規(guī)則,上載相關(guān)的舊資產(chǎn)、數(shù)據(jù)源和集成點(diǎn)的各種元數(shù)據(jù)(meta-data)信息。這些實(shí)務(wù)都有助于團(tuán)隊(duì)在設(shè)計(jì)時(shí)定義好從消費(fèi)者到API與微服務(wù)的業(yè)務(wù)能力,SOAP服務(wù)之類的舊資產(chǎn),甚至是數(shù)據(jù)源的端到端線性關(guān)系。
我曾經(jīng)有個(gè)客戶,它的企業(yè)擁有4,000至5,000個(gè)微服務(wù),甚至有10至20個(gè)相同的微服務(wù)版本映射到不同的消費(fèi)者處。他們所面臨的挑戰(zhàn)是:必須依靠運(yùn)行時(shí)的各種指標(biāo),來識(shí)別消費(fèi)者正在使用的版本,并通過開展影響分析,以改善當(dāng)前的敏捷性問題。在實(shí)踐中,他們發(fā)現(xiàn)上述三種自助服務(wù)平臺(tái),就可以幫助他們建立端到端的線性關(guān)系。
此類平臺(tái)具有的另一項(xiàng)重要功能是:使團(tuán)隊(duì)能夠定義各種開發(fā)者模板,以便映射諸如:API定義、消費(fèi)者驅(qū)動(dòng)合約、集成點(diǎn)、策略、訪問規(guī)則、數(shù)據(jù)質(zhì)量規(guī)則等受控的元數(shù)據(jù)值。這些模板應(yīng)當(dāng)通過源代碼管理(source control management,SCM)來進(jìn)行版本控制,并與CI/CD的管道相集成,進(jìn)而自動(dòng)生成技術(shù)工件(如下圖所示)。此處的技術(shù)工件包括:API代理、微服務(wù)和業(yè)務(wù)事件的框架、各層之間的映射、單元測(cè)試用例、集成測(cè)試用例、來自消費(fèi)者驅(qū)動(dòng)的合約stub,以及API文檔等。這些將有助于企業(yè)根據(jù)各種受控制的元數(shù)據(jù)值產(chǎn)生一致性的輸出,允許自己的團(tuán)隊(duì)更專注于業(yè)務(wù)邏輯,以及促進(jìn)IT部門不斷交付業(yè)務(wù)價(jià)值。此外,通過各種數(shù)據(jù)質(zhì)量規(guī)則、以及自動(dòng)化管理策略,我們還應(yīng)當(dāng)將測(cè)試、基本安全性、以及認(rèn)證等方面內(nèi)置到CI/CD的流程中。
那些帶有CI/CD管道的模板、以及線性集成點(diǎn)上的元數(shù)據(jù),會(huì)使得我們能夠?qū)⒓傻倪壿媴R總到可以獨(dú)立控制與更新的管道中。此舉不但能夠支持聯(lián)合開發(fā),還可以進(jìn)一步提高產(chǎn)品“面市的速度”。
通過模板自動(dòng)生成的技術(shù)工件
就像管理大師彼得·德魯克(Peter Drucker)所說:“我們無法改善和管理那些無法衡量的內(nèi)容。”可見,衡量性能是另一個(gè)值得關(guān)注的要點(diǎn)。如上圖所示,我們應(yīng)該將運(yùn)行時(shí)環(huán)境中的各項(xiàng)指標(biāo)及時(shí)反饋到平臺(tái)上,以計(jì)算實(shí)際的KPI和NFR(非功能性需求),進(jìn)而幫助企業(yè)和團(tuán)隊(duì)比較實(shí)際狀態(tài)與計(jì)劃上的差異,以便團(tuán)隊(duì)盡早獲悉變化,并根據(jù)實(shí)際情況做出正確的決策。
總結(jié)
可見,為了擁有一套有效的機(jī)制來實(shí)施微服務(wù)的治理,企業(yè)的主要推進(jìn)方向應(yīng)當(dāng)是:通過具有基于域和以產(chǎn)品為中心的模型,來搭建自助服務(wù)的治理平臺(tái)。通過平臺(tái)提供的治理方法和一致性的微服務(wù)原則,企業(yè)將能夠快速地交付出具有創(chuàng)新特質(zhì)的新產(chǎn)品。
與此同時(shí),自助服務(wù)平臺(tái)為業(yè)務(wù)和IT部門提供了協(xié)作和協(xié)調(diào)的橋梁,它可以促進(jìn)各個(gè)團(tuán)隊(duì)更加專注于交付出真正的業(yè)務(wù)價(jià)值。而那些經(jīng)過治理的策略、標(biāo)準(zhǔn)和指南模板,也會(huì)在實(shí)施過程中產(chǎn)生可重復(fù)性的技術(shù)輸出。
通過采用上述三種微服務(wù)的治理方法,您的企業(yè)將能夠?qū)崿F(xiàn)設(shè)計(jì)時(shí)間和運(yùn)行時(shí)的獨(dú)立性,先進(jìn)的聯(lián)合開發(fā)模式,以及在不影響治理的情況下,加快體系架構(gòu)的不斷迭代。
原文標(biāo)題:3 Keys to Efficient Enterprise Microservices Governance,作者:Asok Jacob Payyapilly
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】




























