你需要了解的未來技術趨勢——Serverless怎樣改變未來架構?
移動互聯網、物聯網和大數據應用的快速發展極大地促進了人們對雲計算的需求。但是讓應用架構擁有良好的可伸縮性和高可用性並非易事,運維和管控龐大的基礎架構更是極大的挑戰。
近年來,一個新的架構風格Serverless成了熱門話題,傳說AWS,微軟,谷歌都已經提供相對應的服務,國內雲廠商阿里雲好像也在醞釀Serverless架構的產品。
Serverless到底是什麼概念?與FaaS(Function as a Service)是什麼關係?未來會有怎樣的發展趨勢?
Serverless架構和fPaaS架構可以看做是一個概念的兩種描述。Serverless中文直譯為無伺服器化,其更加強調底層VM和OS的透明化;fPaaS,全稱Function Platform as a Service,中文含義為功能平台即服務,其更加強調以功能函數作為基本的服務單元,按照調用次數進行成本核算。
未來幾年多數已經成熟使用IAAS服務的企業將會選擇VM虛擬機,容器,fPaaS(Serverless)的組合架構來構建業務系統。在這種組合架構中,Serverless 將不會取代現有的VM,容器等計算框架,而將作為現有的有效補充,在特定場景發揮其優勢。
一、對比分析
目前,雲服務商向用戶提供計算資源服務的架構主要有三種,包括:虛擬機架構(VM)、容器服務架構(Container)、功能函數架構(Function即Serverless)。其主要對比如下圖所示:
硬體管理
l VM:傳統的雲服務主要基於虛擬機作為基礎的硬體管理單元,這種方式非常類似於物理機的管理,因此比較容易被開發者接受,但是其在自服務和DevOps方面缺乏優勢。
l 容器:容器服務將虛擬化的關注點從物理機轉向了操作系統,實現輕量級虛擬化,Docker輕量級虛擬化。
l 功能即服務架構fPaaS(Serverless):fPaaS完全使底層透明化,應用程序只與語言運行環境交互,無需關注硬體及操作系統。
代碼量l VM:需載入操作系統
l 容器:需載入操作系統或應用系統
l fPaaS:應用僅需在fPaaS 函數服務部署服務所必須的代碼,無需預先加在操作系統或文件系統,能夠有效提升服務載入速度,降低執行時間,節約成本。
鏡像模式l VM:VM鏡像
l 容器:Docker鏡像
l fPaaS:由於fPaaS還是一個非常新的概念,因此沒有標準的鏡像模式,因此,FPAAS服務採用Ad Hoc鏡像,根據具體的用戶需求提供:源碼,meta信息,API等形式
調用方式l VM:手工方式創建實例,系統待機等待調用
l 容器:手工方式創建實例,系統待機等待調用
l fPaaS:fPaaS採用事件驅動模型,服務代碼將部署在平台環境中,但平台僅在API 請求,手動請求等形式調用服務時才分配內存和CPU資源。平台也會將調用頻繁的函數服務代碼存放在緩存中,以提升響應速率和命中率
生命周期l VM:長期運行,以月或日為周期
l 容器:以小時或日為周期
l fPaaS:fPaaS採用事件驅動模型,因而服務的生命周期很短,往往僅佔用秒級的CPU時間,因此能夠更加有效的利用CPU和內存資源
運營成本
l VM:長期運行,以月或日為周期
l 容器:以小時或日為周期
l fPaaS:fPaaS採用按需調用模式,以秒或微妙為計量單位,資源利用率更高,能夠提供細粒度的追蹤和賬單服務。例如:賬單可以計量每次調用消耗多少時間的CPU計算能力和內存容量等
穩定性l VM:長期運行,穩定性高
l 容器:穩定性中等
l fPaaS:fPaaS服務並不像虛擬機一樣隨時處於待機狀態,因此需要花費額外的時間進行代碼載入;同時,多個執行單元共享資源,使得資源的切換頻率變得更高,因此服務的穩定性相對較弱。但在服務資源擴展頻繁的場景下,fPaaS服務能夠自動進行資源擴展,而無需像VM需要啟動載入操作系統的時間,因此具備更有的效率
多語言支持l VM:支持Java,C#,Python等多種語言,語言類型豐富
l 容器:支持Java,C#,Python等多種語言,語言類型豐富
l fPaaS:fPaaS服務的運行非常依賴基礎運行環境,目前,函數服務能夠支持Node.js,
Python and Java三種語言的運行環境,相比虛擬機可以使用的語言偏少
l VM:松耦合,用戶可以自由遷移
l 容器:松耦合,用戶可以自由遷移
l fPaaS:fPaaS服務使得用戶必須在同一服務商中選擇相應的雲服務,函數的調用和觸發都在同一個雲服務商的服務間進行。這種模式將使得用戶與雲服務提供商形成強綁定關係。
代碼共享l VM:所有的功能函數共享相同的庫文件
l 容器:容器內具有私有的依賴庫文件,部分相同的庫文件會在不同的容器中引用
l fPaaS:fPaaS服務每個函數的運行環境是獨立的,每個函數都包含全部的業務代碼以及部分依賴庫文件,用戶和函數服務之間通過入參和出參進行交互,因此代碼共享效率低。fPaaS中代碼共享的方式有兩種:將公用代碼複製到各個函數中,這種方式運維複雜;將公用代碼定義為fPaaS功能,供其他函數調用。這種方式將考驗開發人員對於功能模塊拆分的合理性
二、技術應用分析
1.發展優勢l 行業TOP服務商推動fPaaS服務發展:Serverless計算服務已經成為雲計算服務商提供的標準服務特性,亞馬遜、微軟、谷歌、IBM都已經推出相關服務
l 用戶成功案例快速增長:亞馬遜語音助手altaxe使用lambda作為核心架構就是fPaaS的非常典型的成功案例,眾多創新性應用研發都將採用fPaaS架構
l Serverless天然支持微服務架構,微服務架構將成為未來應用的主流架構
l 核心技術優勢:事件驅動特性能有效的吸引開發者使用;較低的運行成本,自動的底層運維;最終用戶能夠方便的擴展核心服務
2.發展劣勢l 概念陌生:相比虛擬機和容器,Serverless以及fPaaS對於企業TI來講還是一個非常陌生的概念,需要一定時間進行概念推廣
l 生態環境不成熟:目前fPaaS應用發展比較初步,沒有完善的工具支持,最佳實踐的指導,缺乏標準的鏡像打包方式。長期來看,作為一種集成架構將成為主要應用模式。
l 規避供應商鎖定風險:企業如果希望在不同雲服務廠商間具備靈活遷移能力,則不會選擇fPaaS服務,因為這種服務要求必須選擇該服務商的相關服務才能使應用效果達到最佳
l 與容器及其他PaaS服務的競爭:容器服務在發展商上已經領先FPAAS服務兩年時間,並且已經相對成熟,並且很多企業提供的PaaS服務中已經具備了fPaaS的特性
l 核心技術缺陷:穩定性問題;缺乏多開發語言支持;代碼共享問題
Serverless架構設計的優勢和具體的行業場景http://click.aliyun.com/m/6914/
有什麼實例嗎
Serverless是一種架構理念,指的是以服務的形式來提供計算能力而不是以伺服器形式,讓開發者在構建應用的過程中不用過多考慮基礎設施的問題。大數據業務本來就是最典型的計算業務,從計算的場景上來說,涵蓋了離線批量計算、實時流計算、在線實時計算等,在很多情況下還需要把這些計算能力組合起來才能滿足需求。所以Serverless 的架構天生就能很好的適用於大數據應用的場景,能把數據科學家從底層伺服器層的運維管理等解放出來,讓數據科學家專註在數據價值的探索挖掘上。
推薦閱讀:
※如何看待阿里雲CDN降價對行業帶來的影響?
※同樣是雲存儲的又拍雲和七牛,為什麼價格差那麼大?
※阿里雲的大數據平台「數加」厲害在哪裡?
※如何破解雲棲大會妹子的Geek交友貼?
※阿里雲免費開通碼怎樣才能得到?