函数的调试与部署
作者 | 江昱 阿里巴巴高級產(chǎn)品經(jīng)理
函數(shù)調(diào)試
函數(shù)的調(diào)試與部署,其實這是兩部分內(nèi)容:調(diào)試部分與部署部分。相對來說,調(diào)試部分是比較困難的,因為調(diào)試本身就是 Serverless 架構(gòu)的一大弱點。
在開始講解調(diào)試之前,先問大家一個問題:我們寫完的代碼為什么要有調(diào)試的過程呢?不調(diào)試行不行?
記得我在上學(xué)的時候,無論是考試還是做什么,都少不了一個檢查的過程,例如寫完作業(yè)時,爸媽會說:“做完了檢查一下”;考試時,老師會說:“考完了檢查一下”;在做完某件事時,我們還要有一個檢查的過程,來保證盡可能地少犯錯誤。
程序也是這樣,我們寫了一堆代碼,難免這個代碼會做一些奇奇怪怪的事情,例如說我們少寫了一個字母,用錯了一個符號,或者說我們的程序輸出和預(yù)期不一致,我們的程序存在邏輯問題,我們的程序在處理某些業(yè)務(wù)時少考慮了一些因素,我們的程序……很多問題。這個時候,我們就要自己來檢查一下,看看他是不是 OK 的,如果不 OK 要馬上修改,如果 OK 了,我們再提交代碼、上傳代碼、部署代碼等,這個過程,你就可以認(rèn)為是調(diào)試的過程。
1. 函數(shù)調(diào)試方式
當(dāng)然,調(diào)試也不是這么容易的,它也有很多的方法和理論,本文就針對函數(shù)計算以及相關(guān)工具,給大家講解怎么調(diào)試函數(shù)計算中的函數(shù)們。
1)云調(diào)試
首先,第一種方法,是非常簡單的,我們只需要打開瀏覽器,進入到我們的項目頁面,就可以點擊 Invoke 按鈕進行調(diào)試。
(在線調(diào)用)
上圖中可以看到,我們已經(jīng)完成了調(diào)試,輸出了 hello world,這種方法非常簡單,對于臨時使用是非常有效果的。
但是稍微麻煩一些的項目,可能就不太適合在線上調(diào)試了,這時,我們就需要本地開發(fā)和調(diào)試方法,畢竟大部分代碼開發(fā)應(yīng)該都在本地,雖然大家都說云端寫代碼、開發(fā)、debug 是未來的趨勢,但是至少目前來看,還是本地開發(fā)更習(xí)慣、更靠譜。
所以這時就需要用我們的插件或者命令行工具了。
2)命令行工具
(命令行工具本地調(diào)試)
我們在安裝之后,如果想進行本地調(diào)試,還要安裝 Docker,安裝之后,我們可以通過 invoke local 的指令來進行本地的調(diào)試。例如上圖中,我們可以看到,當(dāng)我執(zhí)行完了 fun local invoke demo03/demo03,順利輸出了結(jié)果。當(dāng)然如果你是第一次使用,可能還會涉及到通過 Docker 拉取鏡像的過程。
3)VSCode 插件
如果要在編輯器中寫代碼,該怎么調(diào)試?非常簡單,使用 VSCode 插件,你只需要點擊 VSCode 插件的運行功能,插件就可以自動拉起 Docker,幫助我們本地調(diào)試代碼。
從上圖中可以看到,我們已經(jīng)順利輸出了結(jié)果。
這時就會有人問:還要安裝 Docker 嗎?沒有 Docker 行不行?沒有 Docker 當(dāng)然是不行的,因為這個調(diào)試的機制本身就依賴 Docker。但是我們?nèi)祟愅蔷哂袆?chuàng)造力的:沒有條件,就創(chuàng)造條件,所以,下面再給大家分享一個無工具的調(diào)試方案。
4)無工具調(diào)試
如上圖,以 Python 為例,我們只需要增加一段代碼,來調(diào)用我們的方法,至于 event 可以采用我們即將使用的觸發(fā)器情況,這樣就可以實現(xiàn)簡單的調(diào)試方法了。
2. 適用場景
上文介紹了這么多的調(diào)試方法,什么時候該用哪個呢?
如上圖,我們來看一下對比,在一般小的情況下,如果我們不想開編輯器,也不想用 Docker ,想要獲取比較靠譜的調(diào)試,可以使用云端調(diào)試;如果我們想本地調(diào)試,和開發(fā)更親密一些,可以用命令行工具或者 VSCode 插件;如果我們不想安裝各種工具,那么完全可以采用無工具調(diào)試方案。
云端調(diào)試雖然不太符合我們的開發(fā)習(xí)慣,但是這種調(diào)試方法可以 100% 模擬“現(xiàn)場場地”;命令行工具或者 VSCode 插件,雖然通過 Docker 鏡像方法,已經(jīng)盡可能地模仿了線上環(huán)境,但是對于一些和線上資源交互的場景,尤其是通過 VPC 等和其他資源交互的場景,這種方法未必可以很好地解決類似的問題;無工具調(diào)試,只適合臨時用一下,它的環(huán)境和線上環(huán)境天差地別,很可能會對真正上線的結(jié)果造成一定影響。
函數(shù)部署
函數(shù)部署的方法很簡單,也不需要特殊的依賴,就算沒有 Docker 也可以。
1. 在線部署
在線創(chuàng)建函數(shù)上傳代碼包,或者更新函數(shù)上傳代碼包等。
2. 客戶端部署
1)通過命令行工具
如下圖所示,通過命令行工具,執(zhí)行 fun deploy 來進行部署。
2)通過 VSCode 插件
通過 VSCode 插件,點擊上傳部署的按鈕,即可自動部署。
結(jié)語
最后額外說一下,本文并非王婆賣瓜自賣自夸,而是命令行工具的 - h 指令真的很棒,無論使用什么指令,我們都可以通過 - h 查看到使用方法,非常簡單方便,不信你也可以偷偷試一下。
總結(jié)
- 上一篇: 自动化 CICD 与灰度发布
- 下一篇: 典型案例 3:十分钟搭建弹性可扩展的 W