专访阿里云 Serverless 负责人:无服务器不会让后端失业
來源|阿里巴巴云原生
2012 年,云基礎設施服務提供商 Iron.io 的副總裁 Ken 談到軟件開發行業的未來,首次提出了 Serverless 的概念,為云中運行的應用程序描述了一種全新的系統體系架構。此后,以 AWS 為代表的云服務廠商將 Serverless 概念逐步落地,陸續推出了基于 Serverless 的 FaaS(函數即服務)產品。經過幾年的發展,Serverless 架構已被業內認為是引領云原生下一個十年的發展潮流。
據 Gartner 報告,2020 年全球已有 20% 的企業采用 Serverless 技術部署,Serverless 從底層進行技術變革計算資源的形態,為企業的軟件架構設計和應用服務部署引入創新的技術設計思路。
盡管如此,國內的一些企業和開發者在面對 Serverless 時依然持觀望態度。一方面是相關技術在國內起步較晚,部分開發者對新技術的接受度較低;另一方面,國內的 Serverless 生態建設較為落后,市面上相關的工具鏈并不完善,這導致開發和部署難度大、成本高。
近日,阿里云 Serverless 技術團隊宣布開源?Serverless Devs?平臺,為開發者提供了一套 Serverless 工具鏈體系。據介紹,通過該平臺,開發者可以一鍵體驗多云 Serverless 產品,快速部署 Serverless 項目。
為了進一步了解 Serverless Devs 項目的特性,以及 Serverless、微服務等云原生技術生態在國內的發展趨勢,開源中國邀請到了阿里云 Serverless 研發負責人楊皓然(不瞋),阿里云 Serverless 產品經理、Serverless Devs 項目發起人江昱,與我們分享了 Serverless 項目的細節與國內 Serverless 生態的情況。
以下為采訪原文:
1. 請簡要介紹一下阿里云 Serverless Devs 項目的技術團隊成員構成。
<江昱>:團隊是由阿里云智能云原生中間件前端負責人帶隊,聯合阿里云智能云原生函數計算團隊的多名技術專家,以及數名社區愛好者。通過開源思路,進行項目建設,耗時 120 天。
Serverless Devs 的技術團隊核心研發人員主要包括:
-
寒斜:阿里云智能云原生中間件前端負責人, 2016 年加入阿里中間件從事云產品企業控制臺研發工作,目前帶隊負責中間件 20 多款云產品的前端研發工作,主要技術棧為大前端通用技術包括 nodejs / typescript / react / electron / reactnative 等對前端研發效能提升,前端數字化體驗管理體系建設有多年的實踐經驗,目前專注在 Serverless 開發者工具鏈的建設,是云原生 Serverless Dev Tools(S) 研發負責人之一,核心貢獻了 S 啟動器解析內核,S/core 核心包,主導了 S/gui 桌面工具研發工作。關注前端最新技術動態,關注云原生技術對前端群體的影響,致力于向前端群體推廣普及云原生理念。
-
西流:阿里云智能云原生函數計算技術專家,負責阿里云函數計算產品功能開發:runtime 開發、事件源集成以及企業級 Sereverless 解決方案落地等,目前專注在 Serverless 開發者工具鏈的建設,是云原生 Serverless Dev Tools 研發負責人之一,主導了 S/fc 組件的開發工作。關注 Serverless 最新技術動態以及在企業級解決方案的落地,致力于推動 Serverless 在開發者群體的流行。
-
納海:阿里云智能云原生 PaaS 產品高級研發工程師,參與企業級分布式應用服務 EDAS、應用配置管理 ACM 和 Web 應用托管服務等多款企業級微服務產品研發,同時為 Alibaba Cloud Toolkit 和 Serverless Dev Tools 創始人之一,持續關注微服務、PaaS 和 Serverless 等云原生領域發展,致力于構建云原生領域的開發者工具。
2. 目前使用阿里云 Serverless 平臺服務的具體落地場景有哪些?
<不瞋>:Serverless 作為基礎研發底座,被越來越多的企業所接受,并應用于業務實踐中。除了互聯網企業最早“嘗鮮”之外,傳統企業也在探索大規模使用 Serverless。
以世紀聯華為例,2019 年的 雙11,函數計算 FC 幫助世紀聯華順利渡過了大促。2020 年 雙11,世紀聯華全面遷移到函數計算 2.0,抗住了超過去年 230% 的業務峰值,并且研發效率交付提效超過 30%,彈性資源成本減少 40% 以上。如今,阿里整個經濟體都在實踐 Serverless,包括淘寶、天貓、支付寶、釘釘、飛豬、閑魚、語雀等,并將 Serverless 的應用場景擴展到前端全棧、小程序、微服務、新零售、游戲互娛等領域。具體場景如下:
- 小程序 / Web / Mobile / API 后端服務
在小程序、Web/Moible 應用、API 服務等場景中,業務邏輯復雜多變,迭代上線速度要求高,而且這類在線應用,資源利用率通常小于 30%,尤其是小程序等長尾應用,資源利用率更是低于 10%。Serverless 計算的免運維,按需付費的特點非常適合構建小程序 / Web / Mobile / API 后端系統,通過預留計算資源+實時自動伸縮,開發者能夠快速構建延時穩定、能承載高頻訪問的在線應用。在阿里內部,使用 Serverless 構建后端服務是落地最多的場景,包括前端全棧領域的 Serverless For Frontends,機器學習算法服務,小程序平臺實現等等。
- 大規模批處理任務處理
典型的離線任務批處理系統,例如大規模音視頻文件轉碼服務,包含計算資源管理、任務優先級調度、任務編排、任務可靠執行、任務數據可視化等一系列功能。如果從機器或者容器層次開始構建,用戶通常使用消息隊列進行任務信息的持久化和計算資源的分配,使用 K8s 等容器編排系統實現資源的伸縮和容錯,自行搭建或集成監控報警系統。如果任務涉及多個步驟,還需要整合工作流服務實現可靠步驟執行,而通過 Serverless 計算平臺,用戶只需要專注于實現任務處理邏輯,而且 Serverless 計算的極致彈性能很好的滿足突發任務對算力的需求。
- 基于事件驅動架構的在線應用和離線數據處理
典型的 Serverless 計算服務通過事件驅動的方式廣泛的與云端各種類型服務集成,用戶無需管理服務器等基礎設施和編寫集成多個服務的膠水代碼,輕松構建松耦合、分布式的事件驅動架構的應用。
以阿里云函數計算為例,通過 API 網關和函數計算的集成,用戶可以快速實現 API 后端服務。通過對象存儲和函數計算的事件集成,函數能實時響應對象創建、刪除等事件,實現以對象存儲為中心的大規模數據處理。通過消息中間件和函數計算的事件集成,用戶能快速實現海量消息的處理。通過和阿里云 EventBridge 的集成,無論是一方云服務,還是三方的 SaaS 服務,或者是用戶自建的系統,所有的事件都可以快速便捷的被函數計算處理。
- 運維自動化
通過定時觸發器,用戶能夠用函數快速實現定時任務,而無須管理執行任務的底層服務器。通過云監控觸發器,用戶可以接收 ECS 重啟/宕機,OSS 對象存儲流控等 IaaS 層服務的運維事件,并自動觸發函數處理。
具體案例請參考:?http://case-study.functioncompute.com/case-study.html
3. Serverless Dev 項目誕生的契機和愿景是什么?Serverless Dev 與阿里云此前開源的另一個 Serverless 項目 Midway 是否有聯系?
<不瞋>:首先我們在服務集團內外的用戶時看到,工具鏈是 Serverless 被用戶接受的最大障礙。這主要體現在以下幾方面:
-
在開發和運維 Serverless 應用時,體驗和已有工具或流程是割裂的。對于復雜業務場景的用戶,他們的不同負載通常運行在虛擬機,容器或者 Serverless 等多個平臺上,用戶更希望使用同一套工具和流程,去構建、部署和監控基于虛擬機,容器或者 Serverless 的應用。
-
用戶希望工具鏈能覆蓋開發、測試、構建、部署、分布、監控等環節,提供閉環的研發運維體驗,而不再需要跳出到各個產品的控制臺,或者要使用多種工具來完成。
-
用戶希望同一套工具鏈,能夠管理阿里云,騰訊云等不同公有云 Serverless 平臺,或者 on-premise 環境的應用。上述問題,導致很多場景下 Serverless 并未大幅提升研發效率。
其次從云原生發展的趨勢來看,開發者在構建云原生應用時,要解決的問題的范圍和復雜度在不斷增加。比如在構建應用時,開發者仍然需要花大量精力來處理和業務邏輯無關的細節問題,包括資源的創建和刪除,權限管理等等;對于企業級客戶,除了資源管控外,還需要做到安全合規,比如怎么保證敏感數據沒有被錯誤的賦予外部訪問權限,VM 沒有被禁止訪問公網等等。我們相信在工具層面,將有巨大的創新空間。
因此從實際用戶需求和未來趨勢兩個方面出發,我們希望為開發者打造一條工具鏈,能幫助用戶完整的解決應用開發和運維環節的問題,將 dev 和 ops 真正串聯起來,提升研發效率。我們希望這個工具做到良好的 “complexity scalability”,當問題簡單時,能夠快速上手;當問題變得復雜時,同一套工具和流程仍然能勝任。
?
<江昱>:雖然說 Serverless 已經發展很久了,也不是什么新鮮的概念了,但是 Serverless 的工具鏈還蠻匱乏的。我們不僅意識到了這個問題,也和很多用戶進行過深度溝通,對用戶在使用 Serverless 的時候遇到的問題也是非常關注,最終我們決定要做一個“站在開發者角度的 Serverless 工具鏈體系”,其目的是可以讓開發者像使用手機一樣使用 Serverless,可以給大家更簡單、方便、快捷的上手體驗、實踐操作,并且可以在 Serverless 項目的全生命周期發揮作用。至于和 Midway 的聯系,我覺得是非常緊密的,因為 Serverless Devs 更多是一個工具層的產品,而 Midway 則是一個框架層的產品,二者互為補助,毫不沖突。
4. 我們看到 Serverless Devs 的定位是 “首個支持主流 Serverless 服務/框架的云原生全生命周期管理”的平臺,它的首創性體現在哪些方面?與業內已有的 Serverless 服務平臺相比有何優勢?
<不瞋>:對比 Serverless Framework?等流行的工具,Serverless Devs 有幾個明顯的差別:
-
Serverless Devs 致力于解決 build、deploy、release、monitoring/trouble shooting 等應用開發和運維的全流程問題,為用戶提供端對端的開發運維閉環體驗,提升研發效率。其他工具主要是解決單個環節的問題。
-
Serverless 應用不只是依賴計算類產品,還依賴存儲、中間件等各種云產品,需要工具能夠管理豐富的云產品。Serverless Devs 未來將支持阿里云、騰訊云、AWS、Azure 和 Google 等所有主流云廠商的云產品,以及 K8s 生態的應用。和 Serverless Framework 等工具相比,在資源管理的深度和廣度上更有優勢。
-
Serverless Devs 開源、開放,通過基于高級語言抽象能力的組件機制,開發者能夠以 simple、higher level、composable 的方式構建復雜的云原生應用。
5. Serverless Devs 開源了哪些部分?選擇開源的目的是什么?
<江昱>:Serverless Devs 開源了兩個主要部分:命令行工具與應用中心。Serverless 其實是一個開發者驅動性很強的領域,我們將整個項目開源,將整個思路開放,其主要目的是想要站在開發者角度,去為開發者提供開發者所需要的工具,讓開發者們自己定義和建設 Serverless 工具鏈,我們也希望通過這種形式,可以和更多的開發者有交集,接觸到更多的 Serverless 愛好者,和大家一起 Serverless。
6. 如果開發者在 Serverless Devs 上部署了自己的應用,之后還可以將該應用轉移到其他平臺上嗎?比如轉移到其他云服務平臺或本地服務器,轉移過程是否便捷?
<不瞋>:多云的應用遷移涉及到很多的因素,除了計算平臺的遷移,還包括數據遷移,配置流程遷移等。Serverless Devs 的設計哲學是幫助開發者用統一的方式 build、deploy、release 容器或 Serverless 應用。無論用戶使用何種語言(nodejs/python/golang/java),何種平臺( K8s/阿里云 Serverless/Google cloud run 等),研發運維的體驗是一致的,因此 Serverless Devs 能夠簡化應用遷移到其他平臺的難度。
7. 有一種說法是 “Serverless 會阻礙開源服務的創新”,因為目前很多流行的開源軟件還不能大規模地部署在 Faas 平臺上,畢竟目前主要的開源軟件并不是針對 Serverless 執行環境的,特別是數據系統。未來的趨勢是創造更多 Serverless 原生開源軟件,還是把一些已有的主要開源軟件遷移到 Serverless 架構呢?
<不瞋>:“Serverless 會阻礙開源服務的創新” 這個觀點來自于 UC Berkeley 的論文 《Serverless Computing: One Step Forward, Two Steps Back》,論文中的談及的 Serverless 對開源服務創新的阻礙是指當下 Serverless 的局限性。半年后他們發表了另一篇論文:《Cloud Programming Simplified: A Berkeley View on Serverless Computing》,預言 Serverless 面臨的挑戰是可以解決的,會成為云計算的默認范式。當前 Serverless 已經成為學術界的研究熱點,從 2017 年開始,每年相關論文數呈 2 倍速增長。
當前學術界/工業界在 Serverless 方面主要研究趨勢:
-
將流行的應用框架 Serverless 化,比如 Serverless 機器學習框架。
-
拓展 Serverless 編程模型,例如 Stateful FaaS,使得 Serverless 計算能夠支撐更多應用場景。
-
在云的每個層面重構,適應高度動態資源使用的 Serverless 應用。在數據中心層面,通過超快的網絡架構實現計算和存儲分離,將 CPU、GPU、FPGA、disk,甚至內存進行池化,從而獲得更好的彈性和資源利用率;在 Serverless 計算平臺層面,設計為 Serverless 模式高度優化的存儲服務,高 iops、低延時、低成本,使得分布式系統能夠使用 Serverless 的模式構建。
-
性能優化,例如 GPU,FPGA 等異構硬件支持,軟硬協同優化等等。可以看到這些趨勢將推動 Serverless 成為最具創新性的領域。
8. Serverless 架構與一些流行的微服務架構是什么關系?Serverless 是否會取代微服務架構?
<不瞋>:Serverless 和微服務架構不是對立的,而是不同維度的概念。微服務是一種架構模式,而 FaaS 為代表的 Serverless 計算平臺則是實現微服務的一種方式。微服務可以用 FaaS 實現,也可以用 SpringCloud PaaS 平臺, K8s + 容器,或者 VM 實現。
判斷選擇用什么來實現微服務,要從可靠性、成本、性能、工程效率、安全性、系統遷移難度等維度出發,不同的場景有不同的取舍。當下在微服務場景下使用 Serverless 架構,最大的挑戰在于和現有微服務框架兼容,能夠平滑遷移存量應用。為了解決這類問題,阿里云 Serverless 應用引擎應運而生,兼容 SpringCloud、Dubbo 等流行微服務框架,傳統應用平滑遷移,集成 ARMS 等阿里云服務,提供開箱即用的可觀測能力,同時提供定時伸縮,按指標伸縮等彈性能力,讓微服務場景也能享受 Serverless 的紅利。
9. 有網友擔心 Serverless 等云服務的出現會取代很多后端工程師的工作,以后中小型公司似乎只需要雇傭前端業務開發者即可,這種看法是否準確? 能否給一些年輕的后端開發者提供一些發展的建議。
<不瞋>:這種看法是片面的。對于任何一項技術,需要思考它的源起、趨勢、優劣勢,特別是要自己去實踐,才能得出客觀的判斷。Serverless 并不是新技術,阿里云第一個云服務對象存儲 OSS 就是 Serverless 的存儲服務,使用 OSS 并沒有壓縮后端開發者的技術發展空間。下圖是要構建一個彈性高可用的后端系統需要考慮的因素,只有藍色虛線的框才是平臺負責,其他大量內容仍然需要后端開發者設計和實現:
Serverless 計算只是解決了基礎設施管理等最基礎、對用戶最沒有差異化的臟活累活。正如當前已經幾乎沒有開發者會基于匯編語言構建應用,Serverless 也是如此,期望在 cloud programming 時代,為用戶提供高級語言的編程體驗。
Serverless Devs 開源項目:
- Github 地址:https://github.com/serverless-devs
- Gitee 地址:https://gitee.com/organizations/serverless-devs/projects
- Serverless Devs 官網:https://www.serverless-devs.com
嘉賓簡介
總結
以上是生活随笔為你收集整理的专访阿里云 Serverless 负责人:无服务器不会让后端失业的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入解读:KubeVela 与 PaaS
- 下一篇: 「更高更快更稳」,看阿里巴巴如何修炼容器