Bazaar:阿里雲Serverless計算服務探祕

什麼是 Serverless

“Serverless computing refers to the concept of building and running applications that do not require server management.”

-- 來自 CNCF 對 Serverless 的定義

Serverless 指用戶無需管理服務器情況下構建和運行應用程序的一種方式。可見 Serverless 並不是真的不需要服務器,畢竟程序代碼不能靠意念來執行,仍然是需要硬件服務器實體來作為運行代碼的基礎的。這裡的 Serverless 是站在應用開發人員的視角提出的,指服務器的運行、維護對於應用程序的開發人員不可見。將底層基礎架構的維護、更新和擴展等任務交給平臺提供商來完成。從而將業務開發人員解放出來,讓他們更好的關注自身業務。這便是 Serverless 計算背後的核心思想。可見這一思想能夠產生的一大基石便是雲計算服務。只有憑藉雲計算構建的強大基礎運維平臺,才能夠適應無服務器計算對於計算、存儲和網絡資源的需求。

圖1展示了 Serverless 計算的發展歷程。早在2006年就已經出現了第一個帶有 Serverless 性質的計算服務平臺 Zimki,該平臺會按照代碼實際執行時間向用戶收取相應的費用。隨後的2008年穀歌推出Google App Engine產品,其背後的理念也是 Serverless 計算。但這一時期,Serverless 計算的概念並沒有被明確提出。Serverless 概念第一次出現的時間是在2012年,iron.io,一家基於容器提供分佈式按需執行服務的提供商提出了這一概念。2014年AWS Lambda這一里程碑式的產品出現。通過將無服務器計算的概念嵌入到整個雲計算服務的整體框架中,無服務器計算正式走進了雲計算的舞臺中央。2016年無服務器計算則迎來了快速發展的階段,IBM、谷歌、微軟相繼推出了IBM OpenWhisk on Bluemix、Google Cloud Functions和Azure Functions等相關產品。而到了2018年,隨著容器技術的發展,各類 Serverless container 平臺更是如雨後春筍般出現在人們的視線中。

Bazaar:阿里雲Serverless計算服務探秘

圖1 Serverless 發展歷程

對於 Serverless 帶來的好處可以歸結於以下幾點:

· *降低成本

· *靈活擴容

· *按需付費

降低成本:使用 Serverless 服務後,用戶不再需要關心採購、運行、維護底層機器資源的相關工作,也不再需要對相關工作投入人力資源。特別是機器運維的成本將大幅下降。

靈活擴容:用戶自己購買服務器對外提供服務時,當業務壓力突然增加時,很難快速添置大量服務器來滿足突增的業務壓力的需要。而採用無服務器計算後平臺提供商會有大量機器資源供用戶動態擴容使用。

按需付費:用戶自己購買服務器時,即便業務負載非常低,用戶依然要負擔相關資源的使用成本。極端情況當用戶業務負載壓力為零時,用戶也要白白花費相應的成本來維持自身服務的運轉。在使用無服務器計算後,當用戶業務壓力降低時,用戶需要的資源會被自動減小,因而花費的成本也自然會降低。

總之 Serverless 讓開發人員更加聚焦於自己業務的同時,更可以有效幫助企業降低業務運行過程中不必要的開銷和成本。

Serverless 中非常重要的一個環節是底層相關計算資源的管理不再需要用戶來關心,那麼這些資源的管理由誰來完成呢?下面我們就來介紹本系列文章的主角——Bazaar。

2. Bazaar:阿里雲 Serverless 計算服務

Bazaar ([bə'zɑːr])是阿里雲彈性計算團隊為孵化更多的 Serverless 服務推出的基礎服務。該服務旨在為終端用戶和雲上的各類 Serverless 產品提供底層的資源管理、交付服務。無論是終端用戶還是阿里雲的各類 Serverless 產品亦或是外部的Serverless服務開發商均可以藉助Bazaar方便的獲得需要的雲計算資源。憑藉彈性計算團隊和容器服務團隊在雲計算服務領域積累的豐富經驗,我們將Bazaar打造成為一款面向不同客戶和業務的資源交付服務以便支撐各類無服務器計算業務對底層雲計算資源管理、交付的不同訴求 。

Bazaar具備 Serverless 帶來的諸多優點。如用戶聚焦自身業務,簡化底層資源管理,靈活的擴容方式等等。相較於彈性計算ECS,Bazaar在資源佔用開銷、實例啟動時間等方面也著重進行了優化,並從系統整體架構上針對 Serverless 進行了深度的定製優化。

Serverless 通過平臺服務商管理底層運行時環境,為用戶擺脫底層基礎架構運維工作提供了可能。而平臺服務商為了向用戶提供這樣一個統一的計算平臺,勢必需要一個統一的底層軟件運行環境。在這其中的沙箱技術就是最為核心的技術組件,其要為用戶程序的運行提供一個安全且與外界隔離的環境。該環境還必須考慮到 Serverless 自身的特點,在應用部署密度,程序啟動時間等方面做出相應的優化,來滿足無服務器計算高併發,用戶負載不穩定的需要。

由於Bazaar要兼容Docker/Kubernetes生態,並提供安全、多租戶等公有云需要的特性,對於當前Serverless產品來講,最為適合的容器技術架構依然是通過硬件虛擬化來作為Bazaar安全容器的底層技術。考慮到Serverless用戶的特定場景和需求,我們在傳統虛擬機上又進行了進一步的改進和優化。比如禁用了登錄服務器,添加/刪除用戶功能,同時精簡了不必要的系統服務。

圖2中展示了我們在Bazaar針對 Serverless 場景在底層系統上進行的各類優化。

Bazaar:阿里雲Serverless計算服務探秘

圖2 Bazaar底層系統優化

通過上面的各種優化,Bazaar實例的啟動時間相較於此前ECS實例有了顯著的提升,如圖3所示。

Bazaar:阿里雲Serverless計算服務探秘

圖3 優化前後啟動時間對比

3. 展望

可以看到隨著容器技術的快速發展和 Serverless 計算產品的普及,以虛擬機為代表的第一代雲計算服務(IaaS)正在逐漸讓位給以 Serverless 為代表的新一代雲計算服務。而這一趨勢對底層系統軟件的開發也提出了更高的要求。新一代底層系統軟件不僅要滿足安全、隔離、多租戶的需求,更要針對 Serverless 的特點進行整體端到端優化。相信隨著 Serverless 的不斷髮展,會誕生更加優秀的系統來支持 Serverless,為用戶提供更好的下一代雲計算服務。


分享到:


相關文章: