Serverless 的初心、現狀和將來

6.23.jpg

做者 | 不瞋前端

導讀:Serverless 是如何產生的?當前有哪些落地場景?Serverless 的將來又將如何?本文分享了阿里雲高級技術專家不瞋對於 Serverless 的見解,回顧其發展歷程,並對 Serverless 的發展趨勢作出預測。算法

源起

回望整個計算機技術發展史,咱們會發現 「抽象、解耦、集成」 的主題貫穿其中。產業每一次的抽象、解耦、集成,都將創新推向新的高度,也催生出龐大的市場和新的商業模式。數據庫

大型機時代,硬件和軟件都是定製化的,使用專有的硬件、操做系統和應用軟件。編程

PC 時代,硬件被抽象解耦成 CPU、內存、硬盤、主板、USB 設備等標準化的部件,不一樣廠商生產的部件能夠自由組合,組裝成整機。軟件被抽象解耦爲操做系統、庫等可複用組件。硬件和軟件的抽象解耦,創造了新的商業模式,釋放了生產力,造就了 PC 時代的繁榮。小程序

雲的時代,硬件軟件化和軟件服務化成爲最顯著的兩個趨勢。後端

硬件軟件化的核心在於硬件功能中愈來愈多的部分由軟件來呈現,從而在迭代效率、成本等方面得到顯著優點。以軟件定義存儲(Software Defined Storage,SDS)爲例,SDS 是位於物理存儲和數據請求之間的一個軟件層,容許用戶操控數據的存儲方式和存儲位置。經過硬件與軟件解耦,SDS 可運行於行業標準系統或者 X86 系統上,意味着用戶能夠無差異的使用任何標準的商用服務器來知足不斷增加的存儲需求。硬件與軟件解耦也讓 SDS 可以橫向擴展,消除容量規劃,成本管理等方面的複雜性。安全

雲時代的另外一趨勢是軟件服務化。應用軟件的功能經過網絡以遠程調用的模式被海量用戶使用。服務成爲應用構建的基礎,API 被實現爲服務提供給開發者,微服務架構得到普遍的成功。服務也成爲雲產品的基本形態。過去 10 年,雲已經證實了它的成功。用戶只須要經過調用 API 就能獲取服務器,而無需本身建設數據中心。算力之前所未有簡潔的方式提供給用戶。服務器

還記得 Google 那篇著名的 「Datacenter as a computer」 論文嗎?若是咱們把雲看做是 DT 時代的計算機,那麼一個很天然的問題是:隨着雲的 API(全託管服務)愈來愈豐富,什麼纔是適合於雲的編程模型?咱們應當以何種 「抽象、解耦、集成」 的方式構建基於雲的應用?微信

1.png

在回答上述問題以前,讓咱們首先將目光轉向 SaaS 領域。Salesforce 是 SaaS 領域的明星企業,在平臺化能力建設方面的佈局爲咱們提供了一個絕佳的案例。早期的 SaaS 產品採用標準化的交付模式,經過開放 API 接口實現被集成的能力。隨着 Salesforce 產品愈來愈豐富,客戶規模日益增加,企業開始面臨新的挑戰:網絡

  • 如何更快地推出新產品,增強產品間的整合和協同?
  • 客戶迅速增加,需求多樣。如何高效地知足客戶的定製化需求,增長客戶粘性?
  • 如何提升產品被集成的能力,更好的銜接上下游資源?
  • 當產品能力和 API 完整度到達必定水準後,如何讓開發者快速整合 API,圍繞 Salesforce 能力便捷地開發應用?
  • 如何設計好的商業模式,讓客戶、企業和開發者雙贏?

Salesforce 的策略是讓整個業務、技術和組織平臺化。平臺放大了企業的價值,讓企業、客戶、開發者三方受益。經過不斷提高平臺的應用交付能力,對內大幅提升產品的研發效率,增強產品的集成和整合;對外則大幅提升了產品的被集成能力,創建開發者生態。

從 2006 年開始,Salesforce 在平臺化能力建設上大力投資,推出了 Apex,Visualforce 等編程語言,容許客戶、合做夥伴和開發者在多租戶環境下編寫和運行自定義的邏輯代碼。在此基礎上,2008 年推出自研 Force.com PaaS 平臺,客戶可以在該平臺上圍繞 Salesforce 的能力構建本身的應用程序。2010 年收購了流行的 PaaS 服務商 Heroku,2019 年推出 Serverless 計算平臺 Evergreen,進一步增強應用構建和集成與被集成能力。除了應用的構建能力,Salesforce 近幾年來也在應用的移動化、數據化和智能化方面進行了大量的投資,延伸平臺在相關領域的能力,幫助客戶實現管理流程的數據化和智能化,並經過數據分析和交易撮合爲客戶帶來增量業務。

總結 Salesforce 的發展歷程,咱們能夠得出一些觀點:

  • API 已成爲價值交付最重要的形式。
  • 把 API 做爲價值交付形式的產品或組織,當 API 豐富度和能力完整度達到必定水準後,會升級爲平臺,經過平臺突破能力瓶頸,實現業務、產品和技術新的進化。
  • 平臺能力高低體如今其編程模型上,便是否能幫助用戶高效、低成本的構建新一代應用。
  • 平臺除了大幅提高企業價值交付的能力,更重要的是創建起應用開發生態。

雖然雲遠比上述 SaaS 案例複雜,但遵循着相似的發展邏輯。幾乎全部雲服務的產品功能都經過 API 體現,雲服務商也把發展平臺編程模型,提高用戶價值交付能力和創建應用開發生態做爲最重要的目標。當咱們從編程模型的視角去審視雲的產品體系,紛繁複雜的雲服務各自的定位逐漸清晰。

基礎設施即服務(IaaS)和容器技術是雲的基礎設施,以 K8S 爲表明的容器編排服務是雲原生應用的操做系統,面向特定領域的後端服務(BaaS)則是雲的 API。爲了實現更高的生產力,在存儲、數據庫、中間件、大數據、AI 等領域,大量的 BaaS 服務是全託管、Serverless 的形態,這一趨勢已持續多年。例如如今客戶已經很是習慣使用 Serverless 化的對象存儲,而不是本身基於服務器搭建數據存儲系統。當雲提供了豐富的 Serverless BaaS 服務後,須要一種新的通用計算服務,可以屏蔽基礎設施的複雜度,基於雲服務快速構建應用。所以 Serverless 計算應運而生,它包含了如下要素:

  • Serverless 計算是全託管的計算服務,客戶編寫代碼構建應用,無需管理和運維服務器等底層基礎設施。
  • Serverless 計算是通用、普適的,結合雲 API(BaaS 服務)的能力,可以支撐雲上全部重要類型的應用。
  • Serverless 計算不但實現了最純粹的按需付費(爲代碼實際運行消耗的資源付費),也應當支持預付費等計量模式,使得客戶成本在各類場景下,與傳統方式相比都極具競爭力。
  • 不一樣於虛擬機或容器等面向資源的計算平臺,Serverless 計算是面向應用的。要能整合和聯動雲的產品體系及其生態,幫助用戶在價值交付方式上實現顛覆式創新。

2.png

現狀

當下 Serverless 在哪些場景落地?

隨着用戶心智的創建,產品自己能力的完善,Serverless 近年來呈加速發展的趨勢。咱們看到在不少場景下,用戶使用 Serverless 架構在可靠性、成本和研發運維效率等方面得到顯著的收益。

1. 小程序/Web/Mobile/API 後端服務

在小程序、Web/Moible 應用、API 服務等場景中,業務邏輯複雜多變,迭代上線速度要求高,並且這類在線應用,資源利用率一般小於 30%,尤爲是小程序等長尾應用,資源利用率更是低於 10%。Serverless 計算的免運維,按需付費的特色很是適合構建小程序/Web/Mobile/API 後端系統,經過預留計算資源+實時自動伸縮,開發者可以快速構建延時穩定、能承載高頻訪問的在線應用。在阿里內部,使用 Serverless 構建後端服務是落地最多的場景,包括前端全棧領域的 Serverless For Frontends,機器學習算法服務,小程序平臺實現等等。

2. 大規模批處理任務處理

典型的離線任務批處理系統,例如大規模音視頻文件轉碼服務,包含計算資源管理、任務優先級調度、任務編排、任務可靠執行、任務數據可視化等一系列功能。若是從機器或者容器層次開始構建,用戶一般使用消息隊列進行任務信息的持久化和計算資源的分配,使用 K8S 等容器編排系統實現資源的伸縮和容錯,自行搭建或集成監控報警系統。若是任務涉及多個步驟,還須要整合工做流服務實現可靠步驟執行,而經過 Serverless 計算平臺,用戶只須要專一於實現任務處理邏輯,並且 Serverless 計算的極致彈性能很好的知足突發任務對算力的需求。

3.png

3. 基於事件驅動架構的在線應用和離線數據處理

典型的 Serverless 計算服務經過事件驅動的方式普遍的與雲端各類類型服務集成,用戶無需管理服務器等基礎設施和編寫集成多個服務的膠水代碼,輕鬆構建鬆耦合、分佈式的事件驅動架構的應用。

以阿里雲函數計算爲例,經過 API 網關和函數計算的集成,用戶能夠快速實現 API 後端服務。經過對象存儲和函數計算的事件集成,函數能實時響應對象建立、刪除等事件,實現以對象存儲爲中心的大規模數據處理。經過消息中間件和函數計算的事件集成,用戶能快速實現海量消息的處理。經過和阿里雲 EventBridge 的集成,不管是一方雲服務,仍是三方的 SaaS 服務,或者是用戶自建的系統,全部的事件均可以快速便捷的被函數計算處理。

4. 運維自動化

經過定時觸發器,用戶可以用函數快速實現定時任務,而無須管理執行任務的底層服務器。經過雲監控觸發器,用戶能夠接收 ECS 重啓/宕機,OSS 對象存儲流控等 IaaS 層服務的運維事件,並自動觸發函數處理。

將來

Serverless 將向何處去?

近年來,Serverless 一直在高速發展,呈現出愈來愈大的影響力。主流的雲服務商也在不斷地豐富雲產品體系,提供更好的開發工具,更高效的應用交付流水線,更好的可觀測性,更細膩的產品間集成,但一切纔剛剛開始。

趨勢 1:Serverless 將無處不在

任何足夠複雜的技術方案將被實現爲全託管、Serverless 化的後端服務。不僅是雲產品,也包括合做夥伴和三方服務。雲及其生態的能力將經過 API + Serverless 來體現。事實上,對於任何以 API 做爲功能透出方式的平臺型產品或組織,例如釘釘、微信、滴滴等等,Serverless 都將是其平臺戰略中最重要的部分。

趨勢 2:和容器生態將更加緊密融合

容器在應用的可移植性和交付流程敏捷性上實現了顛覆式創新,是現代應用構建和交付的一次重要變革。

  • 絕佳的可移植性。經過操做系統虛擬化技術,應用及其運行環境被虛擬化爲容器,實現了 build once,run anywhere。容器化的應用可以無差異的運行在開發機,on-premise,以及公有云的環境中。
  • 敏捷的交付流程。容器鏡像已經成爲應用封裝和分發事實上的標準。今天全世界的開發人員都習慣將容器做爲應用交付和分發的方式。圍繞容器,已經創建了完整的應用交付工具鏈。

容器已經成爲現代應用運行的基礎,但用戶仍然須要負責服務器等基礎設施的管理,包括水位預估、機器運維等等。所以業界出現了 AWS Fargate,阿里雲 ECI 等 Serverless container 服務,幫助用戶專一於容器化應用的構建,而無需負擔基礎設施的管理成本。從 Serverless 視角來看,函數計算等 Serverless 計算服務爲用戶帶來了全自動的伸縮模式、極致彈性以及徹底按需的計量方式,卻在用戶開發習慣的兼容性、可移植性、完工具鏈和生態等方面面臨挑戰,而這正是容器的優點。相信隨着技術的發展,將來容器鏡像也將成爲函數計算等更多 Serverless 應用的分發方式,容器龐大的工具生態和 Serverless 免運維、極致彈性結合在一塊兒,爲用戶帶來全新的體驗。

趨勢 3:Serverless 將經過事件驅動的方式鏈接雲及其生態中的一切

咱們已經在前述章節中討論了函數計算經過事件驅動和雲服務鏈接的意義,這樣的能力也會擴展到整個雲的生態。不管是用戶本身的應用,仍是合做夥伴的服務;不管是 on-premise 環境,仍是公有云,全部的事件都能以 Serverless 的方式處理。雲服務及其生態將更緊密的鏈接在一些,成爲用戶構建彈性高可用的應用的基石。

趨勢 4:Serverless 計算將持續提升計算密度,實現最佳的性能功耗比和性能價格比

虛擬機和容器是兩種取向不一樣的虛擬化技術。前者安全性強,開銷小,後者則相反。Serverless 計算平臺一方面要求最高的安全性和最小的資源開銷,魚與熊掌必須兼得;另外一方面要保持對原有程序執行方式的兼容,好比支持任意二進制文件,這使得適用於特定語言 VM 的方案不可行。所以 AWS Firecracker,Google gVisor 這樣新的輕量虛擬化技術應運而生。以 AWS Firecracker 爲例,經過對設備模型的裁剪和 kernel 加載流程的優化,實現了百毫秒的啓動速度和極小的內存開銷。一臺裸金屬實例支持數以千計的實例運行。結合應用負載感知的資源調度算法,雲服務商有望在保持穩定性能的前提下,將超賣率提高一個數量級。

當 Serverless 計算的規模和影響力變得愈來愈大,從應用框架、語言、硬件等層面,根據 Serverless 的負載特色進行端對端優化就變得很是有意義。新的 Java 虛擬機技術大幅提升 Java 應用的啓動速度,非易失性內存幫助實例更快被喚醒,CPU 硬件和操做系統協做對高密環境下性能擾動實現精細隔離,全部新技術正在創造嶄新的計算環境。

實現最佳性能功耗比和性能價格比的另外一個重要方向是支持異構硬件。長期以來,X86 處理器的性能愈來愈難以提高。而在 AI 等對算力要求極高的場景,GPU、FPGA、TPU(Tensor Processing Units) 等架構的處理器的計算效率更具優點。隨着異構硬件虛擬化、資源池化、異構資源調度、應用框架支持的成熟,異構硬件的算力也能經過 Serverless 的方式釋放,大幅下降用戶使用門檻。

後記

2009 年,UC Berkeley 發表了一篇著名的論文 「Above the Clouds: A Berkeley View of Cloud Computing」,討論了雲及其價值、挑戰和演進路徑,其中的真知灼見在雲的十年發展歷程中陸續被驗證,今天已沒有人懷疑雲的價值和對各行各業深入的影響。2019 年,他們發表了新的論文,「Cloud Programming Simplified: A Berkeley View on Serverless Computing」,預言 Serverless 將主導下一個十年雲的發展,產業的發展是螺旋式上升,Serverless 的誕生和興起邏輯早已蘊含其中。相信下一個十年, Serverless 將重塑企業創新的方式,幫助雲成爲社會發展的強大動力。

相關文章
相關標籤/搜索