使用 ServerLess 實現雲原生

筆者有幸經歷了 IaaS(OS)、CaaS(Container),在這兩年又聽到了 FaaS(Funtion),這也是運維開發領域裏的第三個階段了吧,今天我將從一個不懂得開發的系統工程師視角以及結合以前的幾篇系列文章爲各位詮釋這個概念。python

本文來自 Serverless 社區用戶「StatLee」投稿git

1、簡述

一開始聽到 ServerLess 我覺得是相似於 VPS(建站主機)亦或者是 VM、Container 之類的具有完整 OS 或半完整 OS 生態的一個全新開發方式,後來發現我徹底理解錯了,若是說傳統的雲計算是這樣分層的:github

serverless

那麼 FaaS(ServerLess 爲表明的的 Funtion As A Service)就是把 SaaS 再進行精細化拆分,能夠看這張圖就明白了(特別是紅圈部分):express

FaaS

傳統覺得 Application 就是業務的最終形態,但是隨着以開發領域爲首的「微服務」及運維領域爲首的「SRE/DevOps」理念出來後,傳統的業務運維明顯已經不能知足新一代業務的需求,爲了更貼合這些新的需求,實現:後端

  • 模塊拆分化(即一個功能做爲一個模塊,而非一個業務做爲一個模塊)
  • 最小顆粒化變動(即分層變動,變動時經過合理調度時變動間隔縮短,實現快速迭代)的目的

雲廠商最終在以往的「最終形態」上又拆分了 Function 出來,多個 Function 再組成 Application,除了業務上的好處,這樣作的好處還能夠支持將 Function 拆分單獨做爲某個服務經過簡單的加殼(API 化)提供給外部調用,從商業角度講,這樣的模式可以給 Application 自己創造的價值以外提供了更多的細分變現領域。api

因此,爲何 ServerLess 這麼火(至少表面看),就是由於 ServerLess 是上述所說 FaaS 的最佳體現。瀏覽器

2、實操

  1. 咱們開始建立今天的主角,ServerLess(python 版本隨自身業務需求而變)建立一個雲函數:

serverless

建立 SCF(雲函數,ServerLess)網絡

從雲函數的功能上來看,與騰訊雲的功能整合度仍是比較高的,在規劃上筆者建議經過私有網絡來構造雲函數應用。架構

  1. 對接 cvm apiv3 sdk來實現拉取cvm列表,首先將用到的SDK文件放在雲函數所在目錄下。less

  2. 經過 VSCode 插件一鍵部署。這裏推薦使用 VSCode 來做爲主 IDE,不管是構造 API 的 Django 所用的 TKE 能夠經過 Remote Development 插件來進行遠程開發,仍是 ServerLess 也能夠經過騰訊雲提供的 ServerLess ToolKit(固然大部分提供 ServerLess 的雲廠商都有提供 Toolkit,安裝 ToolKit 時主要不要在 Remote IDE 窗口下點擊,不然就變成爲遠端安裝了)進行開發,基本上作到徹底體驗一致。

  3. 經過 CVM SDK 獲取 ins-id、內網 IP,再調用 Django 構造的接口進行傳參。

  4. 結果調用成功添加數據:

serverless

至此,實操完成,這樣至關把後端一個「同步信息」的接口搬上了 ServerLess

3、場景

如實驗所述,ServerLess 只能是一個相似於「轉發器」的玩意嗎?並非的,除了業務模塊是處於「中間(轉發、同步)」的模塊類型以外,其實 ServerLess 也是能夠結合其餘產品來實現對外輸出功能的。

自己 ServerLess 是沒有對外發布能力的,怎麼理解呢?就是通常運維同窗上手一看,這玩意兒爲何連個 ip 都沒有,域名哪裏定義的,端口又在哪裏,如何定義協議類型?

實際上 ServerLess 確實這些都沒有,由於如簡述所說,這是一個細粒化到只須要關注其上 App 中的某個 Function 的一個產品,因此 Function 之下的全部包括 OS、網絡、App 都是不具有定製化的。

雖然 ServerLess 自己沒有對外發布能力,可是結合 API 網關就不是這回事兒了,當 ServerLess 遇到 API 網關,一般雲廠商是支持 ServerLess 添加(或叫註冊)到API網關的,這就至關於你能夠借 API 網關的「力」來使 ServerLess 實現對外發布的功能。

4、總結

ServerLess 的開發模式業界已經不少公司採用,相比於還在使用傳統環境(OS、中間件、選擇應用語言、構建數據層、先後端)來講:

  1. 運維壓力小了不少,由於只須要專一在 ServerLess 自己的運行參數以及架構上的調整、運維,而再也不須要關注 Function 如下的運維難點;
  2. 開發人員因爲 ServerLess 通常由雲廠商提供全鏈路的整合,加上 IDE 插件的支持基本上全程實現雲上開發,靈活的版本、環境也能夠保證發佈出現問題的概率最小化,同時開發職能的交叉度降到最低開發人員之間的干擾依賴下降
  3. 對於公司的商業模式來講,像擁有大量訪問量、市場受衆的企業客戶不僅僅能夠在業務上實現盈利,某些業務系統模塊的優點也能夠藉助 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 實戰開發!

傳送門:

歡迎訪問:Serverless 中文網,您能夠在 最佳實踐 裏體驗更多關於 Serverless 應用的開發!


推薦閱讀:《Serverless 架構:從原理、設計到項目實戰》

相關文章
相關標籤/搜索