作爲一名阿里老兵,楊皓然早在 2010 年即加入阿里雲,曾深度參與阿里雲飛天分佈式系統研發和產品迭代的全過程。如今,他是阿里雲 Serverless 負責人。Serverless 有哪些典型的應用場景?Serverless 在研發效能上可以發揮怎樣的作用?Serverless 在阿里內部有哪些實踐?它的發展趨勢是什麼?帶着這些問題,InfoQ 記者近日採訪了阿里雲 Serverless 負責人楊皓然。

Serverless 走向繁榮

Serverless 首次出現於 2012 年,中文即“無服務器架構”。它的出現將主機管理、操作系統管理、資源分配、擴容,甚至應用邏輯的全部組件都集成爲服務,開發者可以更直接地將大部分後臺能力作爲一個能力接口來使用。將開發過程中的能力使用改爲服務使用,通過構建或使用一個微服務或微功能來響應事件。

從理念空談到實踐落地,Serverless 開始走向繁榮。

根據 O’Reilly 2019 年 12 月發佈的 Serverless 使用調研報告顯示,已有 40% 的受訪者所在的組織採用了 Serverless,並且使用 Serverless 技術的行業也十分廣泛。尤其值得關注的是,有超過 50% 的受訪者在一至三年內採用 Serverless,而 15% 的受訪者在三年前就已經開始使用 Serverless。

在楊皓然看來,“Serverless 的繁榮”是必然的:

  1. 首先,從用戶需求角度看,在數字化轉型時代,企業面臨巨大的競爭壓力和不確定性,“產品 time-to-market 的能力比任何時候都重要”。
  2. 其次,從技術發展的趨勢看,雲的產品體系及其生態正在迅速 Serverles 化。雲服務商在存儲、數據庫、中間件、大數據、AI 等領域提供了大量全託管、Serverless 形態的雲服務。同時,API 經濟也驅使開發者提供了大量 Serverless 形態的 API 後端服務。

楊皓然說,“在這樣的背景下,Serverless 計算應運而生,藉助雲的 Serverless 產品體系的能力,屏蔽基礎設施的複雜度,幫助用戶以搭積木的方式構建彈性、可靠、低成本的系統或應用。”

Serverless 的優勢在於,它將同質化的、負擔繁重的基於服務器等基礎設施的開發和運維等工作從應用開發中移除,讓用戶聚焦於業務創新。相比傳統的開發模式,Serverless 模式基於大量成熟的雲服務能力構建應用,客戶的決策點更少,實施複雜度更低。

因此,對企業而言,Serverless 架構有着巨大的應用潛力。楊皓然稱,“隨着雲產品的完善,產品的集成和被集成能力的加強,軟件交付流程自動化能力的提高,我們相信在 Serverless 架構下,企業的敏捷性有 10 倍提升的潛力。”

此外,Serverless 還能幫助用戶大幅度提升資源利用率,降低成本,並實現更好的可靠性。

不過,他也坦然指出:

Serverless 最大的挑戰在於工具鏈不夠成熟,產品限制較多和適用場景不夠廣泛。但是,這些問題會隨着產品能力的提升而不斷改善。在垂直領域,比如前端全棧場景,已經出現針對 Serverless 架構優化的應用框架,進一步降低用戶的使用門檻,提高研發效率。

Serverless 的典型應用場景

1. 小程序 /Web/Mobile/API 後端服務

在小程序 /Web/Mobile/API 場景中,業務邏輯複雜多變,迭代上線速度要求高,並且這類在線應用資源利用率通常小於 30%,尤其是小程序等長尾應用,資源利用率更是低於 10%。Serverless 計算的免運維、按需付費的特點非常適合構建小程序 /Web/Mobile/API 後端系統,通過預留計算資源 + 實時自動伸縮,開發者能夠快速構建延時穩定、能承載高頻訪問的在線應用。

據楊皓然介紹,在阿里內部,使用 Serverless 構建後端服務是落地最多的場景,包括前端全棧領域的 Serverless For Frontends、機器學習算法服務、小程序平臺實現等等。

2. 執行大規模批處理任務

典型的離線任務批處理任務系統,例如大規模音視頻文件轉碼服務,包含計算資源管理、任務優先級調度、任務編排、任務可靠執行、任務數據可視化等一系列功能。如果從機器或容器層次開始構建,用戶通常使用消息隊列進行任務信息的持久化和計算資源的分配,使用 K8s 等容器編排系統實現資源的伸縮和容錯,自動搭建或集成監控報警系統。

如果任務涉及多個步驟,還需要整合工作流服務實現可靠步驟執行,而通過 Serverless 計算平臺,用戶只需要專注於實現任務處理邏輯。同時,Serverless 計算的極致彈性能很好地滿足突發任務對算力的需求。

3. 基於事件驅動架構的在線應用和離線數據處理

Serverless 計算服務通過事件驅動方式廣泛的與雲端各種類型服務集成,用戶無需管理服務器等基礎設施和編寫集成多個服務的“膠水代碼”,輕鬆構建松耦合、分佈式的事件驅動架構的應用。

以阿里雲函數計算爲例,通過 API 網關和函數計算的集成,用戶可以快速實現 API 後端服務。通過對象存儲和函數計算的事件集成,函數能實時響應對象創建、刪除等事件,實現以對象存儲爲中心的大規模數據處理。通過消息中間件和函數計算的事件集成,用戶能快速實現海量消息的處理。通過和阿里雲 EventBridge 的集成,無論是一方雲服務,還是三方的 SaaS 服務,或者是用戶自建的系統,所有的事件都可以快速便捷的被函數計算處理。

4. 運維自動化

通過定時觸發器,用戶能夠用函數快速實現定時任務,而無需管理執行任務的底層服務器。通過雲監控觸發器,用戶可以接收 ECS 重啓 / 宕機、OSS 對象存儲流控等 IaaS 層服務的運維事件,並自動觸發函數處理。

Serverless 對研發效能的變革和創新

Serverless 爲用戶提供了一種新的應用構建方式。基於大量成熟雲服務,用戶可以像搭積木一樣構建彈性高可用的應用。比如,藉助對象存儲和函數計算的集成,用戶能快速實現大規模數據的並行處理,而無需從頭構建和運維底層計算和存儲平臺,從而大大減少了研發人員的心智負擔,提高效率。

此外, Serverless 計算很好地支撐了“基礎設施即代碼”的模式,提供了大量配套工具,讓軟件交付流水線的每個環節都高度自動化,幫助開發人員能夠聚焦更具創新性的工作,提高研發效能。

Serverless 在阿里內部的實踐

據楊皓然介紹,阿里目前已經在前端全棧、大規模批處理任務執行、機器學習算法服務、運維自動化等領域廣泛採用 Serverless 架構,成本和研發效能收益明顯。

前端全棧領域

阿里提出 SFF(Serverless For Frontends)架構。SFF 可以利用 Serverless 的彈性擴縮容能力,減少研發對基礎設施和運維的關注。對前端開發者而言,他們只需寫幾個函數即可實現後端業務邏輯,推動業務快速上線。

以淘寶爲例,淘寶的內容導購頻道使用 SFF 架構平穩支撐雙十一大促。此前,導購業務面臨的問題有兩個:

一是導購業務更新迭代頻繁,每次更新後都需要前後端同學的共同配合,這就帶來很大的 溝通成本 ;二是導購頻道承載淘寶業務核心鏈路流量,每次大促前都要提前預留大量計算資源,帶來很大的 運維代價

淘寶使用 SFF 架構後,頻道的業務邏輯由函數承接,每個業務對應獨立的入口函數,函數調用下層中間件獲取數據,通過數據組裝與裁剪計算業務數據,並返回給前端。Serverless 彈性免運維的特性讓前端工程師有能力獨立負責整條業務鏈路,全程不需要後端工程師參與,降低了前後端的聯調成本,消除了運維代價。

據悉,淘寶在使用 SFF 架構後,項目人力節省 50%,研發效能提升 40%。

楊皓然稱,“阿里巴巴經濟體前端委員會也在積極探索針對 Serverless 優化的新框架、新工具,增強的 Nodejs 運行時等,推動更多業務場景落地。今年,Serverless 無疑將成爲前端全棧領域的熱點。”

除了前端全棧領域,阿里內部還大量使用 Serverless 架構實現負載有明顯波峯波谷的計算密集型應用,包括音視頻處理、基於 headless chrome 的前端自動化測試等,“每天的資源用量達到數萬核小時規模”。

此外,阿里雲數據庫自治服務(DAS)要完成幾十萬數據庫實例的指標分析和預測,對資源的彈性和可靠性有極高的要求。它使用函數計算運行在線和離線的機器學習算法應用,能夠輕鬆應對流量洪峯。而開發人員專注於算法的設計、實現和調優,大幅提高產品的迭代速度。

針對 Serverless 的發展,楊皓然認爲:Serverless 近年來一直在高速發展,呈現出越來越大的影響力。同時,主流的雲服務商也在不斷豐富雲產品體系,提高更好的開發工具、更高效的應用交付流水線、更好的可觀測性和更細膩的產品間集成。

Serverless 的未來發展

在談到 Serverless 的發展趨勢,楊皓然提到了四個方面:

1.Serverless 將無處不在

任何足夠複雜的技術方案都將被實現爲全託管、Serverless 化的後端服務。對於任何以 API 作爲功能透出方式的平臺型產品或組織,例如釘釘、微信、滴滴等,Serverless 都將是其平臺戰略中最重要的部分。

2.Serverless 將和容器生態有更加緊密的融合

容器在應用的可移植性和交付流程敏捷性上實現了顛覆式創新,它是現代應用構建和交付的一次重要變革。當今,全世界的開發人員都習慣將容器作爲應用交付和分發的方式。圍繞容器,已經有了完整的應用交付工具鏈。未來,容器鏡像也將成爲函數計算等更多 Serverless 應用的分發方式,容器龐大的工具生態和 Serverless 免運維、極致彈性結合在一起,爲用戶帶來全新的體驗。

3.Serverless 將通過事件驅動的方式連接雲及其生態中的一切

無論是用戶自己的應用,還是合作伙伴的服務;無論是 on-premise 環境,還是公有云,所有的事件都能以 Serverless 的方式處理。雲服務及其生態將更緊密的連接在一起,成爲用戶構建彈性高可用應用的基石。

4.Serverless 計算將持續提高計算密度,實現最佳的性能功耗比和性能價格比

Serverless 計算平臺一方面要求最高的安全性和最小的資源開銷,魚與熊掌必須兼得;另一方面要保持對原有程序執行方式的兼容,比如支持任意二進制文件,這使得適用於特定語言 VM 的方案不可行。因此 AWS Firecracker,Google gVisor 這樣新的輕量虛擬化技術應運而生。以 AWS Firecracker 爲例,通過對設備模型的裁剪和 kernel 加載流程的優化,實現了百毫秒的啓動速度和極小的內存開銷。

實現最佳性能功耗比和性能價格比的另一個重要方向是支持異構硬件。長期以來,X86 處理器的性能越來越難以提升。而在 AI 等對算力要求極高的場景,GPU、FPGA、TPU(Tensor Processing Units) 等架構的處理器的計算效率更具優勢。隨着異構硬件虛擬化、資源池化、異構資源調度、應用框架支持的成熟,異構硬件的算力也能通過 Serverless 的方式釋放,大幅降低用戶使用門檻。

相關文章