做者 | 李國強 阿里雲資深產品專家php
本文整理自《Serverless 技術公開課》。關注「Serverless」公衆號,回覆「入門」,便可獲取 Serverless 系列文章 PPT。java
今天來說,在 Serverless 這個大領域中,不僅有函數計算這一種產品形態和應用類型,而是面向不一樣的用戶羣體和使用習慣,都有其各自適用的 Serverless 產品。例如面向函數的函數計算、面向應用的 Serverless 應用引擎、面向容器的 Serverless Kubernetes,用戶能夠根據本身的使用習慣、使用場景或者應用類型,去選擇使用什麼樣的 Serverless 產品。下面經過本文給你們介紹一下,阿里雲都有哪些可供你們選擇的 Serverless 產品。node
衆所周知,最先提出 Serverless 的是 AWS,其在 Serverless 領域的旗艦產品是 function compute。一樣阿里雲也有函數計算的產品,幫助用戶構建 Serverless 函數。但 Serverless 不只僅是函數,以下圖所示,其實用戶會指望在應用、容器等層面也可以享受到 Serverless 的好處,包括按量付費、極致彈性等,這樣也更符合用戶原有的使用習慣。python
在上圖中,你們可以看到,阿里雲針對函數、應用和容器都推出了對應的 Serverless 產品,用戶能夠針對本身的使用場景選擇不一樣的產品。小程序
上圖展現了函數計算的使用方式。從用戶角度,他須要作的只是編碼,而後把代碼上傳到函數計算中。這個時候還不會產生費用,只有到被調用的時候纔有費用。調用的方式能夠是產品提供的 API/SDK,也能夠經過一些事件源,好比阿里雲的 OSS 的事件。好比用戶往 OSS 裏的某一個 bucket 上傳了一個文件,但願這個文件被自動處理;好比上傳一個 zip 包,但願可以自動解壓到另一個 bucket,這都是很典型的函數場景。後端
另外,函數計算可以提供很是好的彈性能力,最終的費用是根據時長和內存數進行計費的,若是調用量小的話,只會有不多的費用。而且它在語言方面也很是豐富,經常使用的 nodejs、php、python、java 都直接支持。同時提供自定義的運行環境,能夠支持任意的可執行的語言。安全
從使用場景來講,主要有三類:網絡
函數計算對客戶的一個最大的價值,就是可以讓用戶只關注本身的業務邏輯開發,徹底不須要管理運維,諸如計算資源、網絡設置等都不須要關心。在隔離性上提供 vm 級別的隔離,保證用戶在運行時的數據安全、運行時安全等;在可用性方面默認提供 3az 的高可用架構,保證客戶默認就是高可用的最佳實踐架構;在彈性方面,能夠作到毫秒級的彈性效率,知足客戶突發的流量衝擊;在計費方面也很是靈活,真正按照用戶的請求狀況進行收費,也支持對 long run 的應用更友好的預付費模式。架構
SAE 是業內首款面向應用的 Serverless Paas 平臺。這個產品以面向應用的視角,幫助用戶在不作任何修改的前提下把存量應用上到雲端。在資源層,用戶再也不須要本身管理和運維機器及集羣,只須要關注本身應用所須要使用的規格以及實例數,再也不須要關心底層是虛機仍是容器。框架
SAE 從資源層面提供計算資源、彈性、隔離性等能力,讓用戶只須要關注本身的應用。在應用層,SAE 提供了監控、日誌、微服務治理等能力,幫助用戶解決應用可觀測性和治理需求。同時提供網絡配置、流量控制能力,提供了和 CICD 良好的集成,用戶可使用已有 CICD 部署到 SAE,好比 jenkins、雲效等,能夠說覆蓋了應用上雲的完整場景。
SAE 有幾個典型的使用場景,一個是存量業務上雲,特別是微服務、java 應用,同時也支持其餘語言的單體應用,都可以經過 SAE 這個平臺運行在阿里雲上,而且不須要作任何代碼的修改。在行業方面,SAE 特別適合有比較大的流量波動的在線業務,好比電商大促、在線教育等行業的場景。另外 SAE 做爲應用平臺也能夠被上層的行業 Saas 所集成,幫助用戶更快地構建行業 Saas。
經過上面的場景介紹,咱們能夠看到 SAE 除了 Serverless 體驗自己所帶來的極致彈性、免運維等特性以外,重點在應用層給用戶提供全棧的能力,包括對微服務的加強支持,以及整合了和應用息息相關的能力,包括配置、監控、日誌、流量控制等。再加上用戶零代碼的改動,是企業在線業務平滑上雲很是好的選擇。
另外一個阿里雲提供的 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 層的問題,很是便利。
那 ASK 主要用在哪些場景裏呢?首先能夠用來跑在線業務,部署模式靈活,能夠是 deployment、helm chart 等全部的 K8s 原生模式,特別是可以很好地應對突發流量,極致彈性,能夠在 30 秒完成 500 個容器實例的彈性。這樣的彈性效率,能夠很好地支撐大數據計算類的任務,好比 Spark、Presto 等,也能夠在須要的時候即時獲取資源,支撐 10000 以上 Pod 的規格,有效下降客戶成本。
另一個很是適合的場景是用來構建隨需啓動的構建任務,好比在 ASK 中運行 jenkins、Gitlab-Runner 等。在有構建任務的時候,即時啓動。沒有任務的時候 0 消費,成本作到最低。這裏只是列出了一些例子的場景,實際上基於 ASK 的這個特性,用戶能夠運行不少 K8s 原生的須要極致彈性的工做負載。
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 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的公衆號。」