Serverless 的發(fā)展軌跡
2012 年,Serverless 這個(gè)單詞第一次出現(xiàn),由 Iron 公司提出,字面意思就是不需要服務(wù)器。但是真正被大家所熟知,是在 2014 年 AWS 推出 Lambda 的時(shí)候。Lambda 產(chǎn)品的推出開啟了云計(jì)算的新時(shí)代,之后所有的大廠都在跟進(jìn),比如微軟、谷歌、IBM 都先后推出自己的 Serverless 產(chǎn)品。
國內(nèi)是在 2017 年的時(shí)候,阿里云和騰訊云先后推出了自己的 Serverless 平臺(tái)。但這個(gè)時(shí)候,都是指 FaaS(Function as a Service)。接著到 2018 年,大家開始漸漸接觸到 Serverless,更多還是支付寶小程序和微信小程序的云開發(fā)平臺(tái)。隨后到 2019 年,國內(nèi)其他廠商如百度、華為、字節(jié)也都開始做 Serverless,現(xiàn)在 Serverless 已經(jīng)成了各大云廠商的標(biāo)配。
Serverless 是云計(jì)算的 2.0
為什么大家都要做 Serverless 呢?因?yàn)榇蠹叶颊J(rèn)為 Serverless 是云計(jì)算 2.0。隨著云計(jì)算的發(fā)展,Serverless 已經(jīng)成為一個(gè)技術(shù)趨勢(shì)、一個(gè)理念、一個(gè)云的發(fā)展方向。
云計(jì)算領(lǐng)域有兩篇非常著名的論文,是伯克利大學(xué)分別在 2009 年和 2019 年發(fā)表的。伯克利大學(xué)在 2009 年發(fā)表的一篇關(guān)于云計(jì)算的論文,預(yù)測(cè)了云計(jì)算的發(fā)展,比如計(jì)算資源可以按需索取、支持彈性、簡化運(yùn)維等,這些預(yù)測(cè)目前都已經(jīng)實(shí)現(xiàn)。
而伯克利在 2019 年 2 月發(fā)表的第二篇論文中,預(yù)測(cè) Serverless 是云計(jì)算下一個(gè)十年的發(fā)展方向。論文里也給出了關(guān)于 Serverless 的定義,簡單講就是Serverless Computing,由 FaaS + BaaS(Backend as a Service)構(gòu)成一個(gè) Serverless 軟件架構(gòu)。特點(diǎn)就是能夠按需彈性、按需付費(fèi),這與 CNCF 的定義是相似的,應(yīng)用以微服務(wù)或者函數(shù)的形式,拆解并部署到云上,能夠按需去做彈性伸縮,按需付費(fèi),不用關(guān)心底層資源。
Serverless 是云原生發(fā)展的高級(jí)階段
Serverless 跟云原生有什么關(guān)系呢?Serverless 的出現(xiàn),就像人類的演進(jìn)過程,代表著生產(chǎn)力的解放,極大提升了客戶用云的效率。Serverless 在其之上封裝了容器技術(shù),是云原生的高級(jí)階段。
Serverless 是對(duì)用戶強(qiáng)調(diào) No Server,本質(zhì)并不是不需要服務(wù)器,而是將服務(wù)器全權(quán)托管給了云廠商,用戶不用去關(guān)心,不用去管理,只用把業(yè)務(wù)部署到平臺(tái)上來,只需聚焦業(yè)務(wù)邏輯代碼,能夠根據(jù)實(shí)際請(qǐng)求進(jìn)行彈性伸縮,不用再去關(guān)心資源夠不夠。
Serverless 的核心價(jià)值
從物理機(jī)到 Serverless,就像我們買車一樣,如果要買一輛私家車,這個(gè)車的車況保險(xiǎn)全部要自己關(guān)心,然后你要自己開;到了虛擬機(jī)之后,我們把業(yè)務(wù) host 到云上,就像汽車租賃;然后再到網(wǎng)約車,我不用買車,不用關(guān)心車況,我們要從 A 點(diǎn)到 B 點(diǎn),只需要打個(gè)車,完全按需付費(fèi),按需彈性。
抽象出來其實(shí)就是有 3 個(gè)核心價(jià)值:
第一個(gè)是彈性伸縮,它比較省事。比如說我們剛才有電商場(chǎng)景,需要彈性、扛大流量,Serverless 能夠及時(shí)把資源彈出來。
第二個(gè)特點(diǎn),按需付費(fèi),我們用多少資源就花多少錢,不用為閑置資源來買單。
第三個(gè)就是簡化運(yùn)維,能夠幫用戶省去資源管理的煩惱。
我們可以更直觀來看 Serverless 的價(jià)值:首先最上層是業(yè)務(wù)邏輯,其次是對(duì)接的數(shù)據(jù)庫、存儲(chǔ)、微服務(wù)框架等,往下要建立監(jiān)控系統(tǒng)、日志系統(tǒng),以及容災(zāi)和高可用等,再到底層還要維護(hù)各種各樣的 IaaS 資源,如虛擬機(jī)集群。而 Serverless 幫用戶省掉的是資源層和可觀測(cè)層,平臺(tái)負(fù)責(zé)底層彈性資源,包括所有的日志監(jiān)控等,用戶就只需要關(guān)心業(yè)務(wù)邏輯。
Serverless 的軟件架構(gòu)
作為開發(fā)者,我們可以直接把鏡像或者代碼包部署到 Serverless 計(jì)算平臺(tái)上來,省去了整個(gè)資源的購買和環(huán)境部署這個(gè)過程。部署上來之后呢,后端可以跟存儲(chǔ)、數(shù)據(jù)庫進(jìn)行交互,構(gòu)成完整的 Serverless 架構(gòu)。之后通過像 LB 或者 HTT 的方式,直接去訪問到業(yè)務(wù)代碼,平臺(tái)會(huì)根據(jù)用戶的請(qǐng)求去做調(diào)度和彈性伸縮。Serverless 平臺(tái)支持負(fù)載均衡,應(yīng)對(duì)各種突發(fā)流量,用戶不用去關(guān)心后臺(tái)資源。
組件架構(gòu)有點(diǎn)復(fù)雜,本次不展開來講。對(duì)于開發(fā)者,需要關(guān)注的是綠色部分,即業(yè)務(wù)代碼和服務(wù)框架等,以及用什么樣的工具和后端 BaaS。Serverless 平臺(tái)會(huì)納管所有基礎(chǔ)設(shè)施,會(huì)做好消息緩存、流量調(diào)度、容災(zāi)、高可用等。
另一個(gè)非常重要的組件架構(gòu)是 Serverless 應(yīng)用引擎,它的本質(zhì)是把 K8S 做了封裝。如果企業(yè)有微服務(wù)業(yè)務(wù),并且需要部署到 K8S 集群,而維護(hù)挑戰(zhàn)比較大的話,就可以用這種形態(tài)。把開發(fā)好的微服務(wù),或者單體應(yīng)用直接托管到這個(gè)平臺(tái)上來,就能夠享受 Serverless 所帶來的彈性伸縮和按需付費(fèi)的價(jià)值。
Serverless 的落地實(shí)踐
Serverless 已有多個(gè)落地場(chǎng)景,在各個(gè)行業(yè),無論是后臺(tái)服務(wù),還是 REST API 都可以部署到 Serverless 平臺(tái)上。尤其是 Serverless 音視頻處理、輕量 ETL(低門檻數(shù)據(jù)分析/處理)、事件驅(qū)動(dòng)、任務(wù)跑批、應(yīng)用托管、微服務(wù)容器化等場(chǎng)景。
在 Serverless 平臺(tái)上有非常多的應(yīng)用 case,比如,如果想要做微服務(wù)或者容器化轉(zhuǎn)型,期望降低運(yùn)維復(fù)雜度的同時(shí),也能具備彈性伸縮、便捷發(fā)布的能力,就可以直接把服務(wù)部署到 Serverless 應(yīng)用引擎。
再分享一個(gè)案例,想必很多人都有看過歐洲杯,國內(nèi)是愛奇藝體育在做這個(gè)賽事直播,其背后的業(yè)務(wù)就是部署在 Serverless 應(yīng)用引擎平臺(tái)上。
對(duì)于愛奇藝體育團(tuán)隊(duì)來講,最大的痛點(diǎn)之一是資源的彈性。因?yàn)轶w育賽事的直播流量有非常大的不確定性,面對(duì)流量激增,需要及時(shí)能夠?qū)笈_(tái)服務(wù)進(jìn)行擴(kuò)容,如果按照峰值對(duì)資源進(jìn)行保有,又會(huì)造成流量預(yù)估不準(zhǔn)確的風(fēng)險(xiǎn),以及一定程度上的資源浪費(fèi)。
所以,Serverless 應(yīng)用引擎非常好地匹配了客戶痛點(diǎn)問題,不僅解決了彈性擴(kuò)縮的問題,也提升了資源利用率,同時(shí)配套的應(yīng)用監(jiān)控,也極大程度上提升了定位問題的效率。
Serverless 的未來暢想
大面積取代 Serverful,變?yōu)槟J(rèn)的計(jì)算范式:雖然 Serverful 不會(huì)完全消失,但隨著 Serverless 存在的不足被逐個(gè)攻克,Serverlsss 在云計(jì)算中所占的比重將會(huì)逐漸提升,變成云時(shí)代默認(rèn)的計(jì)算范式。
擁抱整個(gè)容器生態(tài):未來,Serverless 會(huì)更多的去擁抱整個(gè)容器生態(tài),當(dāng)下容器是整個(gè)業(yè)界的一個(gè)主流的趨勢(shì),Serverless 會(huì)和容器做更多的集成,比如鏡像部署、鏡像加速、以及集成 K8S 很多的能力。
加速運(yùn)維關(guān)系的變化:Serverless 將會(huì)加速運(yùn)維關(guān)系的轉(zhuǎn)變,運(yùn)維同學(xué)會(huì)從資源運(yùn)維,逐步走向業(yè)務(wù)運(yùn)維。
復(fù)雜任務(wù)編排、工具鏈及可觀測(cè)等能力提升:Serverless 會(huì)加強(qiáng)復(fù)雜任務(wù)編排、工具鏈和可觀測(cè)等方面的能力。因?yàn)?Serverless 平臺(tái)對(duì)底層資源做了高度封裝,所以一定要把很多的監(jiān)控指標(biāo)去透露給用戶,通過這些指標(biāo)來做業(yè)務(wù)級(jí)的管理和管控。
我們希望 Serverless 能夠真正給大家減負(fù),讓業(yè)務(wù)開發(fā)和維護(hù)變的更加簡單,給業(yè)務(wù)帶來更大的價(jià)值。
原文鏈接:https://developer.aliyun.com/article/857454?utm_content=g_1000319128