從我做 Serverless 工具開(kāi)始,就經(jīng)常會(huì )遇到有人問(wèn)這樣一個(gè)問(wèn)題:如何保證Serverless業(yè)務(wù)部署更新的一致性。
所謂的一致性在這里指的是:我們通過(guò)工具在本地進(jìn)行項目部署,此時(shí)再有人通過(guò)其他途徑(例如控制臺等),對項目進(jìn)行
過(guò)更新等操作,此時(shí)我再在本地進(jìn)行項目部署,是不是會(huì )直接覆蓋?
例如,當用戶(hù) A 在本地更新了業(yè)務(wù),因為一些特殊情況,導致出現了一個(gè)線(xiàn)上異常情況“x”,此時(shí)用戶(hù) B 重新更新,將這
個(gè)內容修復了,但是 B 沒(méi)有及時(shí)同步給 A 這個(gè)事情,A 又更新了新的功能,直接覆蓋了 B的內容,這個(gè)時(shí)候之前的異常 x 又
出現了,如果此時(shí)在 A 更新的時(shí)候,可以感知到線(xiàn)上資源已經(jīng)變動(dòng),那么這種事情就不會(huì )再次發(fā)生。
目前基于 Serverless Devs 的阿里云函數計算組件,已經(jīng)支持了線(xiàn)上“異動(dòng)”的感知能力,包括了以下幾個(gè)情況:
1. 本地新建并部署一個(gè)線(xiàn)上沒(méi)有的資源
1. 本地部署完成,線(xiàn)上更新,本地再次部署
1. 本地新建并部署一個(gè)線(xiàn)上已經(jīng)有的資源
通過(guò)s init創(chuàng )建一個(gè)函數(選擇Alibaba Cloud Serverless, 選擇HTTP Function - Python3 Example):
此時(shí)我們查看一下s.yaml:
該項目部署到線(xiàn)上之后的表現就是在cn-hangzhou區創(chuàng )建一個(gè)fc-deploy-service服務(wù),以及http-trigger-function函數
此時(shí),我們確定一下線(xiàn)上并沒(méi)有對應資源,所以我們部署一下:
部署完成,很順利:
打開(kāi)瀏覽器,查看反饋給我們的自定義地址:
此時(shí),我們可以在本地,更新一下這個(gè)函數代碼:
保存部署:
完成之后,再查看線(xiàn)上資源:
整個(gè)過(guò)程,還是比較貼近傳統的基本流程,也沒(méi)有觸發(fā)線(xiàn)上異動(dòng),算是中規中矩的理想過(guò)程。
此時(shí),我們對線(xiàn)上資源進(jìn)行變更,首先在控制臺找到函數:
修改代碼,并部署。
部署完成之后,我們刷新一下剛才的地址:
可以看到已經(jīng)更新。此時(shí),我們再從本地進(jìn)行部署:
可以看到,系統已經(jīng)感知到我們的代碼變化,此時(shí),我們選擇yes,完成之后在查看線(xiàn)上資源:
此處需要額外說(shuō)明的是,只要是函數計算的服務(wù),函數,觸發(fā)器發(fā)生變化,此處都可以進(jìn)行感知,不管是配置還是代碼。
此時(shí),我們再進(jìn)行最后的實(shí)驗,我們將本地項目刪除,重新建設。然后執行部署,由于剛剛實(shí)驗過(guò)的原因,我們已經(jīng)在線(xiàn)上
存在了這些資源,所以此時(shí)算是部署一個(gè)線(xiàn)上的資源。
此時(shí)可以看到,系統感知到這個(gè)資源本地沒(méi)部署過(guò),線(xiàn)上并且已經(jīng)存在,所以此時(shí)需要確定是否覆蓋。
代碼在其他場(chǎng)景被更新,需要我們在當前得到感知,這個(gè)事情其實(shí)是非常重要的,和代碼的安全發(fā)布密不可少。而此時(shí), 通過(guò)Serverless Devs是可以做到的。
那么問(wèn)題來(lái)了,如果我已經(jīng)有了一個(gè)項目,我想集成到cd流程,我不想出現交互式操作,應該如何處理呢?
此時(shí)我們提供一個(gè)--use-local參數,用來(lái)強行覆蓋線(xiàn)上配置,通過(guò)這樣的指令就可以實(shí)現無(wú)交互的,本地優(yōu)先。
每一個(gè)工具的誕生,都要有一個(gè)成長(cháng)的過(guò)程,Serverless Devs正在不斷的成長(cháng)。期待更多更好的功能出現。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站