摘要:Serverless 指用戶無需管理服務(wù)器情況下構(gòu)建和運行應(yīng)用程序的一種方式戚哎。可見 Serverless 并不是真的不需要服務(wù)器隔嫡,畢竟程序代碼不能靠意念來執(zhí)行式塌,仍然是需要硬件服務(wù)器實體來作為運行代碼的基礎(chǔ)的。
Bazaar:阿里云Serverless計算服務(wù)探秘
?作者:Bazaar項目組
1.?什么是 Serverless
“Serverless computing refers to the concept of building and running applications that do not require server management.”
-- 來自 CNCF 對 Serverless 的定義
Serverless 指用戶無需管理服務(wù)器情況下構(gòu)建和運行應(yīng)用程序的一種方式缩多〈艮龋可見 Serverless 并不是真的不需要服務(wù)器,畢竟程序代碼不能靠意念來執(zhí)行衬吆,仍然是需要硬件服務(wù)器實體來作為運行代碼的基礎(chǔ)的梁钾。這里的 Serverless 是站在應(yīng)用開發(fā)人員的視角提出的,指服務(wù)器的運行逊抡、維護對于應(yīng)用程序的開發(fā)人員不可見姆泻。將底層基礎(chǔ)架構(gòu)的維護、更新和擴展等任務(wù)交給平臺提供商來完成。從而將業(yè)務(wù)開發(fā)人員解放出來拇勃,讓他們更好的關(guān)注自身業(yè)務(wù)四苇。這便是 Serverless 計算背后的核心思想∏鼻铮可見這一思想能夠產(chǎn)生的一大基石便是云計算服務(wù)蛔琅。只有憑借云計算構(gòu)建的強大基礎(chǔ)運維平臺,才能夠適應(yīng)無服務(wù)器計算對于計算峻呛、存儲和網(wǎng)絡(luò)資源的需求罗售。
圖1展示了 Serverless 計算的發(fā)展歷程。早在2006年就已經(jīng)出現(xiàn)了第一個帶有 Serverless 性質(zhì)的計算服務(wù)平臺 Zimki钩述,該平臺會按照代碼實際執(zhí)行時間向用戶收取相應(yīng)的費用寨躁。隨后的2008年谷歌推出Google App Engine產(chǎn)品,其背后的理念也是 Serverless 計算牙勘。但這一時期职恳,Serverless 計算的概念并沒有被明確提出。Serverless 概念第一次出現(xiàn)的時間是在2012年方面,iron.io放钦,一家基于容器提供分布式按需執(zhí)行服務(wù)的提供商提出了這一概念。2014年AWS Lambda這一里程碑式的產(chǎn)品出現(xiàn)恭金。通過將無服務(wù)器計算的概念嵌入到整個云計算服務(wù)的整體框架中操禀,無服務(wù)器計算正式走進了云計算的舞臺中央。2016年無服務(wù)器計算則迎來了快速發(fā)展的階段横腿,IBM颓屑、谷歌、微軟相繼推出了IBM OpenWhisk on Bluemix耿焊、Google Cloud Functions和Azure Functions等相關(guān)產(chǎn)品揪惦。而到了2018年,隨著容器技術(shù)的發(fā)展罗侯,各類 Serverless container 平臺更是如雨后春筍般出現(xiàn)在人們的視線中器腋。
圖1? Serverless 發(fā)展歷程
對于 Serverless 帶來的好處可以歸結(jié)于以下幾點:
·? ? ? *降低成本
·? ? ? *靈活擴容
·? ? ? *按需付費
降低成本:使用 Serverless 服務(wù)后,用戶不再需要關(guān)心采購歇父、運行蒂培、維護底層機器資源的相關(guān)工作,也不再需要對相關(guān)工作投入人力資源榜苫。特別是機器運維的成本將大幅下降护戳。
靈活擴容:用戶自己購買服務(wù)器對外提供服務(wù)時,當(dāng)業(yè)務(wù)壓力突然增加時垂睬,很難快速添置大量服務(wù)器來滿足突增的業(yè)務(wù)壓力的需要乖寒。而采用無服務(wù)器計算后平臺提供商會有大量機器資源供用戶動態(tài)擴容使用。
按需付費:用戶自己購買服務(wù)器時吃嘿,即便業(yè)務(wù)負載非常低,用戶依然要負擔(dān)相關(guān)資源的使用成本缴渊。極端情況當(dāng)用戶業(yè)務(wù)負載壓力為零時,用戶也要白白花費相應(yīng)的成本來維持自身服務(wù)的運轉(zhuǎn)鱼炒。在使用無服務(wù)器計算后衔沼,當(dāng)用戶業(yè)務(wù)壓力降低時,用戶需要的資源會被自動減小昔瞧,因而花費的成本也自然會降低指蚁。
總之 Serverless 讓開發(fā)人員更加聚焦于自己業(yè)務(wù)的同時,更可以有效幫助企業(yè)降低業(yè)務(wù)運行過程中不必要的開銷和成本自晰。
Serverless 中非常重要的一個環(huán)節(jié)是底層相關(guān)計算資源的管理不再需要用戶來關(guān)心凝化,那么這些資源的管理由誰來完成呢?下面我們就來介紹本系列文章的主角——Bazaar酬荞。
2.?????Bazaar:阿里云 Serverless 計算服務(wù)
Bazaar ([b?'zɑ?r])是阿里云彈性計算團隊為孵化更多的 Serverless 服務(wù)推出的基礎(chǔ)服務(wù)搓劫。該服務(wù)旨在為終端用戶和云上的各類 Serverless 產(chǎn)品提供底層的資源管理、交付服務(wù)混巧。無論是終端用戶還是阿里云的各類 Serverless 產(chǎn)品亦或是外部的Serverless服務(wù)開發(fā)商均可以借助Bazaar方便的獲得需要的云計算資源枪向。憑借彈性計算團隊和容器服務(wù)團隊在云計算服務(wù)領(lǐng)域積累的豐富經(jīng)驗,我們將Bazaar打造成為一款面向不同客戶和業(yè)務(wù)的資源交付服務(wù)以便支撐各類無服務(wù)器計算業(yè)務(wù)對底層云計算資源管理咧党、交付的不同訴求 遣疯。
Bazaar具備 Serverless 帶來的諸多優(yōu)點。如用戶聚焦自身業(yè)務(wù)凿傅,簡化底層資源管理,靈活的擴容方式等等数苫。相較于彈性計算ECS聪舒,Bazaar在資源占用開銷、實例啟動時間等方面也著重進行了優(yōu)化虐急,并從系統(tǒng)整體架構(gòu)上針對 Serverless 進行了深度的定制優(yōu)化箱残。
Serverless 通過平臺服務(wù)商管理底層運行時環(huán)境,為用戶擺脫底層基礎(chǔ)架構(gòu)運維工作提供了可能止吁。而平臺服務(wù)商為了向用戶提供這樣一個統(tǒng)一的計算平臺被辑,勢必需要一個統(tǒng)一的底層軟件運行環(huán)境。在這其中的沙箱技術(shù)就是最為核心的技術(shù)組件敬惦,其要為用戶程序的運行提供一個安全且與外界隔離的環(huán)境盼理。該環(huán)境還必須考慮到 Serverless 自身的特點,在應(yīng)用部署密度俄删,程序啟動時間等方面做出相應(yīng)的優(yōu)化宏怔,來滿足無服務(wù)器計算高并發(fā)奏路,用戶負載不穩(wěn)定的需要。
由于Bazaar要兼容Docker/Kubernetes生態(tài)臊诊,并提供安全鸽粉、多租戶等公有云需要的特性,對于當(dāng)前Serverless產(chǎn)品來講抓艳,最為適合的容器技術(shù)架構(gòu)依然是通過硬件虛擬化來作為Bazaar安全容器的底層技術(shù)触机。考慮到Serverless用戶的特定場景和需求玷或,我們在傳統(tǒng)虛擬機上又進行了進一步的改進和優(yōu)化儡首。比如禁用了登錄服務(wù)器,添加/刪除用戶功能庐椒,同時精簡了不必要的系統(tǒng)服務(wù)椒舵。
圖2中展示了我們在Bazaar針對 Serverless 場景在底層系統(tǒng)上進行的各類優(yōu)化。
圖2? Bazaar底層系統(tǒng)優(yōu)化
通過上面的各種優(yōu)化约谈,Bazaar實例的啟動時間相較于此前ECS實例有了顯著的提升笔宿,如圖3所示。
圖3? 優(yōu)化前后啟動時間對比
3.?????展望
可以看到隨著容器技術(shù)的快速發(fā)展和 Serverless 計算產(chǎn)品的普及棱诱,以虛擬機為代表的第一代云計算服務(wù)(IaaS)正在逐漸讓位給以 Serverless 為代表的新一代云計算服務(wù)泼橘。而這一趨勢對底層系統(tǒng)軟件的開發(fā)也提出了更高的要求。新一代底層系統(tǒng)軟件不僅要滿足安全迈勋、隔離炬灭、多租戶的需求,更要針對 Serverless 的特點進行整體端到端優(yōu)化靡菇。相信隨著 Serverless 的不斷發(fā)展重归,會誕生更加優(yōu)秀的系統(tǒng)來支持 Serverless,為用戶提供更好的下一代云計算服務(wù)厦凤。