
作者 | 李國強 阿裡雲資深産品專家
本文整理自《Serverless 技術公開課》。關注“Serverless”公衆号,回複“入門”,即可擷取 Serverless 系列文章 PPT。
今天來講,在 Serverless 這個大領域中,不隻有函數計算這一種産品形态和應用類型,而是面向不同的使用者群體和使用習慣,都有其各自适用的 Serverless 産品。例如面向函數的函數計算、面向應用的 Serverless 應用引擎、面向容器的 Serverless Kubernetes,使用者可以根據自己的使用習慣、使用場景或者應用類型,去選擇使用什麼樣的 Serverless 産品。下面通過本文給大家介紹一下,阿裡雲都有哪些可供大家選擇的 Serverless 産品。
Serverless 産品及分層
衆所周知,最早提出 Serverless 的是 AWS,其在 Serverless 領域的旗艦産品是 function compute。同樣阿裡雲也有函數計算的産品,幫助使用者建構 Serverless 函數。但 Serverless 不僅僅是函數,如下圖所示,其實使用者會期望在應用、容器等層面也能夠享受到 Serverless 的好處,包括按量付費、極緻彈性等,這樣也更符合使用者原有的使用習慣。
在上圖中,大家能夠看到,阿裡雲針對函數、應用和容器都推出了對應的 Serverless 産品,使用者可以針對自己的使用場景選擇不同的産品。
函數計算
1. 函數計算介紹
上圖展示了函數計算的使用方式。從使用者角度,他需要做的隻是編碼,然後把代碼上傳到函數計算中。這個時候還不會産生費用,隻有到被調用的時候才有費用。調用的方式可以是産品提供的 API/SDK,也可以通過一些事件源,比如阿裡雲的 OSS 的事件。比如使用者往 OSS 裡的某一個 bucket 上傳了一個檔案,希望這個檔案被自動處理;比如上傳一個 zip 包,希望能夠自動解壓到另外一個 bucket,這都是很典型的函數場景。
另外,函數計算能夠提供非常好的彈性能力,最終的費用是根據時長和記憶體數進行計費的,如果調用量小的話,隻會有很少的費用。并且它在語言方面也非常豐富,常用的 nodejs、php、python、java 都直接支援。同時提供自定義的運作環境,可以支援任意的可執行的語言。
2. 函數計算典型場景
從使用場景來說,主要有三類:
- Web 應用:可以是各種語言寫的,這種可以使用 Serverless 架構新編寫的程式,也可以是已有的應用。比如小程式後端、或者釋出到 API 市場的 API 後端應用等;
- 對計算能力有很強的彈性訴求的應用:比如 AI 推理、音視訊處理、文檔轉換等;
- 事件驅動型的應用:比如通過其他阿裡雲産品驅動的場景、Web Hook、定時任務等,函數計算已經與很多産品進行了打通,比如對象存儲、表格存儲、定時器、CDN、日志服務、雲監控等,可以非常快速地組裝出一些業務邏輯。
3. 函數計算核心競争力
函數計算對客戶的一個最大的價值,就是能夠讓使用者隻關注自己的業務邏輯開發,完全不需要管理運維,諸如計算資源、網絡設定等都不需要關心。在隔離性上提供 vm 級别的隔離,保證使用者在運作時的資料安全、運作時安全等;在可用性方面預設提供 3az 的高可用架構,保證客戶預設就是高可用的最佳實踐架構;在彈性方面,可以做到毫秒級的彈性效率,滿足客戶突發的流量沖擊;在計費方面也非常靈活,真正按照使用者的請求情況進行收費,也支援對 long run 的應用更友好的預付費模式。
Serverless 應用引擎
1. SAE 概述
SAE 是業内首款面向應用的 Serverless Paas 平台。這個産品以面向應用的視角,幫助使用者在不做任何修改的前提下把存量應用上到雲端。在資源層,使用者不再需要自己管理和運維機器及叢集,隻需要關注自己應用所需要使用的規格以及執行個體數,不再需要關心底層是虛機還是容器。
SAE 從資源層面提供計算資源、彈性、隔離性等能力,讓使用者隻需要關注自己的應用。在應用層,SAE 提供了監控、日志、微服務治理等能力,幫助使用者解決應用可觀測性和治理需求。同時提供網絡配置、流量控制能力,提供了和 CICD 良好的內建,使用者可以使用已有 CICD 部署到 SAE,比如 jenkins、雲效等,可以說覆寫了應用上雲的完整場景。
2. SAE 典型場景
SAE 有幾個典型的使用場景,一個是存量業務上雲,特别是微服務、java 應用,同時也支援其他語言的單體應用,都能夠通過 SAE 這個平台運作在阿裡雲上,并且不需要做任何代碼的修改。在行業方面,SAE 特别适合有比較大的流量波動的線上業務,比如電商大促、線上教育等行業的場景。另外 SAE 作為應用平台也可以被上層的行業 Saas 所內建,幫助使用者更快地建構行業 Saas。
3. SAE 特性
通過上面的場景介紹,我們可以看到 SAE 除了 Serverless 體驗本身所帶來的極緻彈性、免運維等特性之外,重點在應用層給使用者提供全棧的能力,包括對微服務的增強支援,以及整合了和應用息息相關的能力,包括配置、監控、日志、流量控制等。再加上使用者零代碼的改動,是企業線上業務平滑上雲非常好的選擇。
Serverless Kubernetes
1. ASK 概述
另一個阿裡雲提供的 Serverless 産品是 Serverless K8s。但是 K8s 怎麼還能 Serverless 呢?這就需要先了解一下技術架構的演進曆程。
最早的時候大家都把 Docker 鏡像部署在虛機裡,使用者需要購買 ECS,然後部署鏡像,最後是網絡的一些配置,比如 SLB、EIP 等。在這個過程中,使用者需要自己完成部署動作,擴容需要自己重複上面的動作,或者自己建構一套自動化腳本,相對來說成本和穩定性都比較低。
之後有了 K8s 來幫大家解決容器編排的問題。這種标準化的方式确實大大提高了大家的生産力。使用者通過使用 deployment、service 等标準的 K8s 的方式進行編排,并進行部署。但 K8s 的運維和管理還是相對比較複雜的,技能要求比較高,使用者需要運維 ECS 以及通過 ECS 建構出來的 K8s。另外一個痛點時 K8s 叢集裡的 ECS 是需要預先購買的,如果客戶的負載有比較大的波動,就會出現比較多的資源浪費。雖然技術上也有解決方案,比如 worker node 的彈性,但這對于初級使用者來說,還是有比較高的複雜度。
那有沒有一種方案可以讓使用者既能享受到 K8s 提供的容器編排能力,又能夠不需要關心 ECS 和 K8s 的運維、管理和彈性問題呢?這就是 Serverless K8s 的方案。對應到阿裡雲的産品就是 ASK。在 ASK 的方案裡,使用者建立一個 ASK 叢集,但不需要指定任何 ECS 節點,然後通過标準的 K8s 容器編排、deployment 等部署鏡像。ASK 會根據使用者的負載需求,自動在底層資源池建構需要的 POD 并進行彈性伸縮,使用者不再需要關心容量規劃、ECS 機器運維、資源限制等 LaaS 層的問題,非常便利。
2. ASK 典型場景
那 ASK 主要用在哪些場景裡呢?首先可以用來跑線上業務,部署模式靈活,可以是 deployment、helm chart 等所有的 K8s 原生模式,特别是能夠很好地應對突發流量,極緻彈性,可以在 30 秒完成 500 個容器執行個體的彈性。這樣的彈性效率,可以很好地支撐大資料計算類的任務,比如 Spark、Presto 等,也可以在需要的時候即時擷取資源,支撐 10000 以上 Pod 的規格,有效降低客戶成本。
另外一個非常适合的場景是用來建構随需啟動的建構任務,比如在 ASK 中運作 jenkins、Gitlab-Runner 等。在有建構任務的時候,即時啟動。沒有任務的時候 0 消費,成本做到最低。這裡隻是列出了一些例子的場景,實際上基于 ASK 的這個特性,使用者可以運作很多 K8s 原生的需要極緻彈性的工作負載。
3. ASK 特性
ASK 完全容器部署,通過容器進行隔離。在使用的過程中,使用者無需運維 ECS 或者 K8s 叢集,也不需要考慮叢集更新、容量規劃、OS 及系統軟體問題等事情,理論上可以提供無限的彈性容量。因為是完全按照使用量進行收費,是以就不需要為限制資源付費。
總結
總結一下,可以看到阿裡雲今天在 Serverless 領域有非常多樣的産品,既有面向函數的函數計算,使用者可以隻關注代碼,快速開發傳遞;也有面向應用的 Serverless 應用引擎,讓使用者更關注應用視角,并且提供了圍繞應用的一系列能力,包括監控、日志、流量等能力的內建;對于更習慣 K8s 生态的使用者,ASK 讓使用者在不改變目前 K8s 使用習慣的前提下,也能享受到 Serverless 的優勢。多樣的産品,在滿足不同使用者訴求的同時,也使使用者體驗到了 Serverless 的免運維、極緻彈性、按量付費等優勢。
課程推薦
為了更多開發者能夠享受到 Serverless 帶來的紅利,這一次,我們集結了 10+ 位阿裡巴巴 Serverless 領域技術專家,打造出最适合開發者入門的 Serverless 公開課,讓你即學即用,輕松擁抱雲計算的新範式——Serverless。
點選即可免費觀看課程:
https://developer.aliyun.com/learning/roadmap/serverless“ 阿裡巴巴雲原生 關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆号。”