從2006年aws釋出的第一個雲服務s3開始,存儲,計算等it基礎設施的能力紛紛被以服務的方式提供給使用者。過去十年,雲服務深刻的改變了社會擷取和使用計算能力的方式,雲服務自身也以極快的速度演進,新的服務形态不斷湧現,無伺服器計算(serverless computing)就是其中之一。阿裡雲函數計算,是一種事件驅動的無伺服器計算服務。使用者隻需要編寫并上傳代碼,阿裡雲函數計算會以可靠的方式執行代碼,并随通路壓力平滑伸縮。使用者可以将代碼關聯多種事件源,由事件觸發,也可通過http請求的方式直接調用。
以開發一款移動應用後端系統為例,采用傳統的方式,使用者需要:
合理估計業務量,購買伺服器(實體機或者虛拟機),安裝配置系統、網絡以及依賴的軟體棧。
考慮容錯、擴容縮容、資源複用、削峰填谷等方面的問題。
搭建完善的監控報警服務。
部署和維護系統。
對使用者而言,采用這樣的方式建構系統,大量的精力都花在了處理伺服器相關的無差異化的問題上,無法聚焦打造業務上的核心競争力。而采用serverless的模式開發,使用者隻需要專注于業務邏輯的實作;伺服器的容量規劃、部署維護、容錯、擴充等方面的問題由計算服務提供商來解決。下圖是使用函數計算實作一個圖檔服務的示例。

使用者實作一組函數,實作圖檔處理功能,例如圖檔縮放,人臉識别。處理邏輯既可以使用庫的方式,在函數計算環境中進行計算,也可以調用其他圖像處理服務,實作更複雜的處理。使用者配置函數使其響應對象存儲服務(oss)事件。
當移動應用上傳圖檔到阿裡雲對象存儲服務後,相應的函數會被觸發執行。函數将執行的結果再次存入對象存儲服務,并且可以通過阿裡雲的移動推送通知終端使用者。
移動應用也可以通過api網關通路函數來完成其它功能,如使用者管理。
可以看到,基于函數計算建構業務系統,使用者不再需要考慮伺服器相關的問題,由此獲得了相當明顯的優勢。
開發效率高。
使用者不必考慮伺服器相關的容錯,負載均衡,自動伸縮等方面的問題,開發難度降低。
函數計算要求使用者将系統解耦為一組功能單一的函數,互相配合完成。是以一些公共的元件,例如身份驗證,能夠抽象出來,借助專門的服務完成,無需自己實作。
函數計算内建日志,性能名額監控等功能,使用者不再需要自己配置維護相關系統。
運維代價低。
使用者不再需要管理伺服器。
部署更新簡化為上傳代碼,復原至指定版本變得快速易用。
平滑伸縮。
函數執行能力實時橫向平滑伸縮,對使用者完全透明。
很适合通路模式有明顯波峰波谷的應用。
成本低廉。
函數計算按照實際使用情況收費。
使用者不再擔心為了滿足峰值需求預留資源,也不再為閑置資源買單。
廣義上講,雲計算的發展實際上就是一個serverless化的過程。例如使用阿裡雲的對象存儲服務,使用者實作了存儲的serverless化;使用阿裡雲的數加計算平台,使用者實作了大資料處理的serverless化。近年來湧現的平台即服務(platform-as-a-service, paas),容器即服務(container-as-a-service,caas)等,都在一定程度上實作了serverless。每一種服務,都在不同的粒度上對計算進行抽象,而阿裡雲函數計算,則将計算的抽象粒度提升到了函數層次,屬于函數即服務(function-as- a-servcie,faas)。相對于paas/caas,faas支援更小的計量和伸縮的粒度,是以在成本和伸縮平滑性上具有獨特的優勢。
下表從不同次元對比了iaas,caas,paas和faas。
次元/服務類型
iaas
caas
paas
faas
開發效率
低
中
高
可伸縮性
可運維性
成本
低:使用者需要處理機器相關的問題,包括容錯,擴容縮容等問題。 中:使用者隻需要實作業務邏輯。 高:使用者隻需實作業務邏輯,并通過事件驅動的方式有效組合各項服務。例如上傳圖檔到對象存儲服務後,自動觸發對應的函數處理。 低:以機器為粒度,在數分鐘内完成擴容/縮容。 中:以容器為粒度,在數秒内完成擴容/縮容。 高:以事件/請求為粒度,擴容/縮容對使用者是透明的,随使用者通路量自動伸縮。 低:使用者需要管理作業系統及以上層。 中:使用者需要管理容器即以上層。 高:使用者需要管理應用及以上層。 高:按照資源規格,小時時間粒度計費。 低:按照資源規格,毫秒時間粒度計費。
綜上,阿裡雲函數計算這樣的faas,是一類非常有趣的服務。他們在易用,低成本,高可用,實時彈性伸縮等方面的優勢使其在各種截然不同的場景中都極具吸引力。
高頻通路類應用,例如開發網站/移動應用後端系統。阿裡雲函數計算高可用,實時彈性伸縮,按需收費,成本低廉。使用者能快速的實作系統原型,并且同樣的架構能夠平滑擴充,支援使用者業務規模的快速擴張。
低頻通路類應用,例如各種資料導入導出任務,或者系統中的cron job。阿裡雲函數計算不但保證任務可靠執行,減小運維負擔;而且按照實際使用情況收費,降低使用者成本。
雖然faas作為新生事物,仍然面臨工具鍊、生态成熟度方面的挑戰,但這種模式已經展現出了巨大的潛力。阿裡雲函數計算将緻力于打造無伺服器計算生态圈,最大化使用者價值,敬請關注!。