AWS 15 年(1):從 Serverful 到 Serverless


 

 

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,相信雲上應用開發會變得越來越簡單高效。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM