Serverless 的開發者工具建設

blank

Serverless 的開發者工具建設

本文將介紹Serverless 生態下的開發者工具,並簡述這些工具是如何貫穿開發、調試、測試和部署的生命週期,提升開發者效率的。

由於Serverless 平台具備彈性擴縮、免運維、按需付費等特點,越來越多的公司和個人開始使用Serverless 承載項目。但對於開發者而言,Serverless 一定程度上減少了開發難度,可以讓我們聚焦業務邏輯進行開發;但同時,由於Serverless 顛覆了傳統的開發模式,從而在相關的開發工具,函數編排組織上也面臨著重大挑戰。

面向Serverless開發的挑戰

從一個開發者的角度而言,Serverless 開發和傳統的開發方式相比發生了很大的改變。開發者習慣了在本地進行開發,調試,測試和持續集成,持續部署等流程,在面向Serverless 進行開發時,免不了會有很多疑問:

  • 怎樣本地開發一個Serverless 項目?
  • 怎樣對Serverless 函數進行本地調試?
  • 開發過程中打印的日誌是否可以方便的檢索並用於debug?
  • 如何保證本地環境和雲端環境的一致?
  • 發佈時怎樣將多個函數一次性發佈到雲環境中?

面向Serverless的工具建設邏輯

面臨開發過程中的種種挑戰,開發者工具將從開發者的視角出發,使Serverless 的項目開發更貼近用戶習慣。

下面是一張項目開發的生命週期流程圖,可以看到,在項目的開發過程中,至少要經歷需求、編碼、構建、測試、發布、部署和運維等幾個階段。

在代碼的編碼和構建階段通過持續集成完成代碼的自動構建,成為持續集成CI(Continuous Integration);在代碼的發布和部署階段,通過配置灰度策略,告警和回滾計劃等,從而可以完成代碼的持續交付CD(Continuous Delivery)。

此外,在開發者的開發過程中,也會遇到編碼、調試和單元測試,集成測試等場景,這些功能的支持也是面向Serverless 架構進行開發中必不可少的一環。對開發者工具的建設,則會重點解決在整個生命週期中的痛點。

blank

面向Serverless的開發者工具

在Serverless 技術趨勢大熱的今天,已經湧現出很多面向開發者的解決方案和工具,例如開源的Serverless Framework,Zappa 和ClaudiaJS 等工具。

開發者工具大部分都通過調用雲廠商中Serverless 產品的API/SDK,封裝底層能力,並提供給客戶更加直觀便捷的使用方式。目前比較常見的開發工具中,主要分為CLI 命令行工具以及IDE 插件這兩種形態。雖然展現方式不同,但本質上都是降低了本地開發Serverless 項目的門檻,並在雲平台提供的基礎能力上,封裝了更多組織和編排的方式。

本文將以騰訊雲的雲函數為例,介紹較為典型的開發工具——騰訊雲Serverless本地開發工具及VS Code插件。

騰訊雲Serverless 本地開發工具(SCF CLI)以開源項目的形式維護,目的在於讓用戶方便的實現函數打包、部署、本地調試,也可以方便的生成雲函數的項目並基於demo 項目進一步的開發。 SCF CLI 通過一個函數模板配置文件,完成函數及相關周邊資源的描述,並基於配置文件實現本地代碼及配置部署到雲端的過程。

下面我們以一個Serverless 項目為例,展示Serverless 開發工具的使用流程:

1、函數開發和編碼

首先,安裝並配置了SCF CLI 後,可以通過--help 命令查看所支持的命令,之後通過scf init 命令快速生成一個函數demo。在創建完畢後,可以看到生成了index.js 文件和template.yaml 文件。

其中,index.js 是函數的入口文件,tempate.yaml 則是通過特定的格式記錄了函數的配置訊息,如內存大小,超時時間等訊息。 tempate.yaml 也是後續對函數進行編排和組織的關鍵。除了簡單的init 命令之外,SCF CLI 也支持從git 拉取代碼和一些已有的函數模板,便於客戶基於特定的場景快速開發。

2、代碼調試

在開發過程中,開發者會選取自己熟悉的IDE 代碼編輯器進行代碼編寫。為了便於更快速直觀的進行本地開發和調試,通過騰訊雲VS Code 插件支持了一鍵調試的能力。

首先,可以打開剛創建函數的文件目錄,在插件中會自動識別這個函數。之後可以通過F9 進行斷點,F5 啟動調試能力。函數調試過程中的輸出會打印在terminal 中,並且支持單步調試,查看變量和堆棧等訊息。

blank

3、代碼發布

完成了開發和測試後,也可以分別通過VS Code 插件或CLI 進行代碼的發布。目前分別支持了zip 打包發布,通過COS(對象存儲)上傳並發布,以及通過git 倉庫發布,每次只提交增量修改的文件。在發布完畢後,還可以通過插件中的雲端調試,來查看在雲端的運行狀況和返回日誌。

blank

4、多函數部署

在VS Code 插件及CLI 中,可以很方便的將單函數部署在雲端,那麼如果希望快速發布多個函數時,應該怎樣操作呢?

目前也可以直接通過SCF CLI 的deploy 命令來實現。只需要通過一個template.yaml 來維護多個函數的訊息即可。

除了發布之外,還可以通過template.yaml 文件中的Global 字段來定義一些函數的通用配置,從而解決開發過程中,希望多個函數共用相同配置的痛點(例如共用相同的環境變量,超時時間和內存等,不需要重複配置)

例如,在我的工作空間下,有兩個函數「hellotinatest234」以及「testscflinux」需批量部署上傳,並且兩個函數使用公共配置。則可以在template.yaml 中分別定義兩個函數的屬性,並且定義Global 字段指定公共配置。部署過程和yaml 的樣式如下:

blank

5、異常排查-日誌能力

除了開發流程之外,在生產環境異常時,也可以通過CLI 的logs --tail 等命令,快速靈活地進行日誌查詢等,並且可以配合grep awk 等工具使用。當發布新版本時,採用tail 模式可以實時打印雲端日誌,方便開發者快速查看問題。

blank

6、DevOps 能力

最後是雲函數的DevOps 能力。目前已經支持了和Jekins,Coding 和藍鯨平台等對接。並且還在持續對Coding 平台做更深度的整合,提供開箱即可用的DevOps 能力。

blank

開發者工具總結和展望

隨著Serverless 生態的逐步完善,工具可以覆蓋的場景會越來越多。例如,可以在本地模擬API 網關的請求,或是通過集成常用的測試框架,對函數進行單元測試和整體性測試等。開發者也有更廣闊的空間可以去參與其中,構建一個面向Serverless 的開發架構。

後續開發者工具會更加著重於對函數及函數周邊資源的組織方式(網關,DB 等),從項目/應用的維度出發,讓開發者可以快速通過工具搭建一個常用的使用場景(如WEB 網站,文件上傳工具等),從而更好地了解Serverless 項目的組織方式。

此外,在持續集成和持續交付的對接中,開發者工具也將支持更便捷,通用的配置,便於規範開發流程,承載大型項目和核心業務。


作者介绍:腾讯云高级产品经理 方坤丁、张远哲

Serverless Framework 30 天試用計劃

我們誠邀您來體驗最便捷的Serverless 開發和部署方式。在試用期內,相關聯的產品及服務均提供免費資源和專業的技術支持,幫助您的業務快速、便捷地實現Serverless!

詳情可查閱: Serverless Framework試用計劃

One More Thing

3 秒你能做什麼?喝一口水,看一封郵件,還是——部署一個完整的Serverless應用?

複製鏈接至PC瀏覽器訪問: serverless.cloud.tencent.com

3秒極速部署,立即體驗史上最快的Serverless HTTP實戰開發!

傳送門:

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

What do you think?

Written by marketer

blank

Remax – 使用真正的React 構建小程序

blank

第5 屆FEDAY 所有嘉賓已集齊,就等你來!