加速应用上云的最后一公里

一次曲折的发布

我们说代码编写完成只是一个业务需求的开始,如何将一个需求快速发布上线、投入生产才是我们的最终目的。我们先从一个案例开始。

从前,有个开发同学叫小周,他的一次发布是这样的:

首先他要在代码平台手动创建代码分支提交代码,然后要编译构建,有可能是本地构建,也有可能是使用某个构建工具,构建好之后部署测试环境,需要先申请测试机器,然后去机器上执行某个脚本才能启动服务。

环境准备好之后才可以交给测试进行一轮、二轮测试验收,这一过程要重复很多次,每一次都要走好几步。验收通过后,发布上线还需要申请发布单,让运维同学帮忙去做发布。

这一整个研发过程花费很长时间,需要和很多个角色相互协作,而且需要在很多个平台之间来回跳转,比如代码平台、构建平台、资源平台、运维平台。

期间存在资源分散、流程混乱、结果不可预期等等问题,整个过程难以追踪,难以管理。通常一次发布需要持续一天,糟糕的时候一周甚至两周只能发布一次,严重影响研发效率。小周不禁感慨,发布难,难于上青天!

问题这么多,怎么办?

云效提供一站式应用交付平台,帮你加速应用研发流程,加速应用上云。

使用云效后,小周同学的一次发布是这样的:

1、收到业务需求,直接进入目标应用,创建应用变更自动拉取代码分支;

2、代码提交后自动触发流水线部署开发测试环境;

3、部署成功后自动通知测试同学进行测试验收;

4、验收完毕,小周同学可以一键点击发布生产,不需要填写申请单,也不需要找运维。

使用云效只需简单几步即可完成一次应用发布上线,整个流程更加简单、更加透明、更加顺滑。

那云效是怎么做到的呢

1、以应用为中心

首先云效以应用为中心来组织应用资产。通过应用来聚合应用的源代码、CI/CD流程、构建好的包,如maven包、npm包、docker镜像等等;以应用来聚合基础设施资源,包括线上线下环境的,比如企业自建的机房、在某个云厂商的采购的云主机或者k8s集群。让所有资源都以同一个维度、聚合在同一个平台集中管理。
此外,应用还为开发、测试、运维等多角色提供统一协作切面,所有同学都可以在一个应用视图完成主要工作事宜。
所有资源所有角色都使用同一个平台,减少各角色在多个平台来回跳转,减少流程割裂,打破了各角色职能壁垒。通过这种方式为企业提供一站式应用交付平台。

2、应⽤架构统⼀编排、终态定义

小周刚入职时,他负责一个应用的某一个模块,有一天服务启动失败了。他的师兄告诉他,你要先改一下这个配置,然后再修改那个参数,再执行脚本部署才行。

一个应用有好几套环境就有好几份配置和脚本,而且好几个人负责同一个应用,经常配置打架,来回改那么几次就完全乱了。每一次的部署结果都不一样,都不可预期,拉起服务就真的只能靠”人品”了。

云效以终态编排的方式统一应用的部署架构,改变了原来过程式、步骤式的部署方式,以声明式的方式来定义应用服务,同时支持k8s和主机部署,能够很好的支持应用云原生化转型过程的架构迁移。

针对多环境差异,云效支持编排占位符,支持将多个环境差异化的配置抽取成变量,实现一套编排多环境差异化部署能力,消除部署过程中的不一致风险,减少环境配置维护成本。

此外云效的应用编排还可以用白屏化、可视化的方式进行,配合应用编排模板,帮助用户快速上手,让小白用户也可以轻松编排并发布自己的应用,降低使用门槛。

3、测试环境一键创建、一键销毁

服务启动了,是一个好的开始。但我们在日常研发过程中经常会听到这样的声音:谁又动了我的环境?

有经验表明:测试和联调任务才是开发日常工作的主要部分,通常占据开发者⼯作时间的50%以上。

那么一个稳定、好用的测试环境就非常重要了,它能够极⼤提⾼开发者的⼯作效率和幸福感。

云效提供测试环境管理功能,帮助开发者高效自运维:

支持测试环境一键创建、一键销毁,无需人肉申请资源,测试资源按需使用,避免浪费;
联调过程中支持测试环境一键占用,锁定环境,我的环境我做主,保障测试环境稳定性,让独占稳定的测试环境成为可能。

4、多种部署策略、部署过程可观测可干预

测试完成后就到最后一步发布了,对于生产发布,云效支持滚动升级、分批发布、蓝绿发布等多种部署方式。

通常我们发布上线,会先发一个小的批次,进行灰度验证,验证没问题再逐步放大后续批次。云效支持精细化的分批策略设置,支持手动指定批次数量,精确定义分批过程。

此外整个部署过程可以实时查看部署进度,可以查看机器的执行日志。对于k8s部署,我们还支持查看pod关键事件、容器启动日志等,帮助快速发现问题、定位问题。遇到问题时可以一键暂停、一键回滚,保障发布过程的安全性,让开发自运维更可靠。

5、研发流程可视化、可管控

终于我们的发布流程走完了,小周入职半年后,这一套流程也已经非常熟悉了,这就是我们说的熟能生巧。
但个人效率高并不代表整个企业效率高。个人经验能发挥的作用范围,会随着个人的升迁、调动、离职而消失。只有将个人经验流程化,才能沉淀为组织资产,帮助企业提效。

云效支持自定义企业研发流程,将企业研发习惯、研发方式通过配置固化在平台上,这样小周就可以把自己的经验落实到平台上。

当公司有新人入职时,新人可以一眼看到研发流程,再也去问他的师兄了,也不需要去接手“祖传”的机器、“祖传”的脚本了。研发过程可以快速上手、快速执行,提升了整个企业研发运维活动的规范性、确定性。

此外我们日常研发过程经常还会遇到这样的问题,一段没有经过测试验证的代码发布到生产环境了,导致了线上故障。这是一种非常低级又常见的错误,那么有没有办法避免呢?

云效支持自定义变更规则,限制只有通过日常测试验收、通过集成测试验收的代码才能进入生产发布阶段,帮助企业守护研发质量。

此外云效还支持人工卡点、以及精细化的角色权限管控,让研发流程更安全、更可靠。

6、打通业务需求到发布的端到端流程

回顾我们整个过程,好像都没有提及到另外一个角色:产品。但其实产品同学无处不在,他每天都会来催你的需求,催你的进度。为什么要催呢?因为他不知道,所以要问。那能否有一个地方让产品同学实时看到进度呢?
云效将一次业务需求对应代码变化、配置改变或其他要素改变定义为一次变更,通过变更连接业务需求到发布,串联整个开发、测试、生产整个过程。

通过自动化规则实现一旦应用发布上线、应用变更完成、需求状态可以做到自动同步,让业务需求状态和研发进度一目了然。产品再也不用每天来催了。

总结

云效AppStack可以助力企业:将分散的资源转变为聚合的应用资产,将过程式操作转变为 终态声明式应用架构定义,将运维做发布 转变为开发高效自运维,将个人经验转变为平台固化的流程和标准,实现业务需求的全生命周期跟踪,让应用上云最后一公里更快、更顺滑!

有开发同学反馈说,使用云效后,可以一边喝着咖啡、一边听着交响乐,一边做发布,发布再也不用排队啦;运维同学说,使用云效后,所有资源都能在一个平台管理,再也不用好几个平台来回跳了,真正是解放了双手,解放了生产力;产品说,使用云效后,需求进度一目了然,再也不用每天去催进度啦。

云效让应用交付可看见、可落实、可传承,让一切井井有条

原文链接

本文为阿里云原创内容,未经允许不得转载。

猜你喜欢

转载自blog.csdn.net/yunqiinsight/article/details/128565710