筆者有幸經歷了 IaaS(OS)、CaaS(Container),在這兩年又聽到了 FaaS(Funtion),這也是運維開發領域里的第三個階段了吧,今天我將從一個不懂得開發的系統工程師視角以及結合之前的幾篇系列文章為各位詮釋這個概念。
本文來自 Serverless 社區用戶「StatLee」投稿
一、簡述
一開始聽到 ServerLess 我以為是類似於 VPS(建站主機)亦或者是 VM、Container 之類的具備完整 OS 或半完整 OS 生態的一個全新開發方式,后來發現我完全理解錯了,如果說傳統的雲計算是這樣分層的:
那么 FaaS(ServerLess 為代表的的 Funtion As A Service)就是把 SaaS 再進行精細化拆分,可以看這張圖就明白了(特別是紅圈部分):
傳統以為 Application 就是業務的最終形態,可是隨着以開發領域為首的「微服務」及運維領域為首的「SRE/DevOps」理念出來后,傳統的業務運維明顯已經不能滿足新一代業務的需求,為了更貼合這些新的需求,實現:
- 模塊拆分化(即一個功能作為一個模塊,而非一個業務作為一個模塊)
- 最小顆粒化變更(即分層變更,變更時通過合理調度時變更間隔縮短,實現快速迭代)的目的
雲廠商最終在以往的「最終形態」上又拆分了 Function 出來,多個 Function 再組成 Application,除了業務上的好處,這樣做的好處還可以支持將 Function 拆分單獨作為某個服務通過簡單的加殼(API 化)提供給外部調用,從商業角度講,這樣的模式能夠給 Application 本身創造的價值之外提供了更多的細分變現領域。
所以,為什么 ServerLess 這么火(至少表面看),就是因為 ServerLess 是上述所說 FaaS 的最佳體現。
二、實操
- 我們開始創建今天的主角,ServerLess(python 版本隨自身業務需求而變)創建一個雲函數:
創建 SCF(雲函數,ServerLess)
從雲函數的功能上來看,與騰訊雲的功能整合度還是比較高的,在規划上筆者建議通過私有網絡來構造雲函數應用。
-
對接 cvm apiv3 sdk來實現拉取cvm列表,首先將用到的SDK文件放在雲函數所在目錄下。
-
通過 VSCode 插件一鍵部署。這里推薦使用 VSCode 來作為主 IDE,無論是構造 API 的 Django 所用的 TKE 可以通過 Remote Development 插件來進行遠程開發,還是 ServerLess 也可以通過騰訊雲提供的 ServerLess ToolKit(當然大部分提供 ServerLess 的雲廠商都有提供 Toolkit,安裝 ToolKit 時主要不要在 Remote IDE 窗口下點擊,否則就變成為遠端安裝了)進行開發,基本上做到完全體驗一致。
-
通過 CVM SDK 獲取 ins-id、內網 IP,再調用 Django 構造的接口進行傳參。
-
結果調用成功添加數據:
至此,實操完成,這樣相當把后端一個「同步信息」的接口搬上了 ServerLess
三、場景
如實驗所述,ServerLess 只能是一個類似於「轉發器」的玩意嗎?並不是的,除了業務模塊是處於「中間(轉發、同步)」的模塊類型之外,其實 ServerLess 也是可以結合其他產品來實現對外輸出功能的。
本身 ServerLess 是沒有對外發布能力的,怎么理解呢?就是一般運維同學上手一看,這玩意兒為什么連個 ip 都沒有,域名哪里定義的,端口又在哪里,如何定義協議類型?
實際上 ServerLess 確實這些都沒有,因為如簡述所說,這是一個細粒化到只需要關注其上 App 中的某個 Function 的一個產品,所以 Function 之下的所有包括 OS、網絡、App 都是不具備定制化的。
雖然 ServerLess 本身沒有對外發布能力,但是結合 API 網關就不是這回事兒了,當 ServerLess 遇到 API 網關,通常雲廠商是支持 ServerLess 添加(或叫注冊)到API網關的,這就相當於你可以借 API 網關的「力」來使 ServerLess 實現對外發布的功能。
四、總結
ServerLess 的開發模式業界已經很多公司采用,相比於還在使用傳統環境(OS、中間件、選擇應用語言、構建數據層、前后端)來說:
- 運維壓力小了很多,因為只需要專注在 ServerLess 本身的運行參數以及架構上的調整、運維,而不再需要關注 Function 以下的運維難點;
- 開發人員由於 ServerLess 一般由雲廠商提供全鏈路的整合,加上 IDE 插件的支持基本上全程實現雲上開發,靈活的版本、環境也可以保證發布出現問題的幾率最小化,同時開發職能的交叉度降到最低,開發人員之間的干擾依賴降低;
- 對於公司的商業模式來說,像擁有大量訪問量、市場受眾的企業客戶不單單可以在業務上實現盈利,某些業務系統模塊的優勢也可以借助 ServerLess 拆分出來實現內部IT支撐系統的變現。
ServerLess 也存在一些問題,比如由於 ServerLess 基本上是依托在雲廠商之上,對於有混合雲的場景,對於S2S 的鏈接質量要求更高,當然這些在 ServerLess 的不斷優化迭代情況下會越來越順暢,所以,無論是 Dev 還是 Ops,擁抱並享受 ServerLess 吧。
One More Thing
3 秒你能做什么?喝一口水,看一封郵件,還是 —— 部署一個完整的 Serverless 應用?
復制鏈接至 PC 瀏覽器訪問:https://serverless.cloud.tencent.com/deploy/express
3 秒極速部署,立即體驗史上最快的 Serverless HTTP 實戰開發!
傳送門:
- GitHub: github.com/serverless
- 官網:serverless.com
歡迎訪問:Serverless 中文網,您可以在 最佳實踐 里體驗更多關於 Serverless 應用的開發!