作者 | 阿里雲開發者社群、InfoQ
從 2012 年提出 Serverless 到今年 2022 年剛好十年。
過去十年,上雲是確定性趨勢,在這個階段企業一開始的關注點在於如何實現平滑上雲。隨著越來越多的企業上雲,甚至很多企業系統第一天就是在雲上構建,企業的核心關注點轉變為如何更好地利用雲的能力。
在新的階段中,雲服務的角色也從單純的提供資源,變成了企業構建應用的新平臺,幫助企業儘可能減小機器運維等低價值重複工作,聚焦於業務的創新。雲廠商的核心能力轉變為企業提供 Serverless 雲服務,消除用雲複雜度,用更簡單的方式提高資源利用率,幫助企業降低成本。
這幾年,不只是雲廠商,大量的開源商業產品也採用了 Serverless 模式,包括Confluent Cloud、MongoDB Atlas、Snowflake、Databricks 等。
隨著雲廠商在儲存、計算、中介軟體、大資料等領域推出越來越多的 Serverless 服務,雲產品體系逐漸 Serverless 化,也推動著 Serverless 架構從概念進入到大規模生產落地階段。2021 年 DataDog 釋出 Serverless 研究報告,資料表明,從雲原生初創公司到大型企業都在關注 Serverless,Serverless 生態已經超越了 FaaS,包含數十種服務,可以幫助開發人員構建更快、更動態的應用程式。
Serverless 奇點己來,所謂奇點,是由平穩發展轉向高速發展的轉折點,這也意味著 Serverless 在全行業的落地將全面爆發。
但與此同時,我們也看到,一方面是企業關注度不斷上升、行業開始落地,另一方面,企業和開發者也對 Serverless 存在一些困惑和顧慮。
阿里雲聯合 InfoQ 收集了一些企業和開發者對現階段 Serverless 的反饋,並於 12 月 16 日舉辦了雲原生 Serverless 開發者評測局線下沙龍,邀請了阿里巴巴研究員、阿里雲智慧雲原生應用平臺負責人丁宇、阿里雲 Serverless 研發團隊、上海慧遊文化、德基網路科技有限公司、南瓜電影、寶馬等企業技術負責人,一起探討 All on Serverless 過程中的挑戰和經驗,以期給更多落地 Serverless 的企業提供參考和借鑑。本文擷取沙龍上的精彩發言。
完整版影片見阿里云云原生影片號↓
Serverless 到底是什麼?
在談論 Serverless 之前,我們先了解下,Serverless 是什麼?云云原生
,贊17
2012 年,Serverless 概念正式登上舞臺。2016 年,首屆 Serverless ConF 將這項技術的討論推向高峰。2017 年,阿里雲推出國內首個重磅 Serverless 產品服務--函式計算 FC(Function Compute),讓開發者只需要專注於業務邏輯開發,而不是把大量精力花在伺服器等基礎設施的管理上,從而快速兌現業務價值。
2018 年至 2019 年,伯克利連續發表兩篇論文對 Serverless 做出定義,預測 Serverless 將會成為雲時代的最重要的計算正規化,Serverless 獲得了越來越多的關注。
Serverless 是一個非常廣義的概念,並不侷限於計算。一般同時滿足以下條件可稱為 Serverless 服務。
第一、全託管服務。意味著企業使用抽象的服務化介面,而不是直接面對底層資源,也就沒有安裝、配置、維護或者更新軟硬體的負擔。全託管服務通常也提供了內建的容錯、安全、可觀測能力,使用者通常不需要再重新構建這些能力。
第二、自適應彈性。意味著服務能夠根據負載大小自動彈性伸縮,不但讓系統能夠支撐快速發展的業務,也大大提升了資源使用效率。
第三、按實際用量付費。意味著只需根據實際的執行時間、流量或呼叫次數付費,降低了成本。
因此 Serverless 服務核心價值在於儘可能消除客戶非功能性程式碼開發,簡化應用基礎設施管理的工作,從而實現研發效率的飛躍。
上海慧遊文化 CEO 宋傑親歷首屆 Serverless Conf 現場,在他看來:Serverless 是一項非常顛覆的技術和解決方案,它和之前出現的所有技術創新都有本質區別,因為它牽涉到的核心問題是商業模式的改變。“類似於機器語言到高階語言的飛躍,一下子就簡化了做企業級應用的程式設計師要關心的問題,複雜度大大降低。”
Serverless 引領下一代應用架構
Serverless 服務契合了研發模式演進的趨勢,過去十年,各大雲廠商都在不斷將產品體系 Serverless 化。
作為最早推進 Serverless 在中國落地的阿里雲,Serverless 演進的過程,也是雲端計算的發展歷程。阿里巴巴研究員、阿里雲智慧雲原生應用平臺負責人丁宇在分享中提到,阿里雲是國內最早做雲端計算的企業,從 2009 年成立開始,第一階段從資源和 IaaS 開始做起,在這個階段,很多技術被開源並開始大規模流行,包括大資料、AI、中介軟體等微服務和應用層的技術。
從雲的角度來看,這時候雲廠商和開源具有非常好的協同關係,於是在雲上出現了很多全託管的雲產品。從企業客戶角度來看,要確保應用在雲上可靠、高效的執行,上雲後的複雜度是非常高的,這時企業進入到想要更好用雲的階段,對於雲的進化來講,也開始向服務化的方式演進,也就是說,雲開始從提供資源逐漸轉變成提供服務。
在這樣的背景下,阿里雲逐漸走向 Serverless 服務形態,包括誕生諸如計算類、儲存類、資料類、資料庫類、大資料類甚至音影片類等 Serverless 的產品。
阿里雲 Serverless 演進和實踐
2017 年,阿里雲推出 FaaS 產品函式計算 FC,這是一種以事件驅動為核心的全託管計算服務,使用者只需編寫程式碼並上傳,函式計算就會自動準備好計算資源,以彈性、可靠的方式執行程式碼,並提供完整的可觀測能力,大幅簡化開發運維過程。第二年阿里雲又推出了 Serverless 應用引擎 SAE,SAE 是業內首款面向應用的 Serverless PaaS 平臺,遮蔽底層 IaaS 和 Kubernetes 的複雜度,提供了零程式碼改造、成本更優、效率更高的應用託管方案,幫使用者實現單體 Web 應用、微服務應用以及定時任務的 Serverless 化。
同年領先業界推出 Serverless 容器服務 ASK,基於彈性容器例項 ECI(Elastic Container Instance),實現 1min 擴容 2000 個 pod,降低了 Kubernetes 使用門檻,讓使用者更專注應用程式,而非管理底層基礎設施。
2020 年阿里雲開源 Serverless Devs,成為業內首個支援主流 Serverless 服務/框架的雲原生全生命週期管理的平臺。2022 年 9 月該專案正式進入 CNCF Sandbox,也成為業內首個入選的 Serverless 工具專案。
Serverless 將雲端計算的粒度變得很細,企業選擇是否採用 Serverless 產品不是單純的軟體問題,Serverless 背後需要有足夠大的計算機叢集和產品體系能力,才能保證其彈性滿足企業複雜的業務需求 。阿里雲提供了從容器到應用等各個層次的 Serverless 產品組合,並且堅定的推進產品體系的全面 Serverless 化。
目前阿里雲已有 20 餘款核心產品實現了 Serverless 化,阿里雲函式計算 FC 日呼叫次數超過 200 億次,有效支撐歷年雙 11 百萬 QPS 洪峰,業務增速超過 300%,整體規模位居國內首位,經歷超複雜場景的錘鍊。Serverless 計算產品凝聚了阿里雲在雲原生領域的技術沉澱和最佳實踐經驗。
除了產品形態的改變之外,Serverless 同樣帶來了軟體研發正規化的改變。Serverless 雲產品是模組化、可組合、高可用的,他們是構建應用的要素。透過 Serverless 計算組合多個雲產品就可以快速構建應用。
Serverless 為基礎,研發方式升級到組裝式研發。組裝式研發徹底顛覆了原有的軟體研發方式,大幅提升研發效率,靈活應對業務挑戰。根據權威機構調研統計,組裝式研發相比傳統模式,可為研發提效 50% 以上。
德基網路科技有限公司大前端技術負責人劉曉偉對 Serverless 的降本提效效果表示肯定。他說:“過去一年我們在做前端的 Serverless 升級改造。從支出成本角度來講降低很多;從服務角度來看的話,需要分為幾個方面,單一應用切成 Serverless 改造成本有適當增加,但一旦改造完成,後續開發效率就會高很多。”
這就是 Serverless 帶來的價值:真正讓開發者迴歸業務本身,讓企業做得更少而收穫更多。
Serverless 推進中的困境與破局
對於目前的 Serverless 來說,價值已經不言自明,當然,在規模化落地的道路上,Serverless 也會遇到一些阻力。企業開發者在是否採用這一問題上仍有猶豫和顧慮,認同技術趨勢與實際應用落地之間存在一道無形的鴻溝。
丁宇認為:這就是一個技術發展過程中常見的現象,是符合技術發展規律的。Serverless 規模化落地需要一個契機,而這個契機已經到來。當前企業及開發者擁抱雲端計算更加積極,雲已經成了一個創新平臺。同時,更多產品具備了雲特性,如自適應彈性、免運維等。從 Serverless 本身來講,因為它足夠先進,不是簡單地替代網際網路分散式架構,而是對網際網路分散式架構的升級,從而形成了自己的一套體系,能夠為企業帶來很多顯而易見的變化。
由於處在不同的時期,企業會有自己不同的選擇,隨著 Serverless 技術發展得更成熟,相信會有更多的企業願意擁抱 Serverless,也許像網際網路分散式架構一樣成為主流架構還需要 5-10 年的時間,但是先行者往往是會拿到第一波紅利的,這會讓企業更具有競爭力。
目前,Java 語言仍佔據國內後端開發主導地位,而 Java 語言的冷啟動特性在函式計算上的並不友好。冷啟動時長使得使用者很難享受到 FC 毫秒計費,秒級擴容等特性帶來的技術紅利。
不久前 AWS 釋出了消除冷啟動的產品 SnapStart,使得冷啟動再次成為熱議話題。
冷啟動包含了系統冷啟動和應用冷啟動兩個部分。對於系統冷啟動,阿里雲在硬體、MicroVM、作業系統、語言執行時等進行了全棧最佳化。阿里雲函式計算 FC 在系統冷啟動階段的效能指標業界領先。而應用冷啟動和使用者選擇的語言以及程式邏輯本身有關係。比如 Java 類應用,啟動時間通常遠遠高於 Node.js、Python、Go 等語言,阿里雲內部一直在打磨這類技術,但實際應用會比較謹慎。因為 SnapStart 這類技術需要客戶的應用程式對 SnapStart 進行適配,否則會出現程式正確性問題。今天 AWS 支援了這個技術,做了大量基礎庫、三方庫的適配,雖然簡化了客戶的複雜度,但最終仍然需要客戶自己保證正確性。因此阿里雲提供了一些保證相容性的方案,希望透過持續最佳化儘可能減少使用者的適配負擔。
目前,阿里雲主要透過預留和閒置處理冷啟動問題,另外,今年雲棲大會函式計算 FC 釋出了 vCPU 和記憶體解綁的策略,客戶可以更精細化管理資源配比,資源利用率再一次得到最佳化,成本會進一步降低。
除此之外,廠商鎖定(vendor lockin)也是阻礙 Serverless 規模化的一大困擾。對此,阿里雲也有解法。
首先,阿里雲已開源了 Serverless Devs,Serverless Devs 是一個開源開放的 Serverless 開發者平臺,致力於為開發者提供強大的工具鏈體系。得益於功能的可插拔特性,Serverless Devs 可以非常簡單的支援不同雲廠商的專案部署,或者一鍵部署到不同雲平臺。
其次, Serverless 架構的理念本身是重塑應用的研發模式,雲平臺提供完整的 Serverless 產品體系,雲平臺提供一整套 Serverless 化的 BaaS 以及提供更為標準化、流程化的橋接。而 FaaS 更細粒度的業務處理拆分可以讓業務程式碼開發更加簡單,進而讓企業多雲方式的構建更加簡單。
最後,企業採用多雲方式,也不代表所有的業務都要進行多雲,平均地分佈在各朵雲上,很多時候是在差異化的能力上選擇最好的雲,只有選擇最合適的雲、深度用雲才能真正發揮雲廠商的優勢,獲得更好的雲資源。綜上所述,如何做無鎖定,廠商開放規範,不做限制,海納百川,在一定程度上就是無廠商鎖定。
Serverless 未來的暢想與規劃
除了技術需要通關,思維的轉變也是橫亙在開發者面前的一道鴻溝。
Serverless 從技術創新走到應用再走到普及,對開發者而言最大挑戰是系統設計模式和編碼習慣的改變。
不少開發者對 Serverless 架構的學習都有疑問,到底是用原有開發正規化還是需要學習新的正規化?對於這個擔憂,慧遊文化 CEO 宋傑認為:“Serverless 會對傳統開發模式和邏輯實現顛覆,對成熟的開發人員而言挑戰可能更大,學習成本方面,對於經驗豐富的程式設計師來說,進入雲原生世界,最大的障礙不是‘學習’,而是‘遺忘’。”
雲原生技術打破了原有的限制,CPU、硬碟、記憶體沒有大小限制。對於越是經驗豐富的程式設計師來說,思維的轉換就越是困難。“程式設計師要需要不斷學習 Serverless,才能夠克服固有的思維模式。希望阿里雲能夠提供更多的培訓幫助大家實現思維定式的轉換。”宋傑表示,這也是他對阿里雲的期待。
除了提供更加全面豐富的 Serverless 產品與方案,作為 Serverless 中國的先行者,阿里雲將持續擁抱開源,為 Serverless 使用者提供多樣化、可選擇、更靈活的方式,提升開發者的幸福感。
“未來阿里雲整個產品體系都將 Serverless 化,產品和產品之間的整合更加細膩,由點及面,將整個鏈路串聯起來,普惠更多的企業和開發者。”丁宇表示。