本文來(lái)自微信公眾號(hào)“twt企業(yè)IT社區(qū)”,作者/鄭金輝。
援引某廠商的說(shuō)法,云原生已經(jīng)進(jìn)入2.0時(shí)代,上云也從資源上云進(jìn)一步向應(yīng)用上云和業(yè)務(wù)上云升級(jí),推動(dòng)企業(yè)數(shù)字化轉(zhuǎn)型和智能升級(jí)。還有一個(gè)形象的說(shuō)法可以概括上述觀點(diǎn),云原生讓企業(yè)云化從“ON Cloud”走向“IN Cloud”。
一、緣起應(yīng)用架構(gòu)演進(jìn)
我們都知道,商業(yè)模式?jīng)Q定了產(chǎn)品形態(tài),產(chǎn)品決定了研發(fā)模式,研發(fā)模式又決定了需要采用什么樣的技術(shù)。縱觀這些年企業(yè)應(yīng)用架構(gòu)的發(fā)展,我們經(jīng)歷了傳統(tǒng)應(yīng)用時(shí)代、互聯(lián)網(wǎng)應(yīng)用時(shí)代和數(shù)字化轉(zhuǎn)型應(yīng)用時(shí)代,所處的時(shí)代不同引發(fā)的需求也不同,由此帶來(lái)對(duì)技術(shù)的要求自然也不同。
傳統(tǒng)的應(yīng)用需求是相對(duì)固定的,通常以項(xiàng)目化運(yùn)作,用戶的訪問(wèn)量可以預(yù)測(cè),容量是有限的,對(duì)停開(kāi)機(jī)的要求也沒(méi)有那么嚴(yán)格。所對(duì)應(yīng)的應(yīng)用架構(gòu)一般是單體應(yīng)用和垂直架構(gòu),集成方式也多是直連模式或者網(wǎng)狀集成。
互聯(lián)網(wǎng)應(yīng)用的特征是需求持續(xù)發(fā)展,產(chǎn)品化而非項(xiàng)目制,用戶量并非線性,往往會(huì)有陡增陡降。應(yīng)用架構(gòu)多是SOA架構(gòu),集成方式一般通過(guò)ESB等應(yīng)用集成平臺(tái)。
處在這樣一個(gè)數(shù)字化轉(zhuǎn)型的時(shí)代,我們的業(yè)務(wù)邊界和業(yè)務(wù)活動(dòng)是完全不可預(yù)知的,即便是對(duì)于互聯(lián)公司都是巨大的挑戰(zhàn),要求快速地嘗試、快速探測(cè)、快速的感知,應(yīng)用是服務(wù)化的方式提供,業(yè)務(wù)敏捷性前提之下,對(duì)技術(shù)體系的持續(xù)發(fā)布、分布式海量并發(fā)、灰度發(fā)布和線上測(cè)試都是基本訴求。業(yè)務(wù)的敏捷性持續(xù)發(fā)布,應(yīng)用平臺(tái)的彈性訴求,商業(yè)環(huán)境的變化,這是整個(gè)云原生產(chǎn)生的時(shí)代背景。
二、微服務(wù)是一個(gè)躲不開(kāi)的話題
首先,我們需要再次明確一個(gè)概念。微服務(wù),不是一種技術(shù)而是一種軟件架構(gòu)模式和方法,是一種基于將應(yīng)用程序構(gòu)建為小型服務(wù)集合的軟件開(kāi)發(fā)體系結(jié)構(gòu)方法。從某種程度上說(shuō),微服務(wù)是單體應(yīng)用的對(duì)立面。從本質(zhì)上來(lái)講,微服務(wù)就是把單體應(yīng)用從一個(gè)巨型的應(yīng)用拆分成數(shù)個(gè)更微小的服務(wù),協(xié)作完成原來(lái)單體應(yīng)用所提供的等效業(yè)務(wù)服務(wù)。單體應(yīng)用跟資源之間是一對(duì)一的緊耦合關(guān)系,單體應(yīng)用的協(xié)同也都是一些內(nèi)部協(xié)同,不存在外部的動(dòng)態(tài)依賴。而當(dāng)我們轉(zhuǎn)換到微服務(wù)之后,服務(wù)與服務(wù)之間會(huì)有依賴關(guān)系,依賴關(guān)系會(huì)變成網(wǎng)狀,變得復(fù)雜起來(lái)。
容器化的出現(xiàn),一定程度上帶動(dòng)了微服務(wù)架構(gòu)。架構(gòu)演化從單體式應(yīng)用到分布式,再?gòu)姆植际郊軜?gòu)到云原生架構(gòu),微服務(wù)在其中有著不可或缺的角色。
微服務(wù)體系和云原生架構(gòu)的組成部分有各自的部分,也有重疊的部分。
首先,微服務(wù)體系會(huì)涉及業(yè)務(wù)體系部分,從業(yè)務(wù)需求出發(fā),采用DDD等理念搭建微服務(wù)的業(yè)務(wù)模型,這部分其實(shí)并不在云原生架構(gòu)體系里面。
同樣,云原生是構(gòu)建在新型基礎(chǔ)設(shè)施上面的,所謂新型基礎(chǔ)設(shè)施是結(jié)合了分布式云和不可變?cè)瓌t的,微服務(wù)更強(qiáng)調(diào)外部依賴,并不涉及基礎(chǔ)設(shè)施部分。
微服務(wù)跟云原生共同關(guān)注的內(nèi)容,其實(shí)是技術(shù)體系和管理體系兩部分,其中技術(shù)體系主要是涉及微服務(wù)技術(shù)架構(gòu)、集成工具,,面向云原生更多強(qiáng)調(diào)云平臺(tái)和和容器化能力。管理體系更關(guān)注從業(yè)務(wù)角度如何支撐和獲取管理支持,比如研發(fā)過(guò)程中的敏捷、研發(fā)規(guī)范和度量,運(yùn)維過(guò)程的CICD等。
從微服務(wù)架構(gòu)的思想出發(fā),微服務(wù)架構(gòu)、DevOps和容器技術(shù)天然地走到了一塊兒,構(gòu)成了云原生應(yīng)用架構(gòu)的雛形。
三、云原生的基本理解
1、基本概念
云原生從字面意思上來(lái)看可以分成云和原生兩個(gè)部分。云原生的定義,CNCF是這樣說(shuō)的,“云原生技術(shù)有利于各組織在公有云、私有云和混合云等新型動(dòng)態(tài)環(huán)境中,構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用。云原生的代表技術(shù)包括容器、服務(wù)網(wǎng)格、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。這些技術(shù)能夠構(gòu)建容錯(cuò)性好、易于管理和便于觀察的松耦合系統(tǒng)。結(jié)合可靠的自動(dòng)化手段,云原生技術(shù)使工程師能夠輕松地對(duì)系統(tǒng)作出頻繁和可預(yù)測(cè)的重大變更。”
2、基本特征
CNCF給出了云原生應(yīng)用的三大特征:
容器化封裝:以容器為基礎(chǔ),提高整體開(kāi)發(fā)水平,形成代碼和組件重用,簡(jiǎn)化云原生應(yīng)用程序的維護(hù)。在容器中運(yùn)行應(yīng)用程序和進(jìn)程,并作為應(yīng)用程序部署的獨(dú)立單元,實(shí)現(xiàn)高水平資源隔離。
動(dòng)態(tài)管理:通過(guò)集中式的編排調(diào)度系統(tǒng)來(lái)動(dòng)態(tài)的管理和調(diào)度。
面向微服務(wù):明確服務(wù)間的依賴,互相解耦。
云原生包含了一組應(yīng)用的模式,用于幫助企業(yè)快速,持續(xù),可靠,規(guī)模化地交付業(yè)務(wù)軟件。云原生由微服務(wù)架構(gòu),DevOps和以容器為代表的敏捷基礎(chǔ)架構(gòu)組成。
我們可以簡(jiǎn)單地把云原生理解為:云原生=微服務(wù)+DevOps+持續(xù)交付+容器化。
3、演進(jìn)發(fā)展
云原生自誕生依賴,已經(jīng)度過(guò)了概念炒作的階段,進(jìn)入架構(gòu)落地階段,出現(xiàn)了云原生2.0的概念。云原生1.0與2.0最大的區(qū)別在于,1.0的云原生是ON Cloud,即把容器、微服務(wù)、DevOps等云原生的特征堆砌到云上。這樣的做法雖然實(shí)現(xiàn)了彈性、敏捷等,但還僅僅是解決了基礎(chǔ)設(shè)施架構(gòu)層的問(wèn)題,是以資源為核心,并未實(shí)現(xiàn)資源效率的最大化、最優(yōu)解。
而云原生2.0則是IN Cloud,是以應(yīng)用為中心。除了具備云原生1.0的容器、微服務(wù)、DevOps等特征外,更強(qiáng)調(diào)對(duì)資源的配備。
從現(xiàn)在基礎(chǔ)設(shè)施的發(fā)展情況來(lái)看,我們正在從以資源為中心的資源上云階段向以應(yīng)用為核心的應(yīng)用上云階段演進(jìn),關(guān)注點(diǎn)從資源云化向應(yīng)用云化滲透。第一階段,我們關(guān)注的是以資源自動(dòng)化為目標(biāo)的資源融合管理。第二階段,我們關(guān)注的是以應(yīng)用自動(dòng)化為目標(biāo)的應(yīng)用敏捷管理。
相對(duì)概念階段的云原生以及資源上云來(lái)說(shuō),云原生2.0的關(guān)注點(diǎn)有了以下變化:
高效的資源管理與調(diào)度:基于軟硬件協(xié)同構(gòu)建多元算力,為應(yīng)用提供極致的覆蓋邏輯、虛擬機(jī)、容器、函數(shù)等在內(nèi)的多元算力;基于邊云協(xié)同和分布式云架構(gòu),實(shí)現(xiàn)多云算力的縱向融合和橫向聯(lián)動(dòng),形成分布式泛在算力平臺(tái);以應(yīng)用為中心,實(shí)現(xiàn)資源的高效管理、調(diào)度和編排,實(shí)現(xiàn)一鍵部署、一建管理和智能感知。
敏捷的應(yīng)用交付與管理:通過(guò)創(chuàng)新應(yīng)用開(kāi)發(fā)模式,進(jìn)一步實(shí)現(xiàn)應(yīng)用的敏捷交付和應(yīng)用的全生命周期管理,通過(guò)侵入式和非侵入式兩種模式助力企業(yè)應(yīng)用架構(gòu)升級(jí)。
智能的業(yè)務(wù)支撐與開(kāi)放:主要是如何做好數(shù)據(jù)匯聚融合和數(shù)據(jù)運(yùn)營(yíng),推動(dòng)數(shù)據(jù)資產(chǎn)化、數(shù)據(jù)業(yè)務(wù)化和業(yè)務(wù)數(shù)據(jù)化,借助AI等新技術(shù),實(shí)現(xiàn)數(shù)據(jù)對(duì)業(yè)務(wù)的二次賦能,實(shí)現(xiàn)業(yè)務(wù)的智能升級(jí)。
完善的安全可信與合規(guī):借助云原生對(duì)基礎(chǔ)資源的融合納管,在基礎(chǔ)資源和基礎(chǔ)設(shè)施安全的基礎(chǔ)上,進(jìn)一步打造應(yīng)用、數(shù)據(jù)和業(yè)務(wù)安全。
四、可以預(yù)見(jiàn)的云原生發(fā)展趨勢(shì)
之前我曾經(jīng)說(shuō)過(guò)一個(gè)觀點(diǎn),云下一步發(fā)展的目標(biāo)就是讓上層應(yīng)用和業(yè)務(wù)意識(shí)不到云的存在。云原生的下一步發(fā)展就是朝這個(gè)方向發(fā)展。云原生將與分布式云深度融合,在充分考慮成本優(yōu)化和組織優(yōu)化的基礎(chǔ)上,推動(dòng)全棧云延伸到業(yè)務(wù)的每個(gè)角落。
現(xiàn)有云原生的基礎(chǔ)設(shè)施,基本處在簡(jiǎn)單堆砌和簡(jiǎn)單疊加的狀態(tài),基于應(yīng)用狀態(tài)的資源動(dòng)態(tài)感知和自動(dòng)供給尚處于比較困難的階段,不是普通用戶能夠企及的。云原生的下一步發(fā)展目標(biāo)就是提升軟硬件協(xié)同的效率和資源利用率,實(shí)現(xiàn)普通客戶觸手可達(dá)的資源與應(yīng)用狀態(tài)的相互感知,以及基于復(fù)雜的資源調(diào)度和編排。
異構(gòu)的技術(shù)棧,在相當(dāng)長(zhǎng)一段時(shí)間將持續(xù)存在,微服務(wù)治理將會(huì)是企業(yè)應(yīng)用架構(gòu)治理的重要工作。Serverless也將持續(xù)釋放其價(jià)值和活力,在頭部企業(yè)逐步擴(kuò)大示范效應(yīng)。
雖然以應(yīng)用為核心的云原生架構(gòu)發(fā)展會(huì)越來(lái)越迅猛,但是我們依然要保持清醒的頭腦,無(wú)論何種架構(gòu)何種技術(shù),最終目的都是以實(shí)現(xiàn)業(yè)務(wù)高效支撐為目的。所以我們依然認(rèn)為,持續(xù)打造以戰(zhàn)略為指引,以需求為核心的企業(yè)架構(gòu),是一項(xiàng)長(zhǎng)期的根本任務(wù)。