6 岁!是时候重新认识下 Serverless 了
來(lái)源 | Serverless 公眾號(hào)
背景
Serverless 概念從 2012 年開始提出,真正推出相關(guān)云產(chǎn)品是 2014 年 AWS 推出 Lambda。如果我們將 Serverless 比作一個(gè)嬰兒,那么它已經(jīng) 6 歲了。
雖然業(yè)界對(duì) Serverless 尚無(wú)一致認(rèn)可的定義,但是我相信大部分開發(fā)者在聽到 Serverless 時(shí),會(huì)聯(lián)想到 Lambda,并且冒出“函數(shù)”、“按需(調(diào)用次數(shù))收費(fèi)”、“事件驅(qū)動(dòng)”等關(guān)鍵詞。確實(shí)當(dāng)年剛剛誕生的 Serverless 就像下面可愛的“紫薯人”,紫色充滿神秘感(當(dāng)年剛推出的時(shí)候絕對(duì)是黑科技),讓人印象深刻。
剛剛出生的 Serverless
AWS 的巨大影響力以及本身攜帶的一身黑科技,確實(shí)讓人記住了 Serverless,但是也正因?yàn)檎Q生的時(shí)候太印象深刻,以至于現(xiàn)在提到已經(jīng) 6 歲的 Serverless,很多人的印象還是停留在Serverless=Lambda或者Serverless=FC(Function Compute),這不得不說(shuō)是某種遺憾。
現(xiàn)在的 Serverless
今天企業(yè)都在全面數(shù)字化轉(zhuǎn)型,整個(gè)技術(shù)架構(gòu)體系都渴望依托云原生來(lái)獲取巨大技術(shù)紅利,Serverless 從誕生的第一天起就是云原生的,所以我們有必要再系統(tǒng)地認(rèn)識(shí)一下 Serverless 的理念以及這些年誕生的相關(guān)產(chǎn)品,相信不管你是前端、后端、架構(gòu)師、SRE、CTO,都會(huì)有所收獲,并且在未來(lái)能更好地發(fā)揮 Serverless 的技術(shù)價(jià)值助力商業(yè)成功。
定義
業(yè)界一直在嘗試定義 Serverless,比如 CNCF 給出的定義是:NoOps 和 Pay as You Run,還有伯克利說(shuō) Serverless = FaaS + BaaS。但是我想說(shuō),Serverless 其實(shí)無(wú)需再去定義,他本身就已經(jīng)非常清晰明確:“Server + less”,他是一個(gè)理念,核心思想就是你不再需要關(guān)注 Server,作為對(duì)比的是 IaaS 時(shí)代,購(gòu)買服務(wù)器,安裝各種工具,再在上面開發(fā)自己的業(yè)務(wù)。
Server 不會(huì)消失,而是讓一般的開發(fā)者不需要再關(guān)注 Server,這意味著【智能彈性】、【快速交付】、【更低成本】,這也是 Serverless 相關(guān)產(chǎn)品的典型特性。
所以沒(méi)必要再去給 Serverless 做什么定義,他本身已經(jīng)描述得很清晰。我們拋開概念,看看在各個(gè)具體技術(shù)領(lǐng)域的產(chǎn)品,相信你會(huì)有更直觀的認(rèn)識(shí)。
PaaS 在 Serverless 時(shí)代的重生
PaaS 本身的概念挺大,廣義的說(shuō)它處于 IaaS 和 SaaS 之間,我們先從一個(gè)具體的產(chǎn)品說(shuō)起:GAE(Google App Engine)。2006 年 AWS 推出了 IaaS 的云計(jì)算,Google 認(rèn)為云計(jì)算不應(yīng)該是 IaaS 這樣的底層形態(tài),所以在 2008 年推出了自己的云計(jì)算代表產(chǎn)品 GAE(關(guān)于這里的發(fā)展緣由,可以參考張磊的這篇文章:容器十年 ,一部軟件交付編年史)。
初推出的 GAE,也像 Lambda,讓人眼前一亮,但是很快開發(fā)者就發(fā)現(xiàn)它的限制非常多,用今天的話說(shuō)就是典型的“我不要你覺(jué)得,我要我覺(jué)得”,最后的結(jié)果就是大家都紛紛回到了 IaaS 的懷抱。
到后來(lái)的 PaaS 產(chǎn)品比如 Cloud Foundry,這類 PaaS 產(chǎn)品相對(duì)更實(shí)際一些,底層 IaaS 還是云廠商提供,上層提供一套應(yīng)用管理生態(tài),背后的思想還是不希望開發(fā)者通過(guò) IaaS 這么底層的方式去使用云計(jì)算,而是從 PaaS 開始,不過(guò)它也不是 Serverless 化的,你還是要考慮服務(wù)器的維護(hù)、更新、擴(kuò)展和容量規(guī)劃等等。
SAE(Serverless App Engine)
到了現(xiàn)在,隨著容器技術(shù)的成熟,以及 Serverless 理念的進(jìn)一步發(fā)展,PaaS 和 Serverless 理念也開始融合,這樣的產(chǎn)品既有 PaaS 為代表的【快速交付】,又有 Serverless 的特點(diǎn)【智能彈性】、【更低成本】,典型的產(chǎn)品代表就是阿里云在 2019 年推出的產(chǎn)品:SAE(Serverless App Engine)。
**首先,它是一個(gè) PaaS,再具體一點(diǎn)說(shuō),是一個(gè)應(yīng)用 PaaS。**這意味著大部分開發(fā)者使用起來(lái)都會(huì)非常自然,因?yàn)槔锩娴母拍钅銜?huì)非常熟悉,比如應(yīng)用發(fā)布、重啟、灰度、環(huán)境變量、配置管理等等。
**同時(shí),它也是 Serverless 化的。**這意味著你不必再關(guān)心服務(wù)器,不用再申請(qǐng)機(jī)器,維護(hù)服務(wù)器,裝一堆工具,而是按需使用,按分鐘計(jì)費(fèi),結(jié)合強(qiáng)大的彈性能力(定時(shí)彈性、指標(biāo)彈性)實(shí)現(xiàn)極致成本。
最后,得益于 Docker 為代表的容器技術(shù)的發(fā)展,SAE 解決了經(jīng)典 PaaS 的突出問(wèn)題(各種限制和強(qiáng)綁定),依托于容器鏡像,在上面可以跑任意的語(yǔ)言的應(yīng)用。
看到這里,我相信大部分開發(fā)者對(duì)于 PaaS 和 Serverless 結(jié)合的產(chǎn)品已經(jīng)有了一個(gè)輪廓,在中國(guó)云原生用戶調(diào)研報(bào)告中(2020 年) ,這種形態(tài)的 Serverless 產(chǎn)品開始被越來(lái)越多的開發(fā)者采用。
在這個(gè)基礎(chǔ)上,還有另外一個(gè)話題值得再討論一下,那就是微服務(wù)和 Serverless。
微服務(wù)和 Serverless
現(xiàn)在業(yè)界關(guān)于微服務(wù)和 Serverless,會(huì)有部分這樣的認(rèn)知:認(rèn)為當(dāng)前云計(jì)算典型代表技術(shù)是微服務(wù),下一代的代表技術(shù)是 Serverless,這會(huì)讓你覺(jué)得 Serverless 比微服務(wù)要先進(jìn),甚至?xí)X(jué)得未來(lái)有了 Serverless 就沒(méi)有微服務(wù)了,類似下面這張圖:
個(gè)人認(rèn)為產(chǎn)生這一認(rèn)知還是因?yàn)閷?Serverless 的理念具象化到函數(shù)計(jì)算(FaaS)這樣的產(chǎn)品。現(xiàn)在我們聊到微服務(wù),會(huì)想到背后的技術(shù)框架,比如 Spring Cloud、Dubbo,但是其實(shí)微服務(wù)這個(gè)詞已經(jīng)遠(yuǎn)遠(yuǎn)超出了純技術(shù)框架的范疇,它背后也有核心的支撐思想,包括:
微服務(wù)雖然一定程度上增加了技術(shù)復(fù)雜度,但是在一定規(guī)模下它會(huì)降低系統(tǒng)復(fù)雜度和組織復(fù)雜度。
現(xiàn)代業(yè)務(wù)系統(tǒng)越來(lái)越復(fù)雜,很多業(yè)務(wù)系統(tǒng)會(huì)基于領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD),微服務(wù)其實(shí)是 DDD 背后的支撐技術(shù)。
單體、微服務(wù)和復(fù)雜度
所以如果到了 Serverless 時(shí)代就沒(méi)法用微服務(wù),我相信很多開發(fā)者會(huì)覺(jué)得不知所措,或者會(huì)“抵觸未來(lái)”,因?yàn)樗麄儠?huì)覺(jué)得有人給我描繪了一個(gè)未來(lái),但是完全不知道怎么走過(guò)去。
拋開各種具體的技術(shù)實(shí)現(xiàn),回到背后的理念,Serverless 代表的是一種無(wú)需關(guān)注服務(wù)器,降低使用云計(jì)算服務(wù)的理念,所以它和微服務(wù)其實(shí)不沖突,完全可以共存。在阿里云的 SAE 中,集成了微服務(wù)的能力(依托于阿里云產(chǎn)品 MSE),這意味著:
部署在 SAE 這類 Serverless 平臺(tái)上的應(yīng)用,完全可以繼續(xù)使用微服務(wù)開發(fā),不需要經(jīng)過(guò)任何改造。
在 SAE 上甚至提供了很多微服務(wù)能力增強(qiáng),包括了注冊(cè)中心托管、服務(wù)治理等等,進(jìn)一步降低開發(fā)者使用微服務(wù)的門檻和負(fù)擔(dān)。
所以在 Serverless 類的 PaaS 產(chǎn)品上,Serverless 和微服務(wù)不再是對(duì)立的,開發(fā)者完全可以繼續(xù)使用微服務(wù)技術(shù)開發(fā),同時(shí)也可以享受 Serverless 理念所帶來(lái)的【智能彈性】、【更低成本】等。
函數(shù)計(jì)算 FC
講完 Serverless Application(應(yīng)用),我們?cè)賮?lái)看看 Serverless Function(函數(shù)),FC 作為”根正苗紅“的 Serverless 產(chǎn)品,相信大家都對(duì)它不陌生,經(jīng)過(guò)這么些年的發(fā)展,它已經(jīng)在前端 Serverless、多媒體處理、AI、事件類的場(chǎng)景(云產(chǎn)品事件、數(shù)據(jù)庫(kù)變更事件等等)、物聯(lián)網(wǎng)消息等場(chǎng)景得到了很好地應(yīng)用,甚至也有越來(lái)越多的公司將業(yè)務(wù)完全構(gòu)建在 FC 之上,比如:世紀(jì)聯(lián)華的 Serverless 實(shí)踐。
另外針對(duì)早期的很多技術(shù)限制,現(xiàn)在也已經(jīng)有了解決方案:
早期大多數(shù)的函數(shù)計(jì)算產(chǎn)品都對(duì)磁盤大小、代碼包大小、運(yùn)行時(shí)長(zhǎng)、內(nèi)存規(guī)格等有限制,阿里云函數(shù)計(jì)算推出了性能實(shí)例基本解決了這些限制。
針對(duì)冷啟動(dòng)問(wèn)題,可以使用預(yù)留性能實(shí)例解決。
下面我們就具體介紹部分使用 FC 的典型的場(chǎng)景。
前端 Serverless
前端經(jīng)過(guò)了 Ajax、Nodejs、React 等技術(shù)迭代后,已經(jīng)形成了相對(duì)成熟的技術(shù)體系,特別是 Nodejs,使前端和服務(wù)端產(chǎn)生了聯(lián)系。
前端和后端的分工發(fā)揮了各個(gè)的優(yōu)點(diǎn),但是在協(xié)作的過(guò)程中也一直存在一個(gè)問(wèn)題,后端同學(xué)通常是面向領(lǐng)域和服務(wù)提供接口,但是前端是面向用戶具體的數(shù)據(jù)接口,有時(shí)候一個(gè)簡(jiǎn)單的需求會(huì)因?yàn)閮蛇叺亩x和聯(lián)調(diào)搞半天。所以也誕生了 BFF(Backends For Frontends)這樣一層,誰(shuí)使用誰(shuí)開發(fā),專門解決領(lǐng)域模型 - UI 模型的轉(zhuǎn)換。
理想很美好,現(xiàn)實(shí)也很骨感,如果前端同學(xué)去做 BFF 這一層,發(fā)現(xiàn)要學(xué)習(xí)后端的 DevOps、高可用、容量規(guī)劃等等,這些其實(shí)是前端同學(xué)不想關(guān)心的,這種訴求在 Serverless 時(shí)代得到了很好地解決,由 BFF 變?yōu)榱?SFF(Serverless For Frontend),讓前端同學(xué)只要寫幾個(gè) Function,其他都交給 Serverless 平臺(tái)。
類似的還有服務(wù)端渲染 SSR(Server Side Rendering),本來(lái)前后端分工后,后端只需要寫接口,前端負(fù)責(zé)渲染,但是在 SEO 友好以及快速首屏渲染等需求背景下,有時(shí)候會(huì)用到服務(wù)端渲染的方案,同樣,使用 Serverless 前端同學(xué)又可以愉快地玩耍了。
其實(shí)現(xiàn)在很多偏前端產(chǎn)品里面(比如各類小程序以及語(yǔ)雀等產(chǎn)品),前端同學(xué)會(huì)全棧完成整體開發(fā),越來(lái)越多地會(huì)用到 Serverless 相關(guān)技術(shù)。
當(dāng)然,要用好 Serverless,需要完整的生態(tài),包括相關(guān)的框架、運(yùn)行時(shí)、工具鏈、配置規(guī)范等等,這方面可以參考阿里 Midway。
多媒體處理
現(xiàn)在在線教育、直播、短視頻等行業(yè)都蓬勃發(fā)展,也催生了很多視頻需求,包括視頻的處理,例如視頻剪輯、切分、組合、轉(zhuǎn)碼、分辨率調(diào)整、客戶端適配等等,典型場(chǎng)景的比如:
-
每周五定期產(chǎn)生幾百個(gè) 4G 以上的 1080P 大視頻, 但是希望當(dāng)天幾個(gè)小時(shí)后全部處理完;
-
甚至您有更高級(jí)的自定義處理需求,比如視頻轉(zhuǎn)碼完成后,需要記錄轉(zhuǎn)碼詳情到數(shù)據(jù)庫(kù),或者在轉(zhuǎn)碼完成后,自動(dòng)將熱度很高的視頻預(yù)熱到 CDN 上,從而緩解源站壓力。
這些訴求在 Serverfull 的場(chǎng)景下,你可能需要搭建一套復(fù)雜的系統(tǒng)來(lái)支撐,但是如果使用 FC,那么你會(huì)發(fā)現(xiàn)一切都變得那么簡(jiǎn)單。
AI Serverless
AI Model Serving 是函數(shù)計(jì)算一個(gè)比較典型的應(yīng)用場(chǎng)景。數(shù)據(jù)科學(xué)家訓(xùn)練好模型以后往往需要找軟件工程師把模型變成系統(tǒng)或者服務(wù),通常把這個(gè)過(guò)程稱之為 Model Serving。函數(shù)計(jì)算無(wú)需運(yùn)維和彈性伸縮的特性,正好符合數(shù)據(jù)科學(xué)家對(duì)高可用分布式系統(tǒng)的訴求。
Serverless 容器 - ASK
Kubernetes 作為生產(chǎn)級(jí)別的容器編排系統(tǒng),現(xiàn)在已經(jīng)成為了容器編排的事實(shí)標(biāo)準(zhǔn),被廣泛用于自動(dòng)部署,擴(kuò)展和管理容器化應(yīng)用。它也有相應(yīng)的 Serverless Kubernetes 產(chǎn)品,比如阿里云的 ASK、AWS Fargate 等。在這類產(chǎn)品中,你無(wú)需購(gòu)買節(jié)點(diǎn)即可直接部署容器應(yīng)用,無(wú)需對(duì)集群進(jìn)行節(jié)點(diǎn)維護(hù)和容量規(guī)劃,并且根據(jù)應(yīng)用配置的 CPU 和內(nèi)存資源量進(jìn)行按需付費(fèi)。ASK 集群提供完善的 Kubernetes 兼容能力,同時(shí)降低了 Kubernetes 使用門檻,讓您更專注于應(yīng)用程序,而不是管理底層基礎(chǔ)設(shè)施。
如果您是 K8S 的重度用戶,那么使用 Serverless Kubernetes 是一個(gè)不錯(cuò)的選擇,典型客戶場(chǎng)景包括:
- 微博:在 30s 之內(nèi)可以極速擴(kuò)容 500 個(gè)應(yīng)用實(shí)例,應(yīng)對(duì)跨年活動(dòng)和熱點(diǎn)事件;
- 曠視科技:基于 ASK 開發(fā)智能、免運(yùn)維的 AI 應(yīng)用平臺(tái);
- 趣頭條:基于 ASK 構(gòu)建 Serverless 大數(shù)據(jù)計(jì)算平臺(tái)。
BaaS
上面提到的都是“計(jì)算類” Serverless 產(chǎn)品,FC、SAE、ASK 等,但是我們都知道,開發(fā)過(guò)程中不可能只有計(jì)算邏輯,還有很多其他依賴,比如存儲(chǔ)、中間件等。**BaaS(Backend-as-a-Service,后端即服務(wù))**類產(chǎn)品,提供基于 API 的服務(wù),這些 API 一般都是按需使用、免運(yùn)維、自動(dòng)擴(kuò)縮容的,所以他們也是 Serverless 的。
典型的比如阿里云的 OSS,具有與平臺(tái)無(wú)關(guān)的 RESTful API 接口,可以在任何應(yīng)用、任何時(shí)間、任何地點(diǎn)存儲(chǔ)和訪問(wèn)任意類型的數(shù)據(jù)。
值得一提還有開發(fā)企業(yè)級(jí)應(yīng)用時(shí)大家非常熟悉的中間件,以阿里為例當(dāng)前也在進(jìn)行 4.0 技術(shù)架構(gòu)升級(jí),全面 BaaS 化,統(tǒng)一運(yùn)維、交付、計(jì)費(fèi)、支持模式,開箱即用,產(chǎn)品化程度持續(xù)提升。
總結(jié)
總結(jié)一下,上面提到的一系列 Serverless 的產(chǎn)品,覆蓋了前端、后端、容器、BaaS 各個(gè)領(lǐng)域,包括很多上面沒(méi)有提到的(比如 CDN)其實(shí)也算是 Serverless 的產(chǎn)品,所以我不認(rèn)同伯克利的 Serverless = BaaS + FaaS 的觀點(diǎn),但是我非常認(rèn)可他的另一個(gè)觀點(diǎn):“Serverless will dominate cloud computing”。
Serverless 首先是一個(gè)理念,不是某一種具體的技術(shù),當(dāng)未來(lái)某一天,99% 的云產(chǎn)品都有 Serverless 化的形態(tài)時(shí),云計(jì)算也就 Serverless 化了,這種變化我認(rèn)為不是非黑即白的,不是推翻重來(lái)這種革命性的,而是全面地降低用戶使用云的成本,全面地提升開發(fā)者的研發(fā)效率。
作者簡(jiǎn)介:陳濤,10 年軟件開發(fā)經(jīng)驗(yàn),4 年創(chuàng)業(yè)經(jīng)歷,曾在淘寶、滴滴任職,關(guān)注云原生、微服務(wù)、Serverless 等技術(shù)領(lǐng)域,積累了在云計(jì)算、電商、從 0 到 1 創(chuàng)業(yè)等方面的研發(fā)、管理和業(yè)務(wù)經(jīng)驗(yàn)。目前就職阿里云,在云原生應(yīng)用平臺(tái)從事 Serverless 應(yīng)用引擎(SAE)的設(shè)計(jì)和研發(fā)。
總結(jié)
以上是生活随笔為你收集整理的6 岁!是时候重新认识下 Serverless 了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Forrester 最新报告:阿里云稳居
- 下一篇: 阿里云 OAM 入选「2020中国技术力