如何保证 Serverless 业务部署更新的一致性?
简介: 代码在其他场景被更新,需要我们在当前得到感知,这个事情其实是非常重要的,和代码的安全发布密不可少。而此时,通过 Serverless Devs 是可以做到的。
作者|Anycodes
从我做 Serverless 工具开始,就经常会遇到有人问这样一个问题:如何保证 Serverless 业务部署更新的一致性。
所谓的一致性在这里指的是:我们通过工具在本地进行项目部署,此时再有人通过其他途径(例如控制台等),对项目进行过更新等操作,此时我再在本地进行项目部署,是不是会直接覆盖?
例如,当用户 A 在本地更新了业务,因为一些特殊情况,导致出现了一个线上异常情况 “X”,此时用户 B 重新更新,将这个内容修复了,但是 B 没有及时同步给 A 这个事情,A 又更新了新的功能,直接覆盖了 B 的内容,这个时候之前的异常 “X” 又出现了,如果此时在 A 更新的时候,可以感知到线上资源已经变动,那么这种事情就不会再次发生。
目前基于 Serverless Devs 的阿里云函数计算组件,已经支持了线上 “异动” 的感知能力,包括了以下几个情况:
- 本地新建并部署一个线上没有的资源
- 本地部署完成,线上更新,本地再次部署
- 本地新建并部署一个线上已经有的资源
实验准备
通过 s init 创建一个函数(选择 Aibaba Cloud Serverless, 选择 HTTP Function - Python3 Example ):

此时我们查看一下 s.yaml :

该项目部署到线上之后的表现就是在 cn-hangzhou 区创建一个 fc-deploy-service 服务,以及 http-trigger-function 函数。
实验过程
本地新建并部署一个线上没有的资源
此时,我们确定一下线上并没有对应资源,所以我们部署一下:
部署完成,很顺利:
打开浏览器,查看反馈给我们的自定义地址:

此时,我们可以在本地,更新一下这个函数代码:

保存部署:

完成之后,再查看线上资源:

整个过程,还是比较贴近传统的基本流程,也没有触发线上异动,算是中规中矩的理想过程。
本地部署完成,线上更新,本地再次部署
此时,我们对线上资源进行变更,首先在控制台找到函数:

修改代码,并部署。

部署完成之后,我们刷新一下刚才的地址:

可以看到已经更新。此时,我们再从本地进行部署:

可以看到,系统已经感知到我们的代码变化,此时,我们选择yes,完成之后在查看线上资源:
此处需要额外说明的是,只要是函数计算的服务,函数,触发器发生变化,此处都可以进行感知,不管是配置还是代码。
本地新建并部署一个线上已经有的资源
此时,我们再进行最后的实验,我们将本地项目删除,重新建设。然后执行部署,由于刚刚实验过的原因,我们已经在线上存在了这些资源,所以此时算是部署一个线上的资源。

此时可以看到,系统感知到这个资源本地没部署过,线上并且已经存在,所以此时需要确定是否覆盖。
总结
代码在其他场景被更新,需要我们在当前得到感知,这个事情其实是非常重要的,和代码的安全发布密不可少。而此时,通过 Serverless Devs 是可以做到的。
那么问题来了,如果我已经有了一个项目,我想集成到cd流程,我不想出现交互式操作,应该如何处理呢?
此时我们提供一个 --ues-local 参数,用来强行覆盖线上配置,通过这样的指令就可以实现无交互的,本地优先。
每一个工具的诞生,都要有一个成长的过程,Serverless Devs 正在不断的成长。期待更多更好的功能出现。
本文为阿里云原创内容,未经允许不得转载。
如何保证 Serverless 业务部署更新的一致性?的更多相关文章
- 利用WSUS部署更新程序
WSUS概述 为了让用户的windows系统与其他microsoft产品能够更安全,更稳定,因此microsoft会不定期在网站上推出最新的更新程序供用户下载与安装,而用户可以通过以下方式来取得这些程 ...
- 你的SpringBoot应用真的部署更新成功了吗
前提 当我们在生产环境部署了SpringBoot应用的时候,虽然可以通过Jenkins的构建状态和Linux的ps命令去感知应用是否在新的一次发布中部署和启动成功,但是这种监控手段是运维层面的.那么, ...
- 从Kubernetes到“云原生全家桶”,网易如何让业务部署提效280%?
近日,网易云轻舟微服务团队接受了CNCF的采访,分享了网易云在云原生领域尤其是Kubernetes方面的实践经验.以下为案例全文:公司:网易地点:中国杭州行业:互联网技术 挑战它的游戏业务是世界上最大 ...
- 基于serverless快速部署前端项目到腾讯云
腾讯云 COS 组件,可以快速部署静态网站页面到对象存储 COS 中,并生成域名供访问. 安装 首先要安装 serverless 组件 npm install -g serverless 在项目的根目 ...
- 分享一例测试环境下nginx+tomcat的视频业务部署记录
需求说明:在测试环境下(192.168.1.28)部署一套公司某业务环境,其中:该业务前台访问地址: http://testhehe.wangshibo.com该业务后台访问地址: http://te ...
- 在同一个方法里,有redis,数据库和api,如何保证方法的事务性或者最终一致性?
https://segmentfault.com/q/1010000017519179/a-1020000017547192
- 2020-04-11:A系统联机同步调用B系统(A和B不是同一公司系统,不能用分布式事务),如何保证系统间数据准实时一致性(设计思路即可)?提醒:需要考虑调用超时、并发、幂等、反交易先到等问题
福哥答案2020-04-12: 可参考微信支付和支付宝支付.
- CQRS\ES架构介绍
大家好,我叫汤雪华.我平时工作使用Java,业余时间喜欢用C#做点开源项目,如ENode, EQueue.我个人对DDD领域驱动设计.CQRS架构.事件溯源(Event Sourcing,简称ES). ...
- EMQX Cloud Serverless 正式上线:三秒部署、按量计费的 MQTT Serverless 云服务
近日,全球领先的开源物联网数据基础设施软件供应商 EMQ 正式发布了 MQTT Serverless 云服务 -- EMQX Cloud Serverless 的 Beta 版本,开创性地采用弹性多租 ...
- 单页面应用(SPA)重新部署后,正在浏览的页面如何更新缓存?
当单页面的系统在重新部署更新时,此时正在浏览网页,并且已经在网页内的用户,始终会使用老的js与css文件,一直在使用已经缓存了的静态资源. 所有的缓存问题焦点都在index.html上,只要index ...
随机推荐
- Unity3D 横板跳跃游戏半成品demo源代码
项目介绍: 基于B站的 Unity3D新手教程进行学习制作,但视频中的做法有很多BUG,此demo是经过优化,几乎修复了教程里带的所有bug. 实现了基本的功能比如:怪物ai,开始菜单,设置菜单,地图 ...
- 24_用Qt和FFmpeg实现简单的YUV播放器
前面文章FFmpeg像素格式转换中我们使用FFmpeg实现了一个像素格式转换工具类,现在我们就可以在Qt中利用QImage很容易的实现一个简单的YUV播放器了. 播放器功能很简单,只有播放.暂停和停止 ...
- 一种OSD 简单实现 (文字反色---opencv、字体切换---freetype2(中文、空格))
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- java 手动生成jni头文件(JNI静态注册)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- KingbaseES V8R6 运维案例 --ksql访问动态库问题
KingbaseES V8R6数据库运维案例之---ksql访问动态库问题 案例说明: CentOS环境下,在安装和初始化数据库实例后,启动数据库服务,通过ksql连接访问时出现以下故障: 经检查,是 ...
- KingbaseES Returning 的用法
概述 数据表更新时,如果需要对修改前后的数据进行记录或比较,需要返回更新前后的数据.KingbaseES 可以通过 UPDATE语句是否能直接返回影响的数据. KingbaseES支持insert,d ...
- python [pymysql] 操作MySQL数据库
python [pymysql] 操作MySQL数据库 连接.关闭数据库 def get_conn_(): """ :return: 连接,游标 "" ...
- Scala数值类型转换、算数运算符、关系(比较)运算符和逻辑运算符
原则 强制类型转换 Java : int num = (int)2.5Scala : var num : Int = 2.7.toInt 数值类型和String类型之间的转换 (1)基本类型转 Str ...
- CMake 构建指南:如何提高 C/C++ 项目的可维护性
如果您是一位C/C++开发人员,那么您一定知道在编写和维护大型项目时所面临的挑战.这些项目通常包含大量的源代码.库和依赖项,需要耗费大量的时间和精力才能构建和维护.在这种情况下,使用自动化工具可以大大 ...
- 华为帐号为AITO问界M5助力,打造懂你的智能座舱
12月23日,在华为冬季旗舰新品发布会上,AITO问界M5正式发布.华为赋能的AITO问界M5搭载HUAWEI DriveONE纯电驱增程平台和HarmonyOS智能座舱,并且带来华为终端云服务软硬协 ...