Serverless 的初心、現(xiàn)狀和未來
導(dǎo)讀:Serverless 是如何產(chǎn)生的?當(dāng)前有哪些落地場景?Serverless 的未來又將如何?本文分享了阿里云高級技術(shù)專家不瞋對于 Serverless 的看法,回顧其發(fā)展歷程,并對 Serverless 的發(fā)展趨勢做出預(yù)測。
源起
回望整個計算機技術(shù)發(fā)展史,我們會發(fā)現(xiàn) “抽象、解耦、集成” 的主題貫穿其中。產(chǎn)業(yè)每一次的抽象、解耦、集成,都將創(chuàng)新推向新的高度,也催生出龐大的市場和新的商業(yè)模式。
大型機時代,硬件和軟件都是定制化的,使用專有的硬件、操作系統(tǒng)和應(yīng)用軟件。
PC 時代,硬件被抽象解耦成 CPU、內(nèi)存、硬盤、主板、USB 設(shè)備等標(biāo)準(zhǔn)化的部件,不同廠商生產(chǎn)的部件可以自由組合,組裝成整機。軟件被抽象解耦為操作系統(tǒng)、庫等可復(fù)用組件。硬件和軟件的抽象解耦,創(chuàng)造了新的商業(yè)模式,釋放了生產(chǎn)力,造就了 PC 時代的繁榮。
云的時代,硬件軟件化和軟件服務(wù)化成為最顯著的兩個趨勢。
- 硬件軟件化的核心在于硬件功能中越來越多的部分由軟件來呈現(xiàn),從而在迭代效率、成本等方面獲得顯著優(yōu)勢。以軟件定義存儲(Software Defined Storage,SDS)為例,SDS 是位于物理存儲和數(shù)據(jù)請求之間的一個軟件層,允許用戶操控數(shù)據(jù)的存儲方式和存儲位置。通過硬件與軟件解耦,SDS 可運行于行業(yè)標(biāo)準(zhǔn)系統(tǒng)或者 X86 系統(tǒng)上,意味著用戶可以無差別的使用任何標(biāo)準(zhǔn)的商用服務(wù)器來滿足不斷增長的存儲需求。硬件與軟件解耦也讓 SDS 能夠橫向擴展,消除容量規(guī)劃,成本管理等方面的復(fù)雜性。
- 云時代的另一趨勢是軟件服務(wù)化。應(yīng)用軟件的功能通過網(wǎng)絡(luò)以遠(yuǎn)程調(diào)用的模式被海量用戶使用。服務(wù)成為應(yīng)用構(gòu)建的基礎(chǔ),API 被實現(xiàn)為服務(wù)提供給開發(fā)者,微服務(wù)架構(gòu)獲得廣泛的成功。服務(wù)也成為云產(chǎn)品的基本形態(tài)。過去 10 年,云已經(jīng)證明了它的成功。用戶只需要通過調(diào)用 API 就能獲取服務(wù)器,而無需自己建設(shè)數(shù)據(jù)中心。算力以前所未有簡潔的方式提供給用戶。
還記得 Google 那篇著名的 “Datacenter as a computer “ 論文嗎?如果我們把云看作是 DT 時代的計算機,那么一個很自然的問題是:隨著云的 API(全托管服務(wù))越來越豐富,什么才是適合于云的編程模型?我們應(yīng)當(dāng)以何種 “抽象、解耦、集成” 的方式構(gòu)建基于云的應(yīng)用?
在回答上述問題之前,讓我們首先將目光轉(zhuǎn)向 SaaS 領(lǐng)域。Salesforce 是 SaaS 領(lǐng)域的明星企業(yè),在平臺化能力建設(shè)方面的布局為我們提供了一個絕佳的案例。早期的 SaaS 產(chǎn)品采用標(biāo)準(zhǔn)化的交付模式,通過開放 API 接口實現(xiàn)被集成的能力。隨著 Salesforce 產(chǎn)品越來越豐富,客戶規(guī)模日益增長,企業(yè)開始面臨新的挑戰(zhàn):
- 如何更快地推出新產(chǎn)品,加強產(chǎn)品間的整合和協(xié)同?
- 客戶迅速增長,需求多樣。如何高效地滿足客戶的定制化需求,增加客戶粘性?
- 如何提高產(chǎn)品被集成的能力,更好的銜接上下游資源?
- 當(dāng)產(chǎn)品能力和 API 完整度到達(dá)一定水準(zhǔn)后,如何讓開發(fā)者快速整合 API,圍繞 Salesforce 能力便捷地開發(fā)應(yīng)用?
- 如何設(shè)計好的商業(yè)模式,讓客戶、企業(yè)和開發(fā)者共贏?
Salesforce 的策略是讓整個業(yè)務(wù)、技術(shù)和組織平臺化。平臺放大了企業(yè)的價值,讓企業(yè)、客戶、開發(fā)者三方受益。通過不斷提升平臺的應(yīng)用交付能力,對內(nèi)大幅提高產(chǎn)品的研發(fā)效率,加強產(chǎn)品的集成和整合;對外則大幅提高了產(chǎn)品的被集成能力,建立開發(fā)者生態(tài)。
從 2006 年開始,Salesforce 在平臺化能力建設(shè)上大力投資,推出了 Apex,Visualforce 等編程語言,允許客戶、合作伙伴和開發(fā)者在多租戶環(huán)境下編寫和運行自定義的邏輯代碼。在此基礎(chǔ)上,2008 年推出自研 Force.com PaaS 平臺,客戶能夠在該平臺上圍繞 Salesforce 的能力構(gòu)建自己的應(yīng)用程序。2010 年收購了流行的 PaaS 服務(wù)商 Heroku,2019 年推出 Serverless 計算平臺 Evergreen,進一步加強應(yīng)用構(gòu)建和集成與被集成能力。除了應(yīng)用的構(gòu)建能力,Salesforce 近幾年來也在應(yīng)用的移動化、數(shù)據(jù)化和智能化方面進行了大量的投資,延伸平臺在相關(guān)領(lǐng)域的能力,幫助客戶實現(xiàn)管理流程的數(shù)據(jù)化和智能化,并通過數(shù)據(jù)分析和交易撮合為客戶帶來增量業(yè)務(wù)。
總結(jié) Salesforce 的發(fā)展歷程,我們可以得出一些觀點:
- API 已成為價值交付最重要的形式;
- 把 API 作為價值交付形式的產(chǎn)品或組織,當(dāng) API 豐富度和能力完整度達(dá)到一定水準(zhǔn)后,會升級為平臺,通過平臺突破能力瓶頸,實現(xiàn)業(yè)務(wù)、產(chǎn)品和技術(shù)新的進化;
- 平臺能力高低體現(xiàn)在其編程模型上,即是否能幫助用戶高效、低成本的構(gòu)建新一代應(yīng)用;
- 平臺除了大幅提升企業(yè)價值交付的能力,更重要的是建立起應(yīng)用開發(fā)生態(tài)。
雖然云遠(yuǎn)比上述 SaaS 案例復(fù)雜,但遵循著類似的發(fā)展邏輯。幾乎所有云服務(wù)的產(chǎn)品功能都通過 API 體現(xiàn),云服務(wù)商也把發(fā)展平臺編程模型,提升用戶價值交付能力和建立應(yīng)用開發(fā)生態(tài)作為最重要的目標(biāo)。當(dāng)我們從編程模型的視角去審視云的產(chǎn)品體系,紛繁復(fù)雜的云服務(wù)各自的定位逐漸清晰。
基礎(chǔ)設(shè)施即服務(wù)(IaaS)和容器技術(shù)是云的基礎(chǔ)設(shè)施,以 K8S 為代表的容器編排服務(wù)是云原生應(yīng)用的操作系統(tǒng),面向特定領(lǐng)域的后端服務(wù)(BaaS)則是云的 API。為了實現(xiàn)更高的生產(chǎn)力,在存儲、數(shù)據(jù)庫、中間件、大數(shù)據(jù)、AI 等領(lǐng)域,大量的 BaaS 服務(wù)是全托管、Serverless 的形態(tài),這一趨勢已持續(xù)多年。例如現(xiàn)在客戶已經(jīng)非常習(xí)慣使用 Serverless 化的對象存儲,而不是自己基于服務(wù)器搭建數(shù)據(jù)存儲系統(tǒng)。當(dāng)云提供了豐富的 Serverless BaaS 服務(wù)后,需要一種新的通用計算服務(wù),能夠屏蔽基礎(chǔ)設(shè)施的復(fù)雜度,基于云服務(wù)快速構(gòu)建應(yīng)用。因此 Serverless 計算應(yīng)運而生,它包含了以下要素:
- Serverless 計算是全托管的計算服務(wù),客戶編寫代碼構(gòu)建應(yīng)用,無需管理和運維服務(wù)器等底層基礎(chǔ)設(shè)施;
- Serverless 計算是通用、普適的,結(jié)合云 API(BaaS 服務(wù))的能力,能夠支撐云上所有重要類型的應(yīng)用;
- Serverless 計算不但實現(xiàn)了最純粹的按需付費(為代碼實際運行消耗的資源付費),也應(yīng)當(dāng)支持預(yù)付費等計量模式,使得客戶成本在各種場景下,與傳統(tǒng)方式相比都極具競爭力;
不同于虛擬機或容器等面向資源的計算平臺,Serverless 計算是面向應(yīng)用的。要能整合和聯(lián)動云的產(chǎn)品體系及其生態(tài),幫助用戶在價值交付方式上實現(xiàn)顛覆式創(chuàng)新。
現(xiàn)狀:當(dāng)下 Serverless 在哪些場景落地?
隨著用戶心智的建立,產(chǎn)品本身能力的完善,Serverless 近年來呈加速發(fā)展的趨勢。我們看到在很多場景下,用戶使用 Serverless 架構(gòu)在可靠性、成本和研發(fā)運維效率等方面獲得顯著的收益。
1. 小程序 / Web / Mobile / API 后端服務(wù)
在小程序、Web/Moible 應(yīng)用、API 服務(wù)等場景中,業(yè)務(wù)邏輯復(fù)雜多變,迭代上線速度要求高,而且這類在線應(yīng)用,資源利用率通常小于 30%,尤其是小程序等長尾應(yīng)用,資源利用率更是低于 10%。Serverless 計算的免運維,按需付費的特點非常適合構(gòu)建小程序/Web/Mobile/API 后端系統(tǒng),通過預(yù)留計算資源+實時自動伸縮,開發(fā)者能夠快速構(gòu)建延時穩(wěn)定、能承載高頻訪問的在線應(yīng)用。在阿里內(nèi)部,使用 Serverless 構(gòu)建后端服務(wù)是落地最多的場景,包括前端全棧領(lǐng)域的 Serverless For Frontends,機器學(xué)習(xí)算法服務(wù),小程序平臺實現(xiàn)等等。
2. 大規(guī)模批處理任務(wù)處理
典型的離線任務(wù)批處理系統(tǒng),例如大規(guī)模音視頻文件轉(zhuǎn)碼服務(wù),包含計算資源管理、任務(wù)優(yōu)先級調(diào)度、任務(wù)編排、任務(wù)可靠執(zhí)行、任務(wù)數(shù)據(jù)可視化等一系列功能。如果從機器或者容器層次開始構(gòu)建,用戶通常使用消息隊列進行任務(wù)信息的持久化和計算資源的分配,使用 K8S 等容器編排系統(tǒng)實現(xiàn)資源的伸縮和容錯,自行搭建或集成監(jiān)控報警系統(tǒng)。如果任務(wù)涉及多個步驟,還需要整合工作流服務(wù)實現(xiàn)可靠步驟執(zhí)行,而通過 Serverless 計算平臺,用戶只需要專注于實現(xiàn)任務(wù)處理邏輯,而且 Serverless 計算的極致彈性能很好的滿足突發(fā)任務(wù)對算力的需求。
3. 基于事件驅(qū)動架構(gòu)的在線應(yīng)用和離線數(shù)據(jù)處理
典型的 Serverless 計算服務(wù)通過事件驅(qū)動的方式廣泛的與云端各種類型服務(wù)集成,用戶無需管理服務(wù)器等基礎(chǔ)設(shè)施和編寫集成多個服務(wù)的膠水代碼,輕松構(gòu)建松耦合、分布式的事件驅(qū)動架構(gòu)的應(yīng)用。
以阿里云函數(shù)計算為例,通過 API 網(wǎng)關(guān)和函數(shù)計算的集成,用戶可以快速實現(xiàn) API 后端服務(wù)。通過對象存儲和函數(shù)計算的事件集成,函數(shù)能實時響應(yīng)對象創(chuàng)建、刪除等事件,實現(xiàn)以對象存儲為中心的大規(guī)模數(shù)據(jù)處理。通過消息中間件和函數(shù)計算的事件集成,用戶能快速實現(xiàn)海量消息的處理。通過和阿里云 EventBridge 的集成,無論是一方云服務(wù),還是三方的 SaaS 服務(wù),或者是用戶自建的系統(tǒng),所有的事件都可以快速便捷的被函數(shù)計算處理。
4. 運維自動化
通過定時觸發(fā)器,用戶能夠用函數(shù)快速實現(xiàn)定時任務(wù),而無須管理執(zhí)行任務(wù)的底層服務(wù)器。通過云監(jiān)控觸發(fā)器,用戶可以接收 ECS 重啟/宕機,OSS 對象存儲流控等 IaaS 層服務(wù)的運維事件,并自動觸發(fā)函數(shù)處理。
未來:Serverless 將向何處去?
近年來,Serverless 一直在高速發(fā)展,呈現(xiàn)出越來越大的影響力。主流的云服務(wù)商也在不斷地豐富云產(chǎn)品體系,提供更好的開發(fā)工具,更高效的應(yīng)用交付流水線,更好的可觀測性,更細(xì)膩的產(chǎn)品間集成,但一切才剛剛開始。
趨勢 1:Serverless 將無處不在
任何足夠復(fù)雜的技術(shù)方案將被實現(xiàn)為全托管、Serverless 化的后端服務(wù)。不只是云產(chǎn)品,也包括合作伙伴和三方服務(wù)。云及其生態(tài)的能力將通過 API + Serverless 來體現(xiàn)。事實上,對于任何以 API 作為功能透出方式的平臺型產(chǎn)品或組織,例如釘釘、微信、滴滴等等,Serverless 都將是其平臺戰(zhàn)略中最重要的部分。
趨勢 2:和容器生態(tài)將更加緊密融合
容器在應(yīng)用的可移植性和交付流程敏捷性上實現(xiàn)了顛覆式創(chuàng)新,是現(xiàn)代應(yīng)用構(gòu)建和交付的一次重要變革。
絕佳的可移植性:通過操作系統(tǒng)虛擬化技術(shù),應(yīng)用及其運行環(huán)境被虛擬化為容器,實現(xiàn)了 build once,run anywhere,容器化的應(yīng)用能夠無差別的運行在開發(fā)機,on-premise,以及公有云的環(huán)境中;
敏捷的交付流程:容器鏡像已經(jīng)成為應(yīng)用封裝和分發(fā)事實上的標(biāo)準(zhǔn),今天全世界的開發(fā)人員都習(xí)慣將容器作為應(yīng)用交付和分發(fā)的方式,圍繞容器,已經(jīng)建立了完整的應(yīng)用交付工具鏈。
容器已經(jīng)成為現(xiàn)代應(yīng)用運行的基礎(chǔ),但用戶仍然需要負(fù)責(zé)服務(wù)器等基礎(chǔ)設(shè)施的管理,包括水位預(yù)估、機器運維等等。因此業(yè)界出現(xiàn)了 AWS Fargate,阿里云 ECI 等 Serverless container 服務(wù),幫助用戶專注于容器化應(yīng)用的構(gòu)建,而無需負(fù)擔(dān)基礎(chǔ)設(shè)施的管理成本。從 Serverless 視角來看,函數(shù)計算等 Serverless 計算服務(wù)為用戶帶來了全自動的伸縮模式、極致彈性以及完全按需的計量方式,卻在用戶開發(fā)習(xí)慣的兼容性、可移植性、完工具鏈和生態(tài)等方面面臨挑戰(zhàn),而這正是容器的優(yōu)勢。相信隨著技術(shù)的發(fā)展,未來容器鏡像也將成為函數(shù)計算等更多 Serverless 應(yīng)用的分發(fā)方式,容器龐大的工具生態(tài)和 Serverless 免運維、極致彈性結(jié)合在一起,為用戶帶來全新的體驗。
趨勢 3:Serverless 將通過事件驅(qū)動的方式連接云及其生態(tài)中的一切
我們已經(jīng)在前述章節(jié)中討論了函數(shù)計算通過事件驅(qū)動和云服務(wù)連接的意義,這樣的能力也會擴展到整個云的生態(tài)。無論是用戶自己的應(yīng)用,還是合作伙伴的服務(wù);無論是 on-premise 環(huán)境,還是公有云,所有的事件都能以 Serverless 的方式處理。云服務(wù)及其生態(tài)將更緊密的連接在一些,成為用戶構(gòu)建彈性高可用的應(yīng)用的基石。
趨勢 4:Serverless 計算將持續(xù)提高計算密度,實現(xiàn)最佳的性能功耗比和性能價格比
虛擬機和容器是兩種取向不同的虛擬化技術(shù)。前者安全性強,開銷小,后者則相反。Serverless 計算平臺一方面要求最高的安全性和最小的資源開銷,魚與熊掌必須兼得;另一方面要保持對原有程序執(zhí)行方式的兼容,比如支持任意二進制文件,這使得適用于特定語言 VM 的方案不可行。因此 AWS Firecracker,Google gVisor 這樣新的輕量虛擬化技術(shù)應(yīng)運而生。以 AWS Firecracker 為例,通過對設(shè)備模型的裁剪和 kernel 加載流程的優(yōu)化,實現(xiàn)了百毫秒的啟動速度和極小的內(nèi)存開銷。一臺裸金屬實例支持?jǐn)?shù)以千計的實例運行。結(jié)合應(yīng)用負(fù)載感知的資源調(diào)度算法,云服務(wù)商有望在保持穩(wěn)定性能的前提下,將超賣率提升一個數(shù)量級。
當(dāng) Serverless 計算的規(guī)模和影響力變得越來越大,從應(yīng)用框架、語言、硬件等層面,根據(jù) Serverless 的負(fù)載特點進行端對端優(yōu)化就變得非常有意義。新的 Java 虛擬機技術(shù)大幅提高 Java 應(yīng)用的啟動速度,非易失性內(nèi)存幫助實例更快被喚醒,CPU 硬件和操作系統(tǒng)協(xié)作對高密環(huán)境下性能擾動實現(xiàn)精細(xì)隔離,所有新技術(shù)正在創(chuàng)造嶄新的計算環(huán)境。
實現(xiàn)最佳性能功耗比和性能價格比的另一個重要方向是支持異構(gòu)硬件。長期以來,X86 處理器的性能越來越難以提升。而在 AI 等對算力要求極高的場景,GPU、FPGA、TPU(Tensor Processing Units) 等架構(gòu)的處理器的計算效率更具優(yōu)勢。隨著異構(gòu)硬件虛擬化、資源池化、異構(gòu)資源調(diào)度、應(yīng)用框架支持的成熟,異構(gòu)硬件的算力也能通過 Serverless 的方式釋放,大幅降低用戶使用門檻。
后記
2009 年,UC Berkeley 發(fā)表了一篇著名的論文“Above the Clouds: A Berkeley View of Cloud Computing”,討論了云及其價值、挑戰(zhàn)和演進路徑,其中的真知灼見在云的十年發(fā)展歷程中陸續(xù)被驗證,今天已沒有人懷疑云的價值和對各行各業(yè)深刻的影響。2019 年,他們發(fā)表了新的論文,“Cloud Programming Simplified: A Berkeley View on Serverless Computing”,預(yù)言 Serverless 將主導(dǎo)下一個十年云的發(fā)展,產(chǎn)業(yè)的發(fā)展是螺旋式上升,Serverless 的誕生和興起邏輯早已蘊含其中。相信下一個十年, Serverless 將重塑企業(yè)創(chuàng)新的方式,幫助云成為社會發(fā)展的強大動力。