引言
本来前几天刚体验了云效智能排查功能,这不没想刚过几天就来了次评测,这里我也算是延续一下前期的评测成果,简单说几句。
在前几次使用云效智能排查功能的过程中,对其快速定位问题和高效解决问题的能力留下了深刻印象,特别是在处理线上故障时,能够在短时间内锁定问题根源,大大缩短了问题解决周期,有效避免了因故障导致的服务中断或性能下降给业务带来的损失。而这次评测,我期望将从更多维度出发,包括但不限于功能全面性、响应速度、准确性、易用性及与团队协作的契合度等方面进行详尽探讨。
云效持续集成流水线 Flow
产品介绍
企业级持续集成和持续交付工具,通过构建自动化、集成自动化、验证自动化、部署自动化,完成从开发到上线CICD过程。通过持续向团队提供及时反馈,让交付过程高效顺畅。(点此直达)
产品优势
免费、注册即用:提供持续集成、持续部署等能力,基础功能不限人数,免费使用
高可用、免运维:无需购置构建机硬件或软件,节省大量成本;阿里云负责构建机和构建环境的日常维护和管理
深度集成阿里云:全面对接阿里云ECS/ACK/ACR/OSS等多种云服务,通过流水线串联阿里云产品整体使用路径
强大的发布策略:支持虚拟主机、K8S等发布方式;支持蓝绿、分批、金丝雀等多种发布策略,支持快速回滚
丰富的企业级特性:精细化的权限管控体系和消息触达体系;丰富的企业模板;支持流水线批量管理
一站式DevOps工具链:云效还提供项目管理、代码托管、制品仓库等产品,一套账号,打通所有系统,数据不再割裂。
产品规格
基础版是免费使用的,适用于小型企业或团队。它提供了无限人数的基础功能使用权限,并且可以购买升级基础资源包来增加代码管理、流水线和制品仓库等资源。
高级版价格为618元/人/年,适合较大规模的企业或团队使用。除了包含基础版的所有功能外,还增加了效能洞察功能,如企业数据统计、效能分析、资源可视化和权威解读等。此外,高级版还提供了代码安全功能,包括安全分析、成员行为安全和安全通知等。
基础资源包价格为1188元/人/年,主要针对资源容量不足的企业和团队。它包含了代码管理、流水线和制品仓库等资源,并且支持弹性伸缩和无限运行时长。
购买说明中提到,用户可以购买多个基础资源包来增加资源量,也可以与高级版套餐叠加使用。同时,阿里云网工单支持提供5*12小时的中英文在线支持以及专业敏捷研发培训(200人以上)。
这里确实也可以看出,云效是一个非常具有性价比平台。
Flow vs Jenkins
本结论出自官方文章(https://developer.aliyun.com/article/838420) ,在此只是借用其结论,具体测评过程以官方文章为准。
快速交付体验1 —— 通过云效进行ECS主机部署
这个去年在云栖大会现场就玩过了的,留给我的印象也是很深刻的,所以这里我决定再次通过实战来重温这一令人印象深刻的快速交付过程。这次的目标是部署一款经典的小游戏——2048。下面,我们将详细地走一遍使用云效实现自动化部署的步骤,感受其带来的便利性和速度优势。
通过开头地址直达,点击免费试用按钮。
首先,我们需要在云效平台上初始化一个新的流水线项目。登录云效账号后,进入云效流水线(Flow)模块,选择创建新的流水线。由于2048小游戏已经有现成的模板,我们可以直接选用相应的模板开始配置,这样可以极大地简化流程。
接下来,连接源代码仓库。无论是GitLab、GitHub还是阿里云Code,只需按照指引授权绑定我们的小游戏代码仓库。一旦完成授权,云效就能够自动拉取项目代码。
这里我们尝试使用阿里云的云效代码管理Codeup(https://codeup.aliyun.com/)
点击“添加库”- “导入代码库”,选择“URL导入”,并填写如下地址:https://code.aliyun.com/flow-example/spring-boot-2048.git 。
导入成功后如下图所示。
再回到云效流水线 Flow中,点击第一个添加流水线源。
选择“Codeup”,按如图所示选择代码仓库和默认分支,单击添加。
点击“主机部署”,制品按如图所示选择。
记得此处顺便查看一下体验主机的IP。
保存并填写体验主机的IP,点击运行。
值得注意的是,现在改版之后并不会像之前直接生成二维码!此处的活动校验会一直卡住,不知道是bug还是什么原因,后面的步骤需要进到服务器里手动操作,所以当看到主机部署完成后就可以回到ECS服务器中了!
根据下载路径 /home/admin/app/package.tgz 找到包。
cd /home/admin/app/package.tgz
解压文件。
tar -xzvf package.tgz
执行脚本文件。
sh deploy.sh
接下来访问外网IP即可看到。
依稀记得在22年也出过类似的活动,那时候可是直接生成二维码在手机上打开的,现在不知道为啥反而没以前方便了。
虽然此次体验并不是特别好,但是只是在预设上出现了一些bug。
总的来说云效还是可以依靠一条简单的命令或几次点击,就可以将简单的2048小游戏从代码仓库快速转换成一个在线可用的游戏服务。这也就是云效践行的云原生理念,通过高效的CI/CD实践,带给开发者极致的部署体验。只需一杯咖啡的时间,便能在浏览器中打开刚刚部署完成的2048小游戏,享受云效带来的高速创新成果。
快速交付体验2 —— 通过云效进行K8s部署
相较于传统的部署方式,Kubernetes可以更快的更新新版本,打包应用,所有应用都是容器,可以轻松做到跨开发、测试和生产的环境一致性;基础设施出现问题时,服务Pod能够根据生命自动创建和迁移,无需人工干预;并且以容器为单位对应用资源进行精确控制,极大的提高了资源利用率。
而云效快速交付除了直接部署到ECS主机外,还支持直接部署到ACK(k8s)平台。
下面通过一个spring-boot的项目来进行展示,示例代码库地址为:https://atomgit.com/flow-example/spring-boot.git 。
我们需要在云效平台上初始化一个新的流水线项目。登录云效账号后,进入云效流水线(Flow)模块,选择创建新的流水线,选择【Java · 测试、构建镜像,发布到Kubernetes集群/阿里云容器服务】
接下来,同样的操作,连接源代码仓库。
创建流水线之后会自动弹出添加代码源的窗口,这里选择刚才导入的spring-boot项目,并点击添加。
进入“镜像构建并推送至阿里云个人版”的任务进行编辑。如下图所示,点击”新建服务链接”,进行阿里云授权。同意授权之后,Flow会将创建好的服务授权自动回填写到表单中。
接下来完成区域、仓库的选取。标签填入“${DATETIME}”,表示以流水线触发时的时间戳作为镜像的标签,很多企业习惯将分支名或者tag作为镜像的标签,云效也是支持的,其他默认不变。
配置好之后在“镜像构建并推送至阿里云镜像仓库”任务的下方可以看到该任务输出的变量,这些变量可以在后续的任务中引用。关注其中的第二个和第三个变量即可,其中第二个是该镜像地址的公网地址,第三个是该镜像地址的VPC地址。这里推荐将镜像仓库和ACK集群放在同一个region,然后在后续的部署任务中选择VPC地址,以加速部署过程。
点击“Kubernetes发布”任务,进入配置。点击”新建连接”,进行集群授权,完成阿里云授权及集群选取。点击确认之后,集群信息会自动填到任务配置中。
最后界面如下图所示:
配置YAML路径,本示例中YAML路径地址为:manifest-app。
配置完毕,点击”保存并运行”触发流水线:
可以直接在浏览器中输入地址http://www.IP 进行验证。
在完成上述一系列详细的配置步骤后,该spirng-boot测试项目就已经部署到k8s里面了。
通过这样的自动化部署流程,不仅大大加快了应用迭代的速度,同时也确保了不同环境的一致性,增强了系统的稳定性和可靠性。借助云效流水线和Kubernetes的强大功能,开发团队能够迅速响应业务需求变化,实现持续集成和持续部署(CI/CD),有力地支撑DevOps文化在组织内部的落地实施。
代码质量检测 —— 通过云效进行代码质量检测
Flow 为主流语言提供了开箱即用的代码扫描能力,为用户提供了快速检测代码质量的能力。
Flow 提供了开箱即用的代码扫描能力,在流水线中添加「代码扫描」任务,即可启用。用户可以通过以下方式添加代码扫描任务。
使用模板新建流水线,选择包含 「代码扫描」 任务的模板
在已有的流水线中,添加新的阶段,并选择「代码扫描」任务
回到云效flow界面,点击【新手快速配置引导】。
选择java框架。
开启代码扫描模块,不管了,全部勾上,后面直接保持默认,点下一步即可。
完成后如下图所示:
这里要注意的有两个,这两个好像要收费,还是先取消吧。。。
再点击【并行任务】,添加一个【java安全扫描】
保存后尝试运行一下,发现还是有两个为收费项目,赶紧取消。。。最后结果如下:
最后也是可以打开每一项具体扫描内容来查看报告的,同时也可以根据给出的意见来进行一些优化。
至此,云效代码质量检测结束。云效Flow的并行任务特性也极大提升了代码审查的效率,使不同的扫描任务能够同时进行,减少整体检测时间。通过这种方式,无论是在敏捷开发环境还是大型项目中,都能有效地集成代码质量保障工作流,实现真正的持续集成和持续交付(CI/CD)的最佳实践。最终,用户将获得一份易于理解的代码质量报告,这为优化代码结构、提升团队开发水平以及维护产品的长期健康发展奠定了坚实的基础。
AI赋能DevOps——通过云效AI快速排查故障
点击【新建流水线】
我这里选择的是空模板。
进入空模板后如下所示,点击【添加流水线源】,选择【示例代码源】。
点击空任务,点击【添加步骤】,选择【Java构建】,选择Maven 2.2.1版本
点击【保存并运行】流水线,点击【运行】
等待大概7秒钟后,可以看到任务失败的告警。
进入到日志处,点击智能排查。
此时,可以看到给出了一些排查思路。
按照智能排查建议,修改前面构建步骤中的版本设置,保存后再次点击运行,可以看到流水线能够成功运行了。
通过这一系列的操作,云效Flow展现了其如何将AI技术应用于DevOps实践中,让开发者得以更加便捷、准确地找到和解决问题,显著降低了故障排除时间,提升了整个软件开发和交付过程中的工作效率。同时,这也反映了云效致力于打造智能、高效DevOps工具的决心,将智能化手段融入日常开发运维流程,赋能团队快速迭代和持续交付,进一步推动了DevOps文化的实践与发展。
在线敏捷研发 —— 通过云效快速进行团队协作开发
敏捷软件开发的实践最早出现在上世纪 90 年代。当时,一批轻量的软件工程方法和框架相继诞生,它们共同的特点是,相对传统软件工程,都遵循演进和迭代的模型,过程更加轻量灵活。其中 Scrum 和极限编程 (ExtremeProgramming)在实践上最为成功,影响最大。它们都是迭代和增量的软件开发框架,区别是 Scrum 只包含管理实践,而极限编程则同时涵盖工程和管理实践。
2001 年 2 月,17 位轻量级软件工程方法的代表人物,齐聚美国发布了后来产生巨大影响的敏捷宣言(参见 http://agilemanifesto.org/) ,敏捷宣言陈述了他们共同认可的关于软件的开发方法的理念,同样重要的是他们找到了敏捷这个词来总领这些理念。
敏捷宣言发布后,敏捷成为了一场运动,被迅速地推广和应用。敏捷专注研发交付阶段,站在业务的角度,目标是帮助产品和研发团队提升敏捷响应能力,也就是:“更早地交付价值,更灵活地应对变化”。
这一块本来之前是并未提到的,但是确实也是云效flow的一大亮点之一,所以这里还是想补充一下。
还是回到之前的云效flow流水线界面,这里可以看到两个邀请按钮。
点击之后会跳转到企业管理后台,当然,因为我是个人账号,所以这里就我一个用户。
这里也是对应着一套账号体系,在云效flow中,官方推荐以钉钉为中心的账号体系。
在这一账号体系下,企业所有成员(包括研发团队与业务团队)都在钉钉上建立和管理组织架构。研发成员通过钉钉认证登录系统,获取成员在系统中的角色信息,根据所属角色的权限进行研发活动。
在现代组织中,业务相关的研发人员都有两个维度的角色:一是组织职能角色,一是业务角色。其中组织职能角色是相对稳定的,而业务角色是在不断变化的。以钉钉为核心管理组织账号和组织架构,将云效与钉钉绑定,做到统一登录、统一管理。同时,定义不同的角色,并按照应用维度为不同的人员配置对应的角色,做到按应用维护角色、按角色管理权限。
上述也是实操了四大场景了,讨论了一个场景,还有一些比较重要的方面,比如:云效发布策略指南|滚动、分批、灰度怎么选?、多分支集成发布各种坑怎么填?、7招!实现安全高效的流水线管理等,官方已经提供了详细的文章,在此也不过多赘述了。
个人见解及评测
1)你的角色是什么,你之前是否使用过CI/CD工具,你/你们团队对CI/CD 工具的要求是什么?
本人主要从事运维工作,同时也算是一名热衷于DevOps实践的IT人士吧,其实在很早之前就已经体验过云效工具了,但是因为当初接触云效时单位还尚未和阿里云合作,所以只是以个人的名义进行了一些体验,学习了解了一下其基础的持续集成与部署功能。对于CI/CD 工具的要求我这边也整理了一下,大概有以下几点:
工作流自定义的灵活性:其实这一块云效已经做的不错了,允许用户根据自身的项目特点和团队工作流,自定义复杂的流水线逻辑,以满足多元化的业务场景需求,但是仍有很多优化的空间,可以集成更多的插件或者引用一些常见通用脚本;
安全性:对于在公有云上开发时使用的代码,要防止恶意行为者窃取源代码、侵入基础架构等,而云效在设计之初就充分考虑了安全因素,结合阿里云整体的安全管理体系,为企业提供了一套完整的安全保障措施,确保从代码编写到软件发布的各个环节都能在可控、安全的环境下进行;
成本效益:对于普通用户而言,云效是不收费的,其中部分组件才会收费,这一条也算是很良心的了;
全方位的可观测性:这一条不知道是我没有体验到还是确实没有,我们想要一个整体的全盘实时监控数据和可视化图表,以便于团队管理者快速了解流水线运行状态,追踪问题源头,并做出及时决策;
持续优化与更新:鉴于DevOps领域技术和实践的快速发展,我们也希望云效等工具能够紧跟潮流,不断迭代升级,提供最新的技术和最佳实践支持,同时也希望官方文档能及时更新。
2)你觉得Flow在新人上手方面是否简单、是否存在什么阻碍?
flow在易用性上其实还是没话说的,我个人用了几个小时就能很熟练的操作了,但是就是感觉文档方面可能更新的不是很及时,有时候用户在探索新功能或是遇到问题时,可能无法从官方文档中获得最新的指引,这无疑增加了自学成本。对于新人来说,缺乏详尽且与时俱进的文档指导可能会在一定程度上影响他们对Flow功能的全面理解和高效运用。除此之外,也期望能多出一些场景实践,在应对复杂的DevOps场景和个性化需求时,新人可能需要更多的实战示例或教程来加深理解。当前的文档与教程若能增加更多基于实际工作场景的完整实例演练,将有助于新人更快地将Flow应用到实际工作中,减少摸索和试错的时间。
个人建议,仅供参考~
3)Flow的产品功能、性能、开放性等方面能满足你的需求吗?Flow哪些方面做的让你满意,哪些方面觉得不足?
好的和不足其实前面也都提到了。
下面三点是比较值得称赞的:
工作流自定义的灵活性:其实这一块云效已经做的不错了,允许用户根据自身的项目特点和团队工作流,自定义复杂的流水线逻辑,以满足多元化的业务场景需求,但是仍有很多优化的空间,可以集成更多的插件或者引用一些常见通用脚本;
安全性:对于在公有云上开发时使用的代码,要防止恶意行为者窃取源代码、侵入基础架构等,而云效在设计之初就充分考虑了安全因素,结合阿里云整体的安全管理体系,为企业提供了一套完整的安全保障措施,确保从代码编写到软件发布的各个环节都能在可控、安全的环境下进行;
成本效益:对于普通用户而言,云效是不收费的,其中部分组件才会收费,这一条也算是很良心的了;
下面两点是指的改进和优化的:
全方位的可观测性:这一条不知道是我没有体验到还是确实没有,我们想要一个整体的全盘实时监控数据和可视化图表,以便于团队管理者快速了解流水线运行状态,追踪问题源头,并做出及时决策;
持续优化与更新:鉴于DevOps领域技术和实践的快速发展,我们也希望云效等工具能够紧跟潮流,不断迭代升级,提供最新的技术和最佳实践支持,同时也希望官方文档能及时更新。
4)对比其他CI/CD工具(商业或开源),你觉得云效流水线Flow在成本、功能、性能上是否有竞争力?你愿意推荐团队使用吗?
个人认为阿里云的云效的最大卖点其实就是全家桶。使用开源工具自建DevOps,往往项目管理是一个系统、代码管理是一个系统、持续集成又是另一个系统。每个系统都需要搭建不说,账号、数据都是独立的,维护起来很复杂。
选择云效DevOps,同一个阿里云账号,即可访问所有产品。
不仅如此,使用云效的DevOps项目,从任务->代码分支->代码提交记录->CI/CD发布进度,一个项目里面就可以了解全部,无需切换多套系统。
就这一点就决定了99%的阿里云用户都会选择云效,因为自建其他的实在太麻烦且难以管理了。
5)未来期望
我是真的期望云效flow能集成代码审计工具比如:Seay、Fortify等,如果有可能更期望能结合通义灵码开发出AI代码审计工具,收费都可以!
其他的也希望能进一步智能化,比如智能预测与风险预警、动态资源调度与优化等。
写在结尾的话
通过本次深度体验与对比,云效Flow在持续集成与持续部署领域展现出了卓越的优势与便捷性。对于中小型企业而言,云效Flow提供了简洁直观的操作界面,易于上手,减少了配置复杂度和维护成本,相比Jenkins等传统工具更加友好。特别是对于阿里云生态内的服务,Flow实现了深度整合,一键式部署至ECS或Kubernetes集群,极大提升了工作效率和部署安全性。
在实际部署过程中,无论是基于ECS的传统部署模式,还是利用Kubernetes进行现代化容器化部署,云效Flow均能实现自动化流水线构建,确保代码从提交到生产环境的快速流转。尽管在部分环节中遇到了一些小问题,如二维码缺失的情况,但总体来看,云效Flow依然保持着高度自动化和易用性,有助于开发者快速完成部署任务。
此外,云效Flow在代码质量管理和AI排查修复方面也表现出色,内置的代码扫描功能可助力开发团队实时监控代码质量,预防潜在风险。这种开箱即用的特性降低了技术门槛,使得各类团队都能享受到高质量的代码审查服务。
综合评价,云效Flow以其全面的功能覆盖、强大的发布策略以及与阿里云产品的无缝集成,为企业带来了高效、稳定的DevOps解决方案。尤其是在云原生时代,Flow的轻量化、智能化和一体化设计,无疑成为了现代企业提升研发效率、优化IT运营流程的理想选择。
未来随着云效Flow不断迭代和完善,有望进一步消除现有挑战,强化其在市场上的竞争力,成为企业实施DevOps战略、构建云上敏捷开发流程的核心工具之一。对于寻求快速部署、高效协作及持续改进的企业来说,云效Flow无疑是值得考虑和信赖的云服务伙伴。