微服務生命周期的9個任務事項

微服務實施需要明確每一步怎么做,可能存在的問題和解決思路、方法。如果能有相應的經驗和理論指導,將會大大有助于我們設計和構建微服務體系。但由于目前大部分人員都是關注微服務開發框架或工具,甚少討論微服務架構方法論。因此,進行微服務規劃,在一個相對較高的層次來探討、研究微服務的設計和實現顯得尤為重要。理論方法論就象燈塔、導航,為我們指明了方向,雖然也會有這樣那樣的問題,但只要方向對了,就不會南轅北轍,總會到目的地的。

也基于這樣的認知,我們在實施微服務的時候,基于相應的理論學習和經驗實踐,把微服務的生命周期過程關注的重點事項定義為:微服務規劃、微服務構建、微服務協同、微服務測試、微服務部署發布、微服務運營、微服務治理、微服務下線。每項任務側重點不同,實現的能力不同,共同完成微服務生命周期過程。

一、 微服務生命周期

采用微服務不僅僅是寫幾個微服務就萬事大吉了,微服務的部署、運營,微服務之間的調用、協作,微服務版本管理、上線下線,以及微服務體系的規劃、每個微服務的設計構建、測試,都是微服務體系中重要的內容。也是基于此考慮,我們將微服務整個生命周期過程任務事項梳理定義為規劃、構建、協同、測試、部署、發布、運營、下線和治理等:

微服務規劃是在決定采用微服務之后對現有業務流程進行梳理,根據自身技術能力和特點選擇合適的設計和構建方法論,規劃和構建微服務所需資源和基礎設施平臺等。

微服務構建是基于微服務設計和構建方法論,逐步提取微服務組件服務,分步驟的實現整個微服務體系建設。

微服務協同設計,是指微服務間基于彼此的聯系和依賴實現服務間調用和協作,共同完成業務應用邏輯功能。

微服務測試是微服務在測試環境構建測試域,利用測試擋板工具或服務完成微服務的各項測試,以滿足業務部門提出的功能、性能、部署、安全等各項需求。

微服務部署是微服務達到生產就緒的條件下部署到生產環境,為微服務正式發布做好準備。

微服務發布是完成生產驗證后正式對外發布服務,使服務可用。

微服務運營是向業務應用客戶提供正常的服務的過程,記錄并監控運行情況、計量計費、維護資源、修復缺陷、安全保證等。

微服務下線涉及微服務的版本管理、下線計劃、下線提醒、替代方案、接口停用、服務關閉等事項。

微服務治理則是為保證微服務整個生命周期過程中微服務的正常運營協調所需人員、流程、資源及所采取的措施等,比如提供微服務接口服務、微服務安全、微服務監控以及微服務生命周期管理等,進行流程、人員、工具之間協作的一種方式。

微服務生命周期中的微服務規劃、微服務構建、微服務協同、微服務測試、微服務部署發布、微服務運營、微服務下線、微服務治理等事項側重點不同,實現的能力不同,共同完成微服務生命周期過程。同時微服務生命周期過程也是DevOps貫穿的過程,微服務的彈性、灰度、監控、治理、管理等需要依賴容器等基礎設施平臺的支撐。這樣可以充分利用各種技術的優勢來提升IT對業務變化的響應能力。

(一) 微服務規劃

基于前期的學習、交流和研究,以及對自身技術實力、對業務流程的理解和認知,選擇合適的方法梳理業務流程,梳理數據交互,嘗試業務分解,規劃業務微服務。微服務規劃直接會影響到后期微服務的設計和構建,對微服務設計思想的認知和對業務流程理解的深度以及微服務設計方法直接決定了微服務設計的質量。所以我們認為如果沒有這方面的專家指導微服務規劃和設計,沒有相應的基礎設施支撐,不能自主管控微服務的生命周期,不建議輕易采用微服務架構。

我們認為IT系統建設已經過了走一步看一步的階段,當前需要對IT技術的選型和基礎平臺建設做出一個相對中長期的規劃,這類似于戰略層級,方向性的錯誤損失可能無法彌補。這也是我們關注規劃的原因之一。

微服務規劃的關鍵是對業務和技術的理解。梳理業務流程的目的也是為了加深對業務的理解,業務流程伴隨著數據流程。但往往一個現實的問題是技術人員對業務都是一知半解,但業務系統建設通常由技術人員主導,所以結果往往不令人滿意。所以我們強調從業務和數據的雙向融合,業務從上而下,數據從下而上,根據業務考慮數據的產生節點、數據量、數據變化頻率、SLA(負載、響應時間、最大并發請求)、存儲需求、網絡流量、局限性等,從而可以方便的在下個階段構建數據物理模型。當然這并不容易,既要求對業務有深入的理解,也要求對技術有深厚背景和廣闊知識面,能自主把控的專家參與并指導。

微服務規劃也是基于資源整合的考慮,人力、技術、設施、工具、數據等等若能整合在一起,可以集中力量發揮整體優勢。當前軟件發展已經從單體-集成階段過渡到了融合-平臺階段,服務化特別是微服務的思想使單體軟件系統逐步消亡,代之以統一化平臺,比如基礎設施資源虛擬化平臺、開發托管運維PaaS平臺、業務數據中臺和服務中臺等,這些平臺也不是彼此獨立,而是協同成為一個支撐企業業務的大統一平臺。平臺以組件服務如同積木可插拔的方式構建,其擴展性、彈性、可維護性、開放性、標準化、可替換性等都是當前單體或集成軟件無法滿足的。

在融合-平臺階段,前臺不同業務組、業務團隊的運營需要通過云計算的多租戶機制來保證,權限隔離、資源隔離、可擴展性、自治等由基礎設施平臺來支撐。可便捷的實現資源的重組和調配,敏捷響應業務快速變化需求。

(二) 微服務構建

規劃做好了,構建就容易多了。首先提取公共的組件,比如權限、配置、日志、監控告警、報表等。然后使用選擇的微服務設計構建方法從上到下,從業務到技術;從下到上,從數據到技術,設計構建出滿足業務需求的微服務。比如DDD和主數據設計方法。微服務設計、構建或拆分的關鍵在于正確的理解業務,識別新建業務應用或重構單體應用內部的業務領域及其邊界,識別數據生成、流動、變化、存儲、來源的節點。構建主數據模型,基于模型構建業務組件微服務,再基于業務流程構建其他的微服務組件。

不同問題需要不同視角來觀察理解,需要全面的認知,我們不認為一種方式可以萬能,所以可以嘗試不同的方法來構建,從不同的視角、不同的層次來驗證微服務構建的結果。

微服務實現可能更多需要考慮業務數據:數據量、數據存儲、數據變化、頻率以及局限條件等,然后確定數據庫層實現或存儲設計:單表、分區、分表、分庫、分數據中心、分地域等,微服務邏輯的實現方式會影響到微服務的配置、部署、擴展、彈性等。

(三) 微服務協同

我們一再強調微服務構建工具并不重要,微服務生態環境才是需要認真考慮的事情。微服務協同就要微服務在整個生態環境中高效合作完成業務需求。

(四) 微服務測試

測試是微服務生產就緒前的重要工作之一。測試是很繁瑣但又是很重要的工作,特別采用微服務之后,如果無法實現測試的自動化或DevOps,不只是影響交付效率和質量,其繁重的測試工作也會讓測試人員不堪重負。特別眾多微服務不同版本之間的協同測試,靠人力可能會捉襟見肘。我們可能不得不借助工具,在測試環境根據測試的場景自動構建測試域,利用測試擋板工具模擬調用的服務,自動生成測試用例,由容器云平臺提供資源支持,實現彈性伸縮、灰度發布、負載均衡等能力,完成微服務的功能測試、集成測試、性能測試等要求。同時檢驗部署、擴展、安全、日志、監控告警能力等。

(五) 微服務部署

為支持不同的開發語言和開發框架,我們要求開發交付的標準是可用的滿足功能、性能、彈性、輕量的鏡像,鏡像倉庫是各個環境之間的媒介,是微服務在不同環境發布和部署的起點。通常DevOps流程實現鏡像安全檢查、導入導出、鏡像同步、鏡像部署、微服務配置、微服務注冊、微服務API管理、微服務發布等,由容器云平臺提供微服務部署管理和治理能力。

可生產部署的微服務我們要求是生產就緒的。微服務生產就緒要滿足功能、性能、彈性、高可用、容錯、日志、監控、文檔可用等能力,根據業務場景的要求支持不同的部署方式。

(六) 微服務發布

微服務部署之后,完成生產驗證,通常可以通過API網關對外發布API接口服務。在服務目錄或者API Portal上進行瀏覽查看或測試。

微服務發布可能會有灰度的場景需求,也就是對于發布的新的版本功能引導部分流量過來,以便用實際的業務流量數據檢驗新的版本功能的正確性,確保整體業務應用的穩定,在初始灰度驗證的時候若有問題,可以及時調整,以減少影響,若沒有問題則逐步擴大流量,直到最后接管全部流量。

(七) 微服務運營

API網關是微服務架構下重要的基礎組件,利用API網關可以完成微服務的認證授權、訪問控制、安全機制、路由、過濾、映射、轉換、流控、熔斷等非業務邏輯功能,也可進行服務請求統計分析、計量計費、生成報表、實現API經濟,可以和容器云平臺結合更好的實現微服務的治理。

微服務運營要采取措施保證微服務提供的接口服務的正常運行,比如容錯機制、負載均衡、備份、自動擴展,或者根據業務場景實施流量控制,或某些特殊情景下采取熔斷機制等。

運營過程中出現的缺陷需要及時修復,通過的DevOps缺陷修復流程實現快速的迭代更新,保證業務應用不受明顯影響。

(八) 微服務下線

隨著時間的推移,微服務的版本可能會越來越多,不可能同時運營維護所有的版本,一些老舊的版本在運營一段時間之后就可能需要考慮遷移到新的支持版本,以減少維護工作量,提高收益率。

微服務運營可以采用產品運營的方法,在新的版本發布之后,經過一段時間穩定運行之后就不再更新維護舊的版本,建議用戶逐步遷移到新版本。這需要定義相應的微服務下線規則、流程和方式。

(九) 微服務治理

微服務治理理論上貫穿微服務生命周期各個階段,涉及人、組織、流程等。通常我們討論的是微服務發布部署和運營運維階段的治理能力,關注的更多是技術層面。我們討論過用API網關實現微服務治理,還涉及微服務規范、接口標準、微服務注冊、日志、監控、API管理等等,都是微服務生命周期過程中治理的內容。我們也探討過容器云之微服務治理?,這里就不再深入討論。

二、 DevOps協作

歷史總是驚人的相似!很多技術思想也是相通的。DevOps是為了增強不同團隊之間的協作,以高效地工作,微服務協同是協調微服務之間的協同合作。微服務是構建業務應用的基本單元,業務應用生命周期過程也就是DevOps貫穿的過程,協調相關的人、組織、流程、資源、工具,采取有力的措施來保障業務應用的研發、測試、部署、發布、運營等高效執行,滿足快速變化的業務需求的要求,對市場需要快速響應,或者引領創造新的市場需求。

三、 容器云基礎設施平臺支撐

站的高看的遠。基礎設施平臺的高度決定了其上托管運營的業務應用的敏捷度。微服務雖然不是必須要求容器云等基礎設施平臺,但有這樣的平臺將有助于提升業務應用的敏捷度,提高對業務變化的響應能力。

歡迎工作一到五年的Java工程師朋友們加入Java程序員開發: 854393687

群內提供免費的Java架構學習資料(里面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容