天天看點

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

作者 | 李國強  阿裡雲資深産品專家

本文整理自《Serverless 技術公開課》。關注“Serverless”公衆号,回複“入門”,即可擷取 Serverless 系列文章 PPT。

今天來講,在 Serverless 這個大領域中,不隻有函數計算這一種産品形态和應用類型,而是面向不同的使用者群體和使用習慣,都有其各自适用的 Serverless 産品。例如面向函數的函數計算、面向應用的 Serverless 應用引擎、面向容器的 Serverless Kubernetes,使用者可以根據自己的使用習慣、使用場景或者應用類型,去選擇使用什麼樣的 Serverless 産品。下面通過本文給大家介紹一下,阿裡雲都有哪些可供大家選擇的 Serverless 産品。

Serverless 産品及分層

衆所周知,最早提出 Serverless 的是 AWS,其在 Serverless 領域的旗艦産品是 function compute。同樣阿裡雲也有函數計算的産品,幫助使用者建構 Serverless 函數。但 Serverless 不僅僅是函數,如下圖所示,其實使用者會期望在應用、容器等層面也能夠享受到 Serverless 的好處,包括按量付費、極緻彈性等,這樣也更符合使用者原有的使用習慣。

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

在上圖中,大家能夠看到,阿裡雲針對函數、應用和容器都推出了對應的 Serverless 産品,使用者可以針對自己的使用場景選擇不同的産品。

函數計算 

1. 函數計算介紹

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

上圖展示了函數計算的使用方式。從使用者角度,他需要做的隻是編碼,然後把代碼上傳到函數計算中。這個時候還不會産生費用,隻有到被調用的時候才有費用。調用的方式可以是産品提供的 API/SDK,也可以通過一些事件源,比如阿裡雲的 OSS 的事件。比如使用者往 OSS 裡的某一個 bucket 上傳了一個檔案,希望這個檔案被自動處理;比如上傳一個 zip 包,希望能夠自動解壓到另外一個 bucket,這都是很典型的函數場景。

另外,函數計算能夠提供非常好的彈性能力,最終的費用是根據時長和記憶體數進行計費的,如果調用量小的話,隻會有很少的費用。并且它在語言方面也非常豐富,常用的 nodejs、php、python、java 都直接支援。同時提供自定義的運作環境,可以支援任意的可執行的語言。

2. 函數計算典型場景

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

從使用場景來說,主要有三類:

  • Web 應用:可以是各種語言寫的,這種可以使用 Serverless 架構新編寫的程式,也可以是已有的應用。比如小程式後端、或者釋出到 API 市場的 API 後端應用等;
  • 對計算能力有很強的彈性訴求的應用:比如 AI 推理、音視訊處理、文檔轉換等;
  • 事件驅動型的應用:比如通過其他阿裡雲産品驅動的場景、Web Hook、定時任務等,函數計算已經與很多産品進行了打通,比如對象存儲、表格存儲、定時器、CDN、日志服務、雲監控等,可以非常快速地組裝出一些業務邏輯。

3. 函數計算核心競争力

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

函數計算對客戶的一個最大的價值,就是能夠讓使用者隻關注自己的業務邏輯開發,完全不需要管理運維,諸如計算資源、網絡設定等都不需要關心。在隔離性上提供 vm 級别的隔離,保證使用者在運作時的資料安全、運作時安全等;在可用性方面預設提供 3az 的高可用架構,保證客戶預設就是高可用的最佳實踐架構;在彈性方面,可以做到毫秒級的彈性效率,滿足客戶突發的流量沖擊;在計費方面也非常靈活,真正按照使用者的請求情況進行收費,也支援對 long run 的應用更友好的預付費模式。

Serverless 應用引擎

1. SAE 概述

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

SAE 是業内首款面向應用的 Serverless Paas 平台。這個産品以面向應用的視角,幫助使用者在不做任何修改的前提下把存量應用上到雲端。在資源層,使用者不再需要自己管理和運維機器及叢集,隻需要關注自己應用所需要使用的規格以及執行個體數,不再需要關心底層是虛機還是容器。

SAE 從資源層面提供計算資源、彈性、隔離性等能力,讓使用者隻需要關注自己的應用。在應用層,SAE 提供了監控、日志、微服務治理等能力,幫助使用者解決應用可觀測性和治理需求。同時提供網絡配置、流量控制能力,提供了和 CICD 良好的內建,使用者可以使用已有 CICD 部署到 SAE,比如 jenkins、雲效等,可以說覆寫了應用上雲的完整場景。

2. SAE 典型場景

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

SAE 有幾個典型的使用場景,一個是存量業務上雲,特别是微服務、java 應用,同時也支援其他語言的單體應用,都能夠通過 SAE 這個平台運作在阿裡雲上,并且不需要做任何代碼的修改。在行業方面,SAE 特别适合有比較大的流量波動的線上業務,比如電商大促、線上教育等行業的場景。另外 SAE 作為應用平台也可以被上層的行業 Saas 所內建,幫助使用者更快地建構行業 Saas。

3. SAE 特性

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

通過上面的場景介紹,我們可以看到 SAE 除了 Serverless 體驗本身所帶來的極緻彈性、免運維等特性之外,重點在應用層給使用者提供全棧的能力,包括對微服務的增強支援,以及整合了和應用息息相關的能力,包括配置、監控、日志、流量控制等。再加上使用者零代碼的改動,是企業線上業務平滑上雲非常好的選擇。

Serverless Kubernetes

1. ASK 概述

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

另一個阿裡雲提供的 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 典型場景

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

那 ASK 主要用在哪些場景裡呢?首先可以用來跑線上業務,部署模式靈活,可以是 deployment、helm chart 等所有的 K8s 原生模式,特别是能夠很好地應對突發流量,極緻彈性,可以在 30 秒完成 500 個容器執行個體的彈性。這樣的彈性效率,可以很好地支撐大資料計算類的任務,比如 Spark、Presto 等,也可以在需要的時候即時擷取資源,支撐 10000 以上 Pod 的規格,有效降低客戶成本。

另外一個非常适合的場景是用來建構随需啟動的建構任務,比如在 ASK 中運作 jenkins、Gitlab-Runner 等。在有建構任務的時候,即時啟動。沒有任務的時候 0 消費,成本做到最低。這裡隻是列出了一些例子的場景,實際上基于 ASK 的這個特性,使用者可以運作很多 K8s 原生的需要極緻彈性的工作負載。

3. ASK 特性

從零入門 Serverless | 一文詳解 Serverless 技術選型Serverless 産品及分層函數計算 Serverless 應用引擎Serverless Kubernetes總結課程推薦

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 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆号。”

繼續閱讀