阿里云弹性计算技术专家林小平:如何实现应用的持续发布?

2022 年 7 月 25 日,「云上自动化运维 CloudOps 系列沙龙_第二弹」正式开启。阿里云弹性计算技术专家林小平带来了主题分享《如何实现应用的持续发布》,本文根据其演讲内容整理而成,主要分为四个部分:持续发布总结、持续发布建设路径、云上持续发布实践、应用持续发布。

持续发布总结

在这里插入图片描述

在发布过程中,大家经常会遇到很多问题:

  1. 在手工部署时,由于发布时间过长,会频繁出错,需要手工修正发布;

  2. 当环境脱钩时,由于各环境差异较大,没有类生产环境,导致环境问题凸显。由于环境的不稳定,在第一次部署时,无法判断线上的情况;

  3. 在集群发布时,由于各个环境的配置不同,需要手工修改。此时配置节点的情况几乎是不可控的。如果直接修改生产环境配置,其风险相对较大;

  4. 当发布时出现多个开发协作,频繁更新,会出现互相阻塞的情况。此时,运维、开发、测试的协作成本非常高。

在这里插入图片描述

希望在持续发布的过程中,可以实现多人开发,简单部署,环境稳定,持续自动化验证,功能快速迭代,支持设置发布模式,保障功能稳定。当发布时出现问题,能够快速回滚到稳定版本,并快速反馈问题。

在这里插入图片描述

度量往往会直接影响团队行为。如果选择代码行数,作为开发人员的指标,开发人员为了业绩,不会将代码写的很精简。这种现象被称为霍桑效应。

在交付的过程中,可以选择周期时间作为度量。周期时间是指从开始开发,到最后交付的时间。

比如在资源准备时,从环境资源开始准备,到环境完全可用的时间段,就是资源准备的周期时间。如今在云上,大家申请预算之后,可以在线上直接购买,大幅缩短了资源采购周期。

发布效能,是从功能开发验证,准备发布到交付客户的时间段。包括发布的准备时间,发布环境的配置时间,灰度时间,发布反馈问题的速度等等。

持续发布建设路径

在这里插入图片描述

为了缩短周期时间,需要实现全流程的自动化。从构建、部署、测试、发布等各个环节,将环境,软件包,网络配置、基础设施、外部服务等功能,全部纳入版本管理。

在发布应用时,需要准备软件所需要运行环境,配置所需的基础设施,外部服务依赖等。将软件运行至安装环境,同时配置所需的数据和状态,就能完成软件交付。

在版本管理方面,包括需求文档、测试脚本、自动化用例、网络配置、数据库的创建、升级、初始化、回滚等等,都需要进行版本管理。

除此之外,团队需要达成共识。在持续发布的过程中,团队要遵循发布规范,持续改进整个流程,确保风险可控。

云上持续发布实践

在这里插入图片描述

接下来,讲一讲持续发布的相关步骤。在环境准备方面,进行模版输入,使用已有模版或自定义模版描述云上环境。任何输入参数,执行自动化部署。最后,查看各资源部署完成情况,并进行后续管理。

该资源准备过程,适用企业快速上云,按需批量部署,应用需要资源快速复制,使用已有资源快速构建应用。

在这里插入图片描述

在持续构建方面,需要把提供服务的代码包,打包上传到 OSS。用户通过输入相关的环境参数,拉取对应的软件包。然后,通过运维编排,拉取对应包信息到 ECS 上。云助手通过执行对应的部署脚本,启动应用,对外提供服务。

当业务不断扩展,机器无法支撑服务时,可以通过弹性伸缩,快速提供机器的扩缩容,从而实现自动化部署。

在这里插入图片描述

在持续发布方面,主要基于弹性伸缩的滚动升级。首先,关闭扩缩容活动,然后对实例进行分组,让实例进入备用状态。对应的实例在发布的过程中,不会对外提供服务。完成发布后,实例退出备用模式,对外提供服务。

滚动升级适合金丝雀发布、蓝绿发布、分批发布等能力。在运维编排中创建软件包,已创建伸缩组并添加 ECS 实例,执行滚动升级任务即可。

应用持续发布

在这里插入图片描述

接下来,讲一讲在持续发布过程中的发布原则。应用发布是一个低风险、频繁、低成本、迅速且可预见的过程。在这个过程中,需要做到脚本化、版本化、可重放、可反馈。

在自动化方面,要实现自动化部署、自动化测试和自动化反馈。

在管理方面,要完善版本管理、依赖管理、环境管理以及配置管理。实现快速回滚、快速重复发布、可追溯。当出现问题时,能够持续改进,频繁迭代,快速反馈,缩短生产周期。

提高生命周期交付的可追溯性和可观测性,能够让发布变得更有效。

在这里插入图片描述

如上图所示,持续发布的相关服务,主要包括上云、环境准备、代码构建、自动部署、持续发布。

在环境准备方面,可以通过 ros、terraform、ecs、acs、oss 等云资源产品进行准备。在代码构建时,可以通过 acms、erdc 云效,进行应用配置管理。

在自动部署方面,可以通过 edas 或者 OSS 进行部署构建。在持续发布方面,可以通过 rdc 云效自定义部署流水线,通过 autoscaling 进行持续发布。

Q&A

霍桑效应是由于研究对象意识到自己正在被研究,从而带来的人为效应。请问在云上自动化以后,能不能完全的避免这种情况?

答:需要要判断在持续发布时,哪种度量方式比较好。假设度量指标是一个错误指标,霍桑效应会导致结果出现偏差。如果度量指标是可信的,霍桑效应会让指标变得越来越好。

由于流水线部署涉及到的资源相关、数据相关、控制相关等关联问题。如何高效解决可能遇到的问题?

答:流水线部署一般在应用里部署。在设置应用时,需要设置资源数据权限。除此之外,还可以利用云上的访问控制能力进行加强。

阿里云弹性计算技术专家林小平:如何实现应用的持续发布?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340