簡介:每一個工具的誕生,都要有一個成長的程序,Serverless Devs 正在不斷的成長,
從我做 Serverless 工具開始,就經常會遇到有人問這樣一個問題:如何保證Serverless業務部署更新的一致性,
所謂的一致性在這里指的是:我們通過工具在本地進行專案部署,此時再有人通過其他途徑(例如控制臺等),對專案進行過更新等操作,此時我再在本地進行專案部署,是不是會直接覆寫?
例如,當用戶 A 在本地更新了業務,因為一些特殊情況,導致出現了一個線上例外情況“x”,此時用戶 B 重新更新,將這個內容修復了,但是 B 沒有及時同步給 A 這個事情,A 又更新了新的功能,直接覆寫了 B的內容,這個時候之前的例外 x 又出現了,如果此時在 A 更新的時候,可以感知到線上資源已經變動,那么這種事情就不會再次發生,
目前基于 Serverless Devs 的阿里云函式計算組件,已經支持了線上“異動”的感知能力,包括了以下幾個情況:
- 本地新建并部署一個線上沒有的資源
- 本地部署完成,線上更新,本地再次部署
- 本地新建并部署一個線上已經有的資源
實驗準備
通過s init創建一個函式(選擇Alibaba Cloud Serverless, 選擇HTTP Function - Python3 Example):

此時我們查看一下s.yaml:

該專案部署到線上之后的表現就是在cn-hangzhou區創建一個fc-deploy-service服務,以及http-trigger-function函式
本地新建并部署一個線上沒有的資源
此時,我們確定一下線上并沒有對應資源,所以我們部署一下:

部署完成,很順利:

打開瀏覽器,查看反饋給我們的自定義地址:

此時,我們可以在本地,更新一下這個函式代碼:

保存部署:

完成之后,再查看線上資源:

整個程序,還是比較貼近傳統的基本流程,也沒有觸發線上異動,算是中規中矩的理想程序,
本地部署完成,線上更新,本地再次部署
此時,我們對線上資源進行變更,首先在控制臺找到函式:

修改代碼,并部署,

部署完成之后,我們重繪一下剛才的地址:

可以看到已經更新,此時,我們再從本地進行部署:

可以看到,系統已經感知到我們的代碼變化,此時,我們選擇yes,完成之后在查看線上資源:

此處需要額外說明的是,只要是函式計算的服務,函式,觸發器發生變化,此處都可以進行感知,不管是配置還是代碼,
本地新建并部署一個線上已經有的資源
此時,我們再進行最后的實驗,我們將本地專案洗掉,重新建設,然后執行部署,由于剛剛實驗過的原因,我們已經在線上存在了這些資源,所以此時算是部署一個線上的資源,

此時可以看到,系統感知到這個資源本地沒部署過,線上并且已經存在,所以此時需要確定是否覆寫,
總結
代碼在其他場景被更新,需要我們在當前得到感知,這個事情其實是非常重要的,和代碼的安全發布密不可少,而此時,通過Serverless Devs是可以做到的,
那么問題來了,如果我已經有了一個專案,我想集成到cd流程,我不想出現互動式操作,應該如何處理呢?
此時我們提供一個--use-local引數,用來強行覆寫線上配置,通過這樣的指令就可以實作無互動的,本地優先,
每一個工具的誕生,都要有一個成長的程序,Serverless Devs正在不斷的成長,期待更多更好的功能出現,
原文鏈接:https://developer.aliyun.com/article/785431?
著作權宣告:本文內容由阿里云實名注冊用戶自發貢獻,著作權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任,具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》,如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻洗掉涉嫌侵權內容,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290575.html
標籤:其他
上一篇:內網滲透系列:隱匿攻擊方法
下一篇:網路安全學習筆記
