天天看點

阿裡雲産品經理劉宇:Serverless 的前世今生

作者:雲布道師
阿裡雲産品經理劉宇:Serverless 的前世今生
2022 年 9 月 24 日,阿裡雲使用者組(AUG)第 12 期活動在廈門舉辦。活動現場,阿裡雲 Serverless 産品經理劉宇,向參會企業代表分享了Serverless 架構的前世今生。本文根據演講内容整理而成,希望和大家一起探索 Serverless 架構。

從雲計算到 Serverless 架構

從雲計算到雲原生再到 Serverless 架構,技術飛速發展的軌迹都有一定規律可循,那麼Serverless 架構為何而來,因何而生呢?

雲計算的誕生

從世界第一台通用計算機 ENIAC 開始,計算機科學與技術的發展就從未停止過前進的腳步,近些年來,更是日新月異。有不斷突破和創新的人工智能領域,有 5G 帶來更多機會的物聯網領域,還有不斷走進尋常百姓家的雲計算。

阿裡雲産品經理劉宇:Serverless 的前世今生

在圖中可以看到三個關鍵詞,這是 2003 年到 2006 年間谷歌發表的三篇重要論文,分别指明了 HDFS(分布式檔案系統),MapReduce(并行計算)和 Hbase(分布式資料庫)的技術基礎以及未來機會,正式奠定了雲計算的發展方向。關于這三篇論文,或者說三個技術點,也有人曾說,“因為它們,雲計算才正式拉開帷幕”。

雲計算發展是飛速的,也是有目共睹的;但是随着雲計算的程序,另一個名詞誕生并迅速占領了“風口大旗”,被大衆更為廣泛地關注,那就是——雲原生。

通過對雲計算與雲原生的文字組成結構分析,可以看到雲原生實際上就是在雲與計算之間,加了一個 Native。我們可以這麼認為,雲計算的飛速發展,無論是從技術疊代還是概念更新,最終産生了如今耳熟能詳的:雲原生計算。

雲計算是什麼?其實早在 1961 年雲計算的雛形概念就已經誕生了。在麻省理工學院百周年紀念典禮上,約翰·麥卡錫( 1971 年圖靈獎獲得者),第一次提出了一個概念,這個概念後來被喻為是雲計算的“最初的、超前的”遐想模型。它的翻譯大意為:“計算機在未來,将變成一種公共資源,會像生活中的水、電、瓦斯一樣,被每一個人使用。”

時間到了 1996 年,雲計算這個詞被正式提出。而後再到了 2009 年,UC Berkeley(加利福尼亞大學伯克利分校)在釋出的論文中,對雲計算進行了較為細緻描述。他說雲計算是一個即将實作的古老夢想,是計算作為基礎設施這一長久以來夢想的新稱謂,它正快速變為商業現實。同時,他在論文中明确地為雲計算下了定義:雲計算包含網際網路上的應用服務,以及在資料中心提供這些服務的軟硬體設施。

雲原生的火熱

阿裡雲産品經理劉宇:Serverless 的前世今生

時至今日,雲原生技術的發展同樣迅猛。那麼,什麼是雲原生呢?在阿裡雲智能基礎産品事業部負責人蔣江偉的文章《什麼是真正的雲原生》中,給出了一個非常明确的解釋:因雲而生的軟體、硬體、架構,就是真正的雲原生;因雲而生的技術,就是雲原生技術。出生于雲,成長在雲,因雲而生,就是雲原生。

那麼雲原生都包括哪些東西呢?耳熟能詳的技術,加上雲原生三個字,就都是雲原生相關技術了,例如:資料庫 → 雲原生資料庫;網絡→ 雲原生網絡等。在 CNCF Landscape 中,可以看到雲原生基金會對雲原生産品次元的一個描述,包括了資料庫、流、消息、容器鏡像、servicemesh、網關、K8S 等,當然,還包括一個非常熱門的詞彙:Serverless。

Serverless 架構的出現

在很多時候 Serverless 架構被稱為是一種粘合劑,它将雲原生的其他很多産品和使用者的業務進行了連結,同時又提供了極其誘人技術紅利,為此也被很多項目、業務所選擇。那麼,究竟什麼是 Serverless 架構?

通過 Serverless 的結構,不難發現其所要傳遞的心智,Server 指的是伺服器,Less 表示的是更少的精力,是以Serverless 架構所傳遞的心智是:把更專業的事情交給更專業的人,開發者能夠較少地關注伺服器等底層相關内容,把更多的精力放在更具價值的業務邏輯之上。

阿裡雲産品經理劉宇:Serverless 的前世今生

2009 年,UC Berkeley 發表的那篇著名的關于雲計算的文章,提出了包括服務的可用性,資料安全性和可審計性等在内的十項雲計算所面臨的各種困難和挑戰,并斷言雲計算将會引領未來的十年。

2019 年,恰好時隔十年,UC Berkeley 再次發文,從多個角度說明了什麼是 Serverless 架構,例如,從結構角度,肯定了 Serverless 是 FaaS 與 BaaS 的結合;從特性角度,對于被認為是 Serverless 架構的産品或者服務需要具備按量付費和彈性伸縮的特點;并非常“激進”地表示 Serverless 将會成為雲時代預設的計算範式,将會取代 Serverful 計算,由此也意味着伺服器 - 用戶端模式的終結。

阿裡雲産品經理劉宇:Serverless 的前世今生

從 IaaS,到 PaaS,再到 Serverless,雲計算的發展,越來越清晰,也越來越明确,去伺服器化也越來越明顯。

阿裡雲産品經理劉宇:Serverless 的前世今生

無論此時我們說雲原生,還是 Serverless 架構,雲的概念确實是在不斷地更新,雲的技術也在不斷地疊代,而這一切的改變其實都是為了效能提升,為了安全提升,為了成本降低,生産力驅動。

什麼是 Serverless 架構?

盡管對于 Serverless 架構的定義,并沒有一個非常明确的表述,但是 Serverless 是 FaaS 與 BaaS 的組合這種說法,卻被很多人所接受。所謂的 FaaS 就是函數即服務,而 BaaS 則指的是後端即服務,兩者搭配,共同成為 Serverless 架構不可擷取的部分,為開發者提供降本提效的技術紅利。

誠然,CNCF 雲原生基金會在 Serverless 白皮書中,肯定了 Serverless 是 FaaS 與 BaaS 的結合這種說法;而 UC 伯克利在論文中,肯定這種說法的同時,也從特性角度指出,對于被認為是 Serverless 架構的産品或者服務,還需要具備按量付費和彈性伸縮等特點,但是這也都是 2019 年的“描述”了。

時至今日,Serverless 架構已經完成了“自我更新與疊代”。在信通院釋出的 Serverless 的白皮書中,明确指出 Serverless 架構計算平台包括了函數緯度和應用緯度兩種形态。而随着時間的發展,阿裡雲領先性地推出了 Serverless 應用引擎(SAE),以應用為次元進行 Serverless 化的平台,換句話說,它其實可以是應用 Serverless 化的最佳實踐。

阿裡雲産品經理劉宇:Serverless 的前世今生

至此,Serverless 架構的組成已經逐漸明确:

  • 從結構角度,Serverless 是計算平台與 BaaS 産品的結合。計算平台包括了事件觸發的函數計算,也包括了應用Serverless化的最佳實踐 Serverless 應用引擎。BaaS 層面則包括了 Api 網管,CDN,對象存儲,資料庫等一系列的雲服務。
  • 從特性角度,就像 UC Berkeley 所說,對于被認為是 Serverless 架構的産品或者服務,還需要具備按量付費和彈性伸縮等特點。

Serverless 架構和傳統架構的差別

阿裡雲産品經理劉宇:Serverless 的前世今生

作為雲時代新的計算範式,Serverless 架構本身屬于一種天然的分布式架構,其工作原理較于傳統架構雖沒有翻天覆地的變化,但也是有細微的不同。

如圖所示,傳統架構下,開發者開發完成應用之後,還需要購買虛拟機服務,初始運作環境,安裝需要的軟體(例如 MySQL 等資料庫軟體,Nginx 等伺服器軟體等),完成環境的準備之後,還需要上傳開發好的業務代碼,啟動該應用,此時使用者才可以通過網絡請求,成功的通路到目标應用。

但是,如果應用的請求量過大或者過小,開發者 or 運維人員還需要針對實際的請求數量進行相關資源的擴充或縮容,并在負載均衡&反向代理子產品增加相對應的政策,以確定擴縮容操作的及時生效。同時,在做這些操作的時候還要保證線上使用者不會受到影響。

而在 Serverless 架構下,整個應用釋出的過程和工作的原理,将會發生一定的變化。

當開發者開發完整業務代碼之後,隻需要部署或更新到對應的 FaaS 平台即可,完成之後根據真實的業務需求,進行相關的觸發器配置,例如為了對外提供 Web 應用服務,可以配置 HTTP 觸發器等,此時使用者就可以通過網絡,通路到開發者所釋出的應用。

在這個過程中,開發者不需要再額外關注伺服器的購買、運維等相關的操作,也無需對一些軟體的安裝、應用資源的擴縮容進行額外的精力支出。開發者需要關注的僅僅是自身的業務邏輯,至于在傳統架構下需要安裝配的各種伺服器軟體等,都變成了配置項交給雲廠商來管理;同樣,傳統架構下需要根據伺服器的利用而進行資源的擴縮行為,也全都自動化地交給雲廠商來實作。

阿裡雲産品經理劉宇:Serverless 的前世今生

傳統意義上的彈性伸縮,指的是當項目的容量規劃與實際叢集負載間出現沖突時,即當現有叢集的資源無法承載壓力時,通過調整叢集的規模或者進一步配置設定相對應的資源,以保障業務的穩定性。當叢集負載較低時,系統可以盡量降低叢集的資源配置進而減少閑置資源的浪費,以進一步節約成本開銷。但是在 Serverless 架構下,彈性伸縮被進一步泛化,即在使用者側的表現,取消了項目本身容量規劃的過程,而是完全由平台排程決定資源的增加與縮減。

在 UC Berkeley 的文章中,對 Serverless 架構特點與優勢的描述,有這樣的表達:“代碼的執行不再需要手動配置設定資源。不需要為服務的運作指定需要的資源(比如使用幾台機器、多大的帶寬、多大的磁盤等),隻需要提供一份代碼,剩下的交由 Serverless 平台去處理就行了。目前階段實作平台配置設定資源時還需要使用者方提供一些政策,例如單個執行個體的規格和最大并發數,單執行個體的最大 CPU 使用率。理想的情況是通過某些學習算法來進行完全自動的自适應配置設定”,其實作者在此處所描述的“完全自動的自适應配置設定”指的就是 Serverless 架構的彈性伸縮的特點。

Serverless 架構下的彈性伸縮指的是,Serverless 架構可以根據業務流量波動,自動進行資源的配置設定和銷毀,并最大程度化地平衡穩定性、高性能、提升資源使用率。即當開發者完成業務邏輯的開發,把業務代碼部署到 Serverless 平台之後,平台通常并不會立即配置設定計算資源,而是将業務代碼與配置等相關内容進行持久化,當流量請求到來時,Serverless 平台會根據真實流量以及配置情況,自動的進行執行個體的啟動,反之也會自動的進行執行個體的縮減,甚至在某些時候執行個體的個數可以縮減到 0,即平台并未配置設定資源給對應函數。

Serverless 架構的核心技術紅利——彈性伸縮能力,在一定程度上也代表着提升資源使用率,朝着綠色計算方向不斷前進的過程。

在上圖彈性伸縮部分:左側是傳統雲主機架構下流量與機器負載示意圖,右側是 Serverless 架構彈性模式下流量與負載的示意圖,在這兩個圖中,橙色面積部分表示的是使用者側所感覺的資源負載能力,藍色的折線表示的是某網站在某天的流量走勢圖。通過這兩張圖對比,不難發現,傳統雲主機架構下,需要人工進行資源的增加與縮減,變化的粒度是主機級别,是以實作性受到嚴重考驗,粒度過粗仍然沒辦法有效地平衡資源浪費與性能穩定之間的關系。

在圖中,藍色線以上的橙色面積,是被浪費掉的資源;右側是 Serverless 架構彈性模式下流量與負載的示意圖,在這個圖中可以清晰地看到負載能力始終是和流量是比對的,即并不需要像左側傳統雲主機架構,需要在技術人員的人為幹預下應對流量的波峰波谷;這一切的彈性能力(包括擴容和縮容),均由雲廠商提供;這種模式下所帶來的好處一方面是降低業務運維人員的壓力,降低其工作複雜度;另一方面可以看到在使用者側的感覺是真實的資源消耗與所需的資源消耗是成正相關的,可以極大程度地降低資源浪費的情況,在一定程度上也是符合綠色計算思想的。

所謂的按量付費是一種先使用後付費的計費方式,通過按量付費,使用者無需提前購買大量資源,而是可以根據資源的使用量進行後付費。即便非 Serverless 架構的産品或者服務,也具備一定的按量付費能力,例如雲主機等産品均有按量付費的選項。但是之是以 Serverless 架構可以将按量付費作為一種技術紅利,其很大的一部分原因在于它按量付費的粒度會更細,在使用者側的資源使用率表現為近乎 100%(實際上資源使用率沒有達到 100%,僅僅指代的是在請求粒度下,使用者側在 Serverless 架構下的一種感覺)。

以某網站為例,在白天時資源使用率相對較高,夜晚時間段資源使用率相對較低,但是一旦購買了伺服器等資源,實際上無論當天流量多少,費用都是持續支出的過程。即便采用按量付費的模型,也會因為計費粒度過粗,而沒辦法最大可能性地提升資源使用率。按照《福布斯》雜志的統計,在商業和企業資料中心的典型伺服器僅提供 5%~15% 的平均最大處理能力的輸出,這無疑也證明了傳統伺服器的資源使用率過低和浪費過多的情況。

而 Serverless 架構的出現,可以讓使用者委托服務提供商管理伺服器、資料庫和應用程式甚至邏輯,這樣的做法一方面減少了使用者自己維護的麻煩,一方面使用者可以根據自己實際使用函數的粒度進行成本的支付。對于服務商而言,他們可以将更多的閑置資源進行額外的處理,從成本的角度、“綠色”計算的角度來說,都是非常不錯的。而從另一個角度,盡管 Serverless 架構的按量付費模型也是按照資源使用量進行收費的,但是計費粒度更為細膩:

  • 請求次數角度:Serverless 架構的計費粒度是請求級别的,而傳統的雲主機等架構的計費粒度是執行個體級别的(往往這種執行個體級别的所支援的請求個數遠遠大于 1);
  • 計費時間角度:Serverless 架構的計費時間通常為秒級(但是現在阿裡雲支援毫秒級計費或者是百毫秒級計費)而對于傳統的雲主機架構,計費時間粒度往往是小時級;

同樣在上圖中的按量部分,是該網站的某天的流量圖,圖中的藍色的折線為一個網站在某天的流量走勢。通過對比“傳統雲主機架構流量與費用支出示意”與“Serverless 架構彈性模式下費用支出示意圖”不難發現,左側的傳統雲主機架構下流量與費用支出示意圖,通常業務在上線之前是需要進行資源使用量評估的,當該網站的資源使用量評估之後,購買了一台可以承受每小時最大 1300PV 的伺服器,那麼在一整天的時間内,這台伺服器所提供的算力總量為橙色面積,所需的費用也是橙色面積對應算力的費用。

但是我們明顯可以看到,真正有效的資源使用與費用支出僅僅是流量曲線下面的面積,而流量曲線上方的橙色面積部分則為資源損耗與額外的支出部分;而右側的 Serverless 架構彈性模式下費用支出示意圖,費用支出和流量基本是成正比的,即當流量處于一個較低水位時,對應的資源使用量是相對較少的,同樣對應的費用支出也是相對較少的;當流量處于一個比較高的數值時,借助 Serverless 架構的彈性伸縮能力與按量付費能力,資源使用量和費用支出将會成正相關增長;在整個過程中,能夠清晰看到并未像左側傳統雲主機架構下流量與費用支出示意圖,産生明顯的資源浪費與額外的成本支出。

視訊應用、社交應用等場景下,使用者上傳的圖檔、音視訊往往總量大、頻率高,對處理系統的實時性和并發能力都有較高的要求。例如:對于使用者上傳的圖檔,可以使用多個函數對其分别處理,包括圖檔的壓縮、格式轉換、鑒黃鑒恐等,以滿足不同場景下的需求。

阿裡雲産品經理劉宇:Serverless 的前世今生

除此之外,Serverless 還可以在實時檔案處理,實時流處理、機器學習、IOT 後端、移動應用後端、web 應用程式等多種場景下發揮作用。

阿裡雲産品經理劉宇:Serverless 的前世今生

全球領先的 Serverless 平台

阿裡雲是國内較早一批提供 Serverless 服務的廠商,在過去幾年的實踐中,也取得了優異的成績。包括但不限于,2021 年 Q1 Forrester 評測中,阿裡雲的 Serverless 産品能力位居中國第一;CNCF 2020 年雲原生調研報告中,阿裡雲 Serverless 市場佔有率是國内第一;信通院 2020 年中國雲原生使用者調研報告中,阿裡雲 Serverless 使用者占比同樣國内第一。

阿裡雲産品經理劉宇:Serverless 的前世今生

阿裡雲 Serverless 産品布局

阿裡雲産品經理劉宇:Serverless 的前世今生

從上圖中,可以看到在最底層是計算平台和 BaaS 産品層。計算産品部分,有事件驅動的—— 函數計算 FC,也有應用 Serverless 化的最佳實踐——Serverless 應用引擎 SAE;在 BaaS 服務關聯部分,有不同層面的服務,資料庫,網絡,消息等,而這些産品也正在不斷的 Serverless 化,從雲到雲原生再到 Serverless 化;在上層有開發者工具和應用中心,為廣大開發者提供前後端一體化、WebAPI 以及資料庫處理、AI 推理等一系列的 All On Serverless 解決方案和場景。

讓 Serverless 更簡單:Serverless Devs

阿裡雲産品經理劉宇:Serverless 的前世今生

在生态層面,阿裡雲 Serverless 團隊開源了無廠商鎖定工具——Serverless Devs,秉承着讓 Serverless 更簡單,可以在 Serverless 應用全生命周期發揮作用的态度,Serverless Devs 不僅僅在底層規範模型上,推動信通院一同釋出 Serverless 工具鍊模型,也在工具層面捐贈項目到 CNCF Sandbox,成為了全球首個 CNCF Serverless Tools 中的 Sandbox 項目。

綜上所述,做 Serverless 架構,阿裡雲是認真的,也是專業的。感謝大家對阿裡雲 Serverless 架構的關注。

阿裡雲産品經理劉宇:Serverless 的前世今生

阿裡雲産品經理劉宇:Serverless 的前世今生