作者 | 楊麗
出品 | 雷鋒網產業組
如果你是一名互聯網研發人員,那麼極有可能瞭解並應用過Serverless這套技術體系。縱觀Serverless過去十年,它其實因雲而生,也在同時改變雲的計算方式。如果套用技術成熟度曲線來描述的話,那麼它已經走過了萌芽期、認知破滅期,開始朝着成熟穩定的方向發展。未來,市場對Serverless的接受程度將越來越高。
不要驚訝,阿里雲團隊在真正開始構建Serverless產品體系的最開始的一兩年裏,也曾遭遇內部的一些爭議。而今,單從阿里集團內部的很多業務線來看,已經在朝着Serverless化的方向發展了。
日前,阿里雲憑藉函數計算產品能力全球第一的優勢,入選Forrester 2021年第一季度FaaS平台評估報告,成為比肩亞馬遜成為全球前三的FaaS領導者。這也是首次有國內科技公司進入FaaS領導者象限。
在與雷鋒網的訪談中,阿里雲Serverless負責人不瞋闡釋了Serverless的演進歷程、引入Serverless面臨的難點與挑戰、以及有關雲原生的趨勢預判。
“一定要想明白做這件事的終局是什麼,包括產品體系的定位,對開發者、對服務商的價值等等這些問題。這要求我們不斷通過實踐和認識的深化,讓這些問題的回答能夠逐漸清晰起來。這也是我們這麼多年實踐積累的寶貴經驗。”不瞋指出。
儘管企業的實踐還存在種種疑惑和挑戰,但Serverless實際上離我們並沒有那麼遙遠。舉一個最近的例子,新冠疫情讓遠程辦公、在線教育、在線遊戲的應用需求短期內增加。業務規模的爆發式增長,對每一個需求的響應需要更加及時,這對應用架構的彈性,對底層計算的速度,對研發效率的提升等,都要求業務加速向新技術架構演進。
而不瞋的理想就是,幫助更廣泛的客户實現向新技術架構的平滑遷移,讓Serverless滲透到所有的雲應用中。
不瞋作為阿里雲Serverless產品體系的負責人,也是國內Serverless的早期實踐者。以下將呈現是對這次訪談的完整總結。
一、Serverless的定義
在討論之前,我們先明確 Serverless 的定義,確保大家對 Serverless 的認知是一致的。
現在Serverless越來越熱,無論是工業界還是學術界,都將 Serverless 視為雲計算發展的下一階段。Serverless 有很多種表述,其中伯克利大學的定義相對嚴謹一些。
(注:2019年2月,加州大學伯克利分校發表的《Cloud Programming Simplified: A Berkerley View on Serverless Computing》論文,曾在業界引發諸多討論和關注。)
大致來講,Serverless實際對應的是一整套的產品體系,而不是單獨一兩個產品;同時,這些產品/服務之間還具備以下特徵:服務之間彼此配合、全託管、用户通過API調用就可完成整個功能或應用的開發而無需關注底層基礎設施。
這套產品體系目前可分為兩類:一類是計算,即FaaS(Function as a Service);還有一類是BaaS(Backend as a Service),比如消息中間件、對象存儲,都可以看做是Serverless化的BaaS服務。
二、Serverless的演進
一個新技術通常會經歷幾個階段:第一個階段是因為其巨大潛力引起廣泛關注的階段;第二階段,是認知破滅的階段,在這個階段由於產品初期本身能力不是很強健,或案例不全等因素,導致用户在使用過程中往往會遇到挫敗感;第三個階段,是伴隨實踐的增加和產品能力本身的發展,又會逐步提升認知,進而進入一個穩健增長的階段。
需要明確的是,Serverless並不是一個非常新的技術。像阿里雲的OSS、AWS的S3對象存儲,它們都是最早發佈的產品之一,一開始其實就是Serverless的形態。
但業界從Serverless的認知,確實是因AWS的Lambda帶起來的,2014年AWS推出了Lambda。
2017年到2019年上半年,這段時間,業界對Serverless的討論很多同時又有很多困擾,不知道如何落地,或者用了之後才突然覺得跟自己想象的不太一樣。
國內外技術發展保持着相似的節奏,國外相對來講更快一些。從去年開始,國內也開始進入到了穩定發展的階段。現在國際上主流雲供應商提供的新功能或新產品,80%以上都是Serverless的形態。
阿里雲從2017年開始打造Serverless,並於當年正式啓動商業化。
目前在阿里集團內部已經開始落地Serverless了,例如飛豬、淘寶、高德等等。在企業賦能方面,尤其是疫情之後,能夠看到用户對Serverless的認知比之前確實深入了許多,在很多場景下,切換到Serverless架構確實能夠為用户帶來明顯的收益,用户也認可這項技術。
舉一項數據來看,目前阿里雲Serverless已經服務了上萬家付費客户,擁有100+的典型案例,函數日調用量超過120億次、函數總量達到100萬。
三、新舊觀念的轉變
對於阿里雲自身而言,在最開始構建Serverless之初,其實最大的挑戰不僅僅是技術層面的,更多的還有觀念上的不對稱。
首先,Serverless本身的形態跟以往的計算形態差異比較大,整個研發和運維的體系跟傳統應用是割裂的。如果開發Serverless應用,其研發運維的流程和工具跟虛擬化(VM)或容器化的方式不太一樣,很多用户會擔心供應商鎖定(lock-in)的問題,不太希望自身的技術棧跟某個供應商綁定。
其次,AWS的Lambda最開始做了一個榜樣,但它也實際也只適合於AWS的產品體系,如果放在其他的產品體系裏會面臨非常大的挑戰,不易於被用户接受,且限制條件也很多,應用場景也有限。這就要求在技術層面,包括資源調度、安全隔離、多租户管理、流控等方面有很高要求,做起來非常辛苦。因為在此之前沒有一個產品的計算形態是如此細粒度、動態的使用資源。
這種挑戰,一開始即便在阿里內部,也曾面臨過許多爭議。
我們這麼多年實踐積累的寶貴經驗是:一定要想明白做這件事的終局是什麼,包括在產品體系中的定位,對開發者、對雲服務商的價值等等這些問題。這要求我們不斷通過實踐和認識的深化,讓這些問題的回答能夠逐漸清晰起來。
四、引入Serverless的顧慮
站在客户層面,不同類型的客户對引入第三方的Serverless技術其實會有不同層面的考慮。
對於超大型企業,比如Facebook、字節跳動,企業本身就有非常強的基礎設施團隊,通常他們會選擇自己內部開發這方面技術。
還有一些企業,沒有采用Serverless並不是説他們對這個技術有什麼牴觸,而是當下的落地實踐或本身的工具鏈還無法做到完全消除供應商鎖定的問題,又或者是因為工具鏈跟傳統開發太過割裂,企業自身無法同時維護兩套開發框架。
這種情況下,用户的系統架構一定會面臨一箇中間狀態:既有老的又有新的。如果整個遷移的過程不是那麼平滑的話,供應商的這部分優勢在客户那裏是不存在的, 因為老的系統實際是需要維護的。如此,對用户的吸引力其實就沒有那麼大了。
阿里雲最近開源的Serverless Devs解決的就是這樣的問題。其定位是幫助用户更簡單地開發和運維自己的Serverless化和容器化應用,提供應用全生命週期管理的能力。
本質上,Serverless的環境是在遠端,跟用户本地開發環境是天然割裂的,那麼在這個過程中,從調試、部署、發佈、監控等各個環節,Serverless Devs都希望能為用户提供更好的體驗。但用户可自由使用其中一個或幾個功能,不需要將已有的研發運維的流程完全遷移到我們定義的這套規範裏。
五、過去一年的重大升級
2020年,疫情的背景下,其實也是阿里雲Serverless技術升級的關鍵一年。這一年裏,團隊做了很多大的升級,包括:
架構層面,已經升級到神龍裸金屬服務器+袋鼠安全容器的下一代架構。好處是能夠帶來非常高的計算密度,進一步提升彈性能力和性能。
緩存方面,發佈容器鏡像加速技術,能夠讓GB級別的容器鏡像非常快地實現秒級啓動。目前已經演進到了下一代,通過阿里內部大規模業務場景進行打磨。
運行時方面,去年阿里雲重寫整個語言運行時,使得更具有可擴展性,啓動速度更快。
阿里雲函數計算全景圖
總結起來,兩方面因素推動阿里雲Serverless在過去一年做出重大技術升級:
一是來自用户本身的訴求。比如在教育場景中,老師對開課這件事是有時效性要求的,這就要求後台能夠短時間內啓動可能數千個實例進行響應。
二是來自內部對產品效能的要求。對於雲服務商而言,Serverless最核心的一個定位,是能夠將雲上資源更好地利用起來。整個計算架構確實需要通過新的虛擬化技術、容器技術,同時跟新的硬件結合起來,從而提供一個非常細粒度的、啓動非常快、非常彈性的計算模型。這也是為什麼我們要進行架構升級,從原來的虛擬機架構演進到神龍裸金屬服務器+袋鼠安全容器的架構,將對整體產品的發展產生一個核心推力。
六、攻克下一城
阿里雲採用“三位一體”的策略打造整個 Serverless 產品矩陣——自身實踐-開源-商業化。即通過集團內部超大規模、超複雜的業務場景來錘鍊技術,將技術不斷打磨產品化,然後對雲上客户提供商業化服務,在這個過程中,還會將一些技術、工具進行開源,遵循開源開放的標準,跟開源生態融合。
只有對客户的業務產生價值和幫助,客户才會認可Serverless。
短期來看,無論是業務規模,還是產品、技術層面,阿里雲Serverless都在以非常穩健地方式按照自身的節奏向前演進。
一是業務規模會更大,預計每年會有三倍以上的增長;
二是產品層面,以客户為中心,解決用户痛點仍然是首要的。今年將在產品細節體驗上繼續補強,在工具鏈、可觀測性等方面為用户提供更好的體驗;
三是技術層面,包括計算、網絡、緩存、運行時等核心部分,繼續夯實技術細節,實現極致性能。
七、雲時代下的新機遇
在應用場景上來看,Serverless不再僅僅是小程序,還有電商大促、音視頻轉碼、AI算法服務、遊戲應用包分發、文件實時處理、物聯網數據處理、微服務等場景。
Serverless將繼續和容器、微服務等生態融合,降低開發者使用Serverless技術的門檻,反過來也將促進傳統應用的雲原生化。
Serverless另一個核心要素是“被集成”,被集成的對象有兩類:
一類跟一方雲服務進行接入,阿里雲函數計算已被30多個一方雲服務產品集成;
第二類是通過 EventBridge 事件總線和三方生態被集成。例如和釘釘等SaaS應用集成。釘釘的業務中常常需要以簡潔、輕量的方式完成用户的定製化需求,這和Serverless的應用形態是高度匹配的。
不瞋,阿里雲Serverless負責人
今天,我們可以非常明確地看到,整個雲的未來一定是Serverless形態的。阿里雲內部對這個也沒有爭議,因為這麼多年來,整個產品體系就是朝着Serverless方向發展的。
不是因為有了Serverless計算,雲才向Serverless演進。恰恰相反,因為雲的產品體系已經向Serverless 演進,才催生了 Serverless 計算。單純的Serverless計算並不能實現很多功能,前提一定是跟其他雲服務及其生態配合,才能體現出其自身的優勢。
無論是工業界還是學術界,都已經認可這樣一個趨勢 。(雷鋒網)