雲原生(CloudNative)將成為應用雲化開發的主流方式

雲原生(CloudNative)將成為應用雲化開發的主流方式

雲原生(CloudNative)將成為應用雲化開發的主流方式

1 什麼是雲原生(CloudNative)平台?

2015年谷歌成立了原生雲計算基金會(CNCF),目前基金會成員包含Box、華為、思科、Docker、eBay、IBM、英特爾、紅帽、Twitter、VMware、三星等70多家成員。

CNCF認為CloudNative系統需包含的屬性:

(a) 容器化封裝:以容器為基礎,提高整體開發水平,形成代碼和組件重用,簡化雲原生應用程序的維護。在容器中運行應用程序和進程,並作為應用程序部署的獨立單元,實現高水平資源隔離。

(b) 自動化管理:統一調度和管理中心,從根本上提高系統和資源利用率,同時降低運維成本。

(c) 面向微服務:通過松耦合方式,提升應用程序的整體敏捷性和可維護性。

2 傳統開發的問題和挑戰有哪些?

開發、測試、運維無法一體化,上線周期長

一般中小企業應用開發相對粗放,開發自行搭建環境,開發後代碼給測試,而測試通常也要維護一套相同的運行環境,對每次測試配置應用和環境,容易引起兩邊不一致,造成測試質量下降。同樣的問題也容易發生在部署上線,並可能造成更大的線上故障。

傳統應用開發資源利用率低

業務部門通常會根據自己的業務發展規劃資源需求,如起初平均只要一台設備,但考慮突發業務峰值,以及後續擴容,通常會冗餘3~5倍左右的資源,這部分資源幾乎無法被共享使用。而最近幾年出現了虛擬化技術後,理論上基於VM的方式對這個問題有所改善,但仍然存在業務部門申請虛擬機後無人主動釋放的問題,人為因素仍然造成設備資源利用率低。

單體應用架構無法滿足應用快速上線和迭代要求

傳統應用開發通常無法在早期就整體上設計架構,造成後續業務發展代碼和系統結構高度耦合,繼而影響整個開發團隊合作,造成組織龐大,分工混亂。同時在新功能開發迭代、問題排查上牽一髮而動全身,新功能上線替換式升級,需要中斷線上業務,造成整體系統可用性很低;發布上線本身還可能附帶BUG風險高,隨著時間,人員變動調整,每個企業都有一堆無法維護的毒瘤代碼;在運維上,單體應用幾乎幾法擴容,隨著業務發展,只能限於縱向擴容,盲目提升硬體設備能力,購置昂貴的高端伺服器,運維成本越來越高。

3 業界CloudNative相關的產品是如何解決這些問題?

DevOps模式全棧開發運維

AWS在雲服務層面為開發人員提供了SDK包、命令行工具、IDE(Eclipse、Visual Studio)工具,以及CodeCommit、CodePipeline、CodeBuild、CodeDeploy等服務,對應用程序自動構建、測試應用程序並將其部署至 AWS 或本地環境提供能力。

而微軟的Azure,事實上已經在DevOps上耕耘了二十年之久,如廣泛為人所知的Visual Studio,1997年發布,2013年發布了VisualStudio Online,包含了源代碼控制託管、工作項目管理、協作和構建服務,同時支持直接部署應用到Azure,形成目前業界最全面的DevOps能力。

通過DevOps流水線+Docker容器,實現自動化工程管理,實現開發、測試環境自動申請和構建。通過Docker標準化打包應用配置和環境,生成輕量容器鏡像,通過鏡像地方式迭代開發、測試、部署,加速應用上線。

自動化運維在合理保障應用高可用的前提下,提升資源利用率,降低成本

AWS Container Service 是一項高度可擴展的高性能容器管理服務,支持 Docker 容器,可在實例群集上輕鬆運行應用程序。實現應用自動部署、運維、擴展管理基礎設施。

Google Container Service 基於開源的Kubernetes系統,實現Docker容器調度到集群中,並根據定義自動管理資源和集群。

容器實現了輕量級「虛擬化」,使得資源隔離切分更細粒度,降低資源碎片。輕量級容器鏡像實現了應用實例快速部署,特別在自動化運維下可實現秒級的彈性擴縮容,幫助業務系統靈敏應對大流量峰谷請求,如:電商的搶購秒殺;遊戲的大規模玩家聚集團戰等場景。

微服務重塑企業架構

微服務架構按功能通常可分為開發框架和治理服務,治理服務是區別微服務和傳統SOA服務的關鍵,SOA通常以匯流排方式實現不同服務間通信,仍然是松耦合模式,對匯流排依賴較高。微服務強調服務的點對點通信,對於服務治理沒有直接依賴,為解耦模式。

微服務原則實現了業務功能的細化劃分,使得開發組織根據不同領域獨立運作,職責明確,分工合作簡便,客觀提升了開發團隊效率。同時整體業務細分後可根據團隊和業務偏好選擇不同的開發語言,通信協議靈活構建服務。

微服務特點使得它領域邏輯單一,代碼包更小,更容易配合容器的輕量級打包、配合流水線,實現應用的快速迭代和發布上線,並結合容器的彈性伸縮,形成完美搭配。

當然在業務拆分微服務化後,必然帶來開發服務時調試的難度,以及運維管理的碎片化,解決方案通常是調用鏈分析、微服務監控等功能。

4 業界類CloudNative情況

Azure 微服務架構

Azure實現了從IaaS基礎設施到容器、微服務的服務端整體構建,結合Visual Studio開發測試端,實現完整的DevOps平台流程。

華為 ServiceStage

華為 ServiceStage 實現了全棧式應用開發、測試、部署流程,具備了流水線、微服務、容器服務、APM等功能,目前華為在kubernetes、Docker等開源社區領域貢獻均為國內第一,ServiceStage也是國內CloudNative體系最完善的平台。

5 未來展望

在自動化運維領域,CloudNative模式雖然大幅降低了運維成本,但目前業界領先的雲解決方案正在向serverless方向演進,serverless也可理解為免運維,平台背後跑的計算、存儲和網路完全不用開發人員操心。業界AWS推出的serverless PaaS平台Lambda、step functions、SAM,都基於構建微服務能力。相對目前CloudNative概念,serverless需要解決重量級應用部署;老應用改造成本等問題,未來將有更多的「雲原生」概念演進,促進雲計算領域蓬勃發展。


推薦閱讀:

微服務設計—微服務可靠性
微服務之SpringBoot解讀
快速開始istio
常見微服務架構方案:Spring Cloud、消息隊列、Docker Swarm等
istio源碼解析系列(三)-Mixer工作流程淺析

TAG:PaaS | cloudnative | 微服務架構 |