AWS 15 年(1):從 Serverful 到 Serverless

SammyLiu發表於2021-12-28

 

 

2006年,AWS釋出了其第一個Serverless儲存服務S3和第一個Serverful計算服務EC2,這也是AWS正式釋出的前兩個服務,開啟了雲端計算波瀾壯闊的旅程。2014年,AWS釋出了業界第一個Serverless計算服務AWS Lambda。在今年(2021年)的AWS re:Invent大會上,AWS又釋出三個Serverless新品:Redshift Serverless、EMR Serverless和MSK Serverless。AWS的15年發展史(2006到2021年),也是一部AWS創造和深耕Serverless的歷史,一部從Serverful不斷向Serverless演進的歷史。

 

那麼,為什麼AWS服務要不斷從Serverful演進到Serverless呢?在AWS心中到底Serverless是什麼呢?為什麼AWS一直不遺餘力地推進Serverless呢?Serverless到底是一種技術模式還是商業模式呢?對雲端計算行業影響如何呢?以下內容是筆者和幾個業界朋友討論後的成果,總結後分享出來。

 

一、AWS Serverless是什麼?

 

在看什麼是Serverless之前,我們來看看典型的Serverful服務EC2。在筆者看來,EC2和在使用者自己資料中心內的物理伺服器或虛擬機器沒有本質區別,主要區別只是位置變了(從使用者資料中心挪到了AWS資料中心),以及管理角色變了(使用者自己管理變為AWS託管),而使用者還是要負責EC2伺服器的選型、確定規格、配置和運維,及其生命週期管理。

 

而Serverless則是一個全新物種。在AWS Serverless Q&A頁面(https://aws.amazon.com/cn/serverless/faqs/)中,AWS是這麼定義Serverless的:

  • no server management:使用者不需要管理伺服器

  • pay-for-value services:按價值付費

  • continuous scaling:能自動持續擴容

  • built-in fault tolerance:內建高可用和容錯能力

 

這定義非常簡潔。簡而言之,AWS Serverless服務就是客戶不需要自己管理伺服器(Server)的服務。這不是說這些服務就不需要Server,而是AWS把這些服務與Server相關的事情都替客戶幹了。

 

AWS已有的Serverless服務如下表所列:

領域

Serverless 服務

計算

AWS Lambda,AWS Fargate

程式整合

Amazon EventBridge,Amazon SNS,AWS Step Functions, Amazon SQS, Amazon API Gateway, AWS AppSync

儲存

AWS S3,Amazon DynamoDB,Amazon RDS,Amazon Aurora Serverless

分析

Redshift Serverless,EMR Serverless,MSK Serverless

 

實際上,AWS一直在做從Serverful到Serverless持續進化的過程:

 

 

(till 2019)

 

一服務被Serverless化後會帶來什麼變化呢?以EMR Serverless為例,AWS官網中的下圖將其與託管EMR服務做了對比。使用者在使用託管EMR服務時,首先需要確定例項的規格和叢集規模,然後建立叢集並配置叢集引數,再提交job,任務處理完畢後銷燬叢集。而使用EMR Serverless服務時,使用者只需要建立應用、提交job,叢集的事情完全由AWS負責。

 

 

   

利用Serverless服務開發的應用就是Serverless架構的應用程式。在下面這個例子中:

  1. 每當一個新的帖子文字檔案被新增到 S3 儲存桶中,一個專用的 API 閘道器就會觸發一個 Lambda 函式1,該函式負責初始化mp3檔案生成的過程,並將資訊的副本儲存在 DynamoDB 中。

  2. 函式1還向 SNS 釋出訊息,觸發 Lambda 函式3。這個函式呼叫 Amazon Polly 介面,將文字轉換成與文字相同語言的mp3音訊,並將音訊檔案儲存在S3儲存桶中,並將儲存桶中的地址資訊儲存到DynamoDB的相應資訊的記錄中。

  3. 函式2則負責從Dynamodb中獲取文字檔案的完整資訊,包括對應的mp3音訊在S3儲存桶中的地址。

  

二、Serverless對AWS客戶的價值:節省成本、減少管理和技術負擔、加快應用交付速度

圖片

  

(一)節省成本

 

國內某公有云廠商對其1000多雲客戶進行了資源利用情況分析,抽樣超過一萬計算節點發現,42%的節點資源利用率低於10%,72%的節點資源利用率低於20%。在AWS上,許多客戶一直都只使用 EC2例項可用容量的10-20%。這說明,大部分公有云使用者都存在一定程度的資源浪費,這一方面是在浪費使用者自己的錢,另一方面雲服務商的伺服器空轉導致不環保。

 

AWS Serverless服務能根據任務處理的需要而自動增減伺服器資源,使用者只需為所用資源付費。因為這些資源是真正為使用者創造價值的資源,沒有資源被浪費,因此,AWS將這種付費模式稱為“按價值付費(Pay-for-value)”。此外,無伺服器架構可以降低總體擁有成本(TCO) ,因為許多叢集的網路、安全和配置調優等管理任務也不再需要了。

 

這是因為Serverless架構的服務和應用採用事件驅動(Event-driven)架構,只有在任務處理啟動後,AWS才會建立必要的Server資源,並在處理過程中自動調整資源,處理完畢後就釋放資源。

 

從這原理出發,我們能看出來,通常認為Serverless服務只適合於低頻場景,因為每次Server的冷啟動會帶來一定的應用時延,這會帶來不好的使用者體驗。但是,在特定場景中,體驗要求可以稍微降低一點,而省錢是主要的需求。另一方面,Serverless免去了使用者配置、優化、運維伺服器叢集的負擔,簡化了使用者操作,這又提升了使用者體驗。

 

在https://www.simform.com/blog/aws-lambda-pricing/中,作者對比了兩種場景下AWS Lambda和EC2的費用:

  • 在圖1所示的低頻場景中,每個月只進行2萬次處理,此時Lambda大大節省成本。

  • 在圖2所示的高頻場景中,每個月要進行3千萬次處理,Lambda成本遠高於EC2。

 

 圖片

(圖1)

圖片

(圖2)

(二)降低技術和管理負擔

 

從企業管理者角度來看,使用Serverless服務,不需要建立、配置和管理伺服器叢集,也就不需要這方面的技術人員,這也能降低使用門檻、人力成本和管理負擔。

 

從開發人員角度來看,Serverless讓開發者不用關心繁瑣的基礎設施運維工作,使開發者可以把更多的精力放在核心業務的實現上。因此,無論是前端開發者,還是後端開發者,Serverless都可以幫助他們提升效率,降低交付時間。

 

可以說,Serverless是雲端計算的未來,是整個軟體和應用架構的未來,符合“雲端計算讓應用越來越簡單”這個大方向。

 

(三)加快應用交付速度

 

有了Serverless後,雲服務廠商底層架構承擔的事情越多,業務層面需要關注的架構和運維工作就越少,應用交付的時間就越快。

 

在AWS官網中,AWS宣稱使用Serverless服務能加快應用交付速度。其Coca-Cola的案例中,使用 AWS Lambda 等無伺服器構建塊,1 周內即開發出應用原型,在 150 天內將 Web 應用程式從原型擴充套件到 10000 臺機器。

 

三、Serverless對AWS自己的價值:討好使用者、施壓追隨者、環保標杆

 

AWS為什麼一直不遺餘力地推廣Serverless呢?可能有以下幾個原因:

  1. AWS是在踐行其“以客戶為中心”的理念:一方面,Serverless是一種新型雲資源使用模式,對低頻場景的客戶來說能切實降低雲成本;另一方面,Serverless又能減輕使用者負擔、降低使用門檻、優化使用者體驗。

  2. Serverless架構下,伺服器資源顆粒度會更細,更有利於填充其資源池的波峰,提高伺服器使用率。而且,節省出來的伺服器可以通過Spot Instance方式售賣給客戶。這能提升AWS的毛利率。

  3. AWS服務價格比較貴,所以搞Serverless對低頻客戶的成本削減幫助會很大,效果會很顯著,能收到更多客戶點贊,俘虜更多使用者的芳心,可收穫更多成本敏感型新使用者。

  4. AWS淨利潤超過20%,有足夠的利潤空間來承受可能的利潤下降。

  5. Serverless能減少空閒伺服器空轉,這將能降低碳排放,這符合環保主義者的要求,有助於樹立AWS的環保形象。

  6. 有助於施壓追隨者。

 

為什麼說Serverless能幫助AWS施壓追隨者呢?

  1. AWS做Serverless的榜樣在先,使用者能得到切實的好處,追隨者不得不跟進。

  2. 本來追隨者為了追趕AWS,往往定價降低,或者折扣很大,大規模上Serverless後收入減少將對其財務帶來很大壓力。

  3. 追隨者沒有AWS那麼大的規模和那麼強的運營能力,大規模上Serverless後對其財務壓力會進一步增大。

 

四、Serverless的路還很長

 

一方面,與其說Serverless是一種新技術模式,不如說它是一種新商業模式。AWS搞Serverless確實是一著好棋,既討好了使用者,又施壓了追隨者,還討好了環保主義者,還還進一步強化了其創新引領者的形象。這既是AWS創新能力的體現,也是其以使用者為中心的理念的體現。

 

另一方面,Serverless的路還很長,因為還有大量問題待解決,比如冷啟動時間比較長、函式除錯手段缺乏、適用場景有限、產品種類較少、應用尚未推廣開來、尚未形成開發者大群體、缺乏業界統一標準等問題。這些問題還需要AWS和業界繼續努力。

 

相信AWS會發布更多更好的Serverless服務,相信AWS會持續優化Serverless應用架構及模式,相信有越來越多使用者採用Serverless,相信雲上應用開發會變得越來越簡單高效。

 

感謝您的閱讀,歡迎關注我的微信公眾號!

相關文章