對話開發者:Serverless 落地的困境與破局

作者:阿里雲開發者社區

從 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 是什麼?

2012 年,Serverless 概念正式登上舞臺。2016 年,首屆 Serverless ConF 將這項技術的討論推向高峯。2017 年,阿里雲推出國內首個重磅 Serverless 產品服務--函數計算 FC(Function Compute),讓開發者只需要專注於業務邏輯開發,而不是把大量精力花在服務器等基礎設施的管理上,從而快速兌現業務價值。

2018 年至 2019 年,伯克利連續發表兩篇論文對 Serverless 做出定義,預測 Serverless 將會成爲雲時代的最重要的計算範式,Serverless 獲得了越來越多的關注。

Serverless 是一個非常廣義的概念,並不侷限於計算。一般同時滿足以下條件可稱爲 Serverless 服務。

第一、全託管服務。 意味着企業使用抽象的服務化接口,而不是直接面對底層資源,也就沒有安裝、配置、維護或者更新軟硬件的負擔。全託管服務通常也提供了內置的容錯、安全、可觀測能力,用戶通常不需要再重新構建這些能力。

第二、自適應彈性。 意味着服務能夠根據負載大小自動彈性伸縮,不但讓系統能夠支撐快速發展的業務,也大大提升了資源使用效率。

第三、按實際用量付費。 意味着只需根據實際的執行時間、流量或調用次數付費,降低了成本。

因此 Serverless 服務核心價值在於儘可能消除客戶非功能性代碼開發,簡化應用基礎設施管理的工作,從而實現研發效率的飛躍。

上海慧遊文化 CEO 宋傑親歷首屆 Serverless Conf 現場,在他看來:Serverless 是一項非常顛覆的技術和解決方案,它和之前出現的所有技術創新都有本質區別,因爲它牽涉到的核心問題是商業模式的改變。 “類似於機器語言到高級語言的飛躍,一下子就簡化了做企業級應用的程序員要關心的問題,複雜度大大降低。”

1.jpeg

Serverless 引領下一代應用結構

Serverless 服務契合了研發模式演進的趨勢,過去十年,各大雲廠商都在不斷將產品體系 Serverless 化。

作爲最早推進 Serverless 在中國落地的阿里雲,Serverless 演進的過程,也是雲計算的發展歷程。阿里巴巴研究員、阿里雲智能雲原生應用平臺負責人丁宇在分享中提到,阿里雲是國內最早做雲計算的企業,從 2009 年成立開始,第一階段從資源和 IaaS 開始做起,在這個階段,很多技術被開源並開始大規模流行,包括大數據、AI、中間件等微服務和應用層的技術。

2.jpeg

從雲的角度來看,這時候雲廠商和開源具有非常好的協同關係,於是在雲上出現了很多全託管的雲產品。從企業客戶角度來看,要確保應用在雲上可靠、高效的運行,上雲後的複雜度是非常高的,這時企業進入到想要更好用雲的階段,對於雲的進化來講,也開始向服務化的方式演進,也就是說,雲開始從提供資源逐漸轉變成提供服務。

在這樣的背景下,阿里雲逐漸走向 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 改造成本有適當增加,但一旦改造完成,後續開發效率就會高很多。”

3.jpeg

這就是 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 化,產品和產品之間的集成更加細膩,由點及面,將整個鏈路串聯起來,普惠更多的企業和開發者。”丁宇表示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章