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