从DevOps实践者的角度谈谈云效Flow

简介: 这篇文章是一位DevOps实践者对云效流水线Flow的评测。首先介绍了自己参与评测的背景,并对Flow的易用性给予了肯定,认为它适合新手,尤其是可视化的编排功能。然后,作者讨论了Flow在新人上手、产品功能、性能和开放性方面的表现,指出Flow在插件开发能力和YAML编排体验上存在提升空间。他还提到了YAML编排的学习曲线和与可视化的结合问题,以及任务管理和步骤名称的混淆。此外,作者建议Flow增强模块间的逻辑性和交互清晰度,以提供更顺畅的工作流程体验。最后,作者总结了Flow的优点(功能齐全,适合中小企业)和需要改进的地方(业务逻辑、制品库能力和私有化场景的支持),并对其未来发展提出了期待。

偶然看到云效流水线 Flow的评测活动,作为一名DevOps实践者,从事相关的平台落地工作,和一线的研发打交道比较多,对这个评测很感兴趣,就随便写点。

https://developer.aliyun.com/topic/flow2024?spm=a2c6h.27234800.J_6638147300.3.318159efXWtFlW

先说评测结论

1)你的角色是什么,你之前是否使用过CI/CD工具,你/你们团队对CI/CD 工具的要求是什么?

DevOps实践者、产品经理。用过很多,除了传统但很流行的jenkins,  还有开源的gitlab-ci, drone, 包括商业的coding, 华为devcloud, 百度云等。

对于团队来说,简单上手傻瓜,入门成本低,低侵入是最基本的要求,研发团队一般都不喜欢折腾,交付压力已经很大了,还要学习什么是CI/CD, 开玩笑,呵呵。

2)你觉得Flow在新人上手方面是否简单、是否存在什么阻碍?

我觉得Flow对新手来说,还是比较简单了,可视化编排很方便。

如果要说阻碍,可能还是了解各种术语(变量,服务连结,),如何丝滑的编排设计好的流水线。不过大部分提供的模板,也都够用了。

3)Flow的产品功能、性能、开放性等方面能满足你的需求吗?Flow哪些方面做的让你满意,哪些方面觉得不足?

从功能上来说,流水线本身需要的能力基本都具备了,可视化编排,变量,触发器,插件机制,流水线模板等等。

从开放性上来说,可能需要提高,Flow内置的插件理论上可以满足企业常规需求,不过很多企业内部有很多个性化的需求,建议可以开放插件开发能力。虽然也看到了类型Flow-CLI类型的工具,不过感觉还是包装的不太好,比如可以把这个功能更好的暴露出来,提供类似插件市场,提供更加友好的发布渠道,丰富Flow的生态。

4)对比其他CI/CD工具(商业或开源),你觉得云效流水线Flow在成本、功能、性能上是否有竞争力?你愿意推荐团队使用吗?

我经常会去体验其他CI/CD工具(商业或开源),自己所在团队没有使用效Flow(私有化场景),主要从用户体验和生态上说说吧。

  • Flow本身没什么太大问题,相比于coding,我觉得云效Flow模块是更好一点的,比如插件更丰富,很细致。
  • 我个人觉得,主要问题还是在整个devops的业务流程上,不够清晰吧,前几年我就吐槽过。这两年有了改进,通过菜单和工作台的方式,对各个模块进行了交互和联通。不过模块之间的业务逻辑性还是需要进一步加强,毕竟devops是端到端的交付,各个模块肯定会有交叉和联系,需要让用户感受到。

之前也写了一些评测

对于Yaml流水线的使用体验

对于传统的可视化编排,我觉得云效基本上已经很成熟了,包括各家产品在内都有这样的能力,差别主要在于整体对于可视化编排的底层执行引擎,以及编排的模式,周边生态的差别。

今天主要想聊下YAML编排,这也是目前的趋势,未来都是yaml工程师。老实说,YAML编排各家都还在起步迭代阶段,还不算特别成熟,另外用户的可接受程度也需要培养(PS: 从可视化编排到YAML编排,对于用户的要求和素质会有所增加,特别是连可视化编排都还玩不转的情况下,YAML基本就懵逼了)

提到YAML这种模式,最早应该是在gitlab-ci上面体现最早的,本来就是基于gitops的思想,一切皆代码。

结合云效YAML,探讨个人对于YAML编排需要解决的问题

  1. 上手难度,gitlab-ci yaml我觉得需要一定成本的学习,掌握很多标签用法
  2. 针对第一个问题,其实包括云效在内都提供了(如下图所示)插入片段的引导,这个算是第一个初级优化。

  1. 尽管提供了片段引导,但是目前还是靠手工去手动复制,如果加工插入的功能是不是更好。这个倒不是重点,重点是如何像写代码一样做编辑使用,比如提供诸如“语法检查”、“智能提示”、“上下文的提示检查”,我想这样的编辑体验会好很多。

  1. 进一步,需要考虑YAML和可视化之间的关系。两种思路,一种是彻底就是yaml编辑了,可视化只是在运行时候展示;另外中就是yaml和可视化之间做映射(比如可视化编排界面创造yaml)。我觉得都可以接受,后者会难一点,需要做妥协。
  2. YAML化后,如何教用户去组合编排?如下图,比如我要加一个拉代码的操作,我似乎没有找到可以加的地方(这个还建立在我知道在哪里去加的基础上)。如果我是小白,不知道加的顺序,任务之间可能还有依赖关系呢?

  1. 对于YAML, 目前的任务参数不支持感觉。简单说,就是对于参数变量的引入,传递,组装,感觉目前做的还太少。在复杂场景下,YAML依然需要解决这些问题。
  2. 上手问题解决后,就回到YAML的本质。为什么需要这样编排?原有的可视化编排不够吗?个人观点,其实还是要践行一切皆代码,让YAML也回到代码库里,作为pipeline.yaml,导入代码,即刻直接运行流水线。

其他问题

任务/步骤名称含义模糊

例如,任务管理/步骤管管理,从中文的含义上,其实很容易模糊,意思差不多。实话说,我觉得任务管理优点鸡肋,粒度介于“步骤”和“流水线模板”之间,有点类似于“任务组(group)”的性质。我觉得,应该着力去发展“流水线模版”,作出公司级或者团队级别。

模块间缺乏逻辑性,交互不清晰

比如在代码库模块,可以新建流水线,但是点击跳到了 Flow流水线模块。我是觉得代码模块就专注于代码审核/代码扫描即可,即使是内置的扫描任务需要流水线,应该以另外方式呈现(如下面的流水线(系统来源))。

我理解,可能是因为针对某个代码库,建立流水线子组,最后所有这些子组最终聚合在流水线模块。也能理解吧,不过是否要思考“流水线”是什么?流水线本质是编排用的,更多是组织各种代码构建,各种集成任务,各种资源的。形象点说,流水线其实就是研发团队的日常业务活动的具体体现。

从流水线角度去统筹考虑,是不是会好点?如果从代码库角度去对应流水线,最终就会很散,不清晰。(PS:最近看到了APPStack的功能,我揣测可能阿里产品经理,也意识到了这个问题,所以通过另外一种形式去弥补)

如下,通过【应用】重新去组织之前比较散的实体和过程,让研发过程变得更加清晰。

总结

最后,做个简单总结,说下我对云效Flow整体的评价

  1. 从功能上来说,我觉得Flow没有什么问题(比如部署这块提供了蓝绿/灰度等等),对于中小企业,特别是在阿里云上开展业务的公司,最适合不过了。

  1. 不足之处,还是业务交互逻辑吧。比如从菜单开始,DevOps本身业务逻辑涉及需求到最后部署上线,最好能在一个视图,让用户体会到关联性,说白了就几个实体 【需求】-【代码】-【流水线】-【制品】-【环境】,让用户感受到之间的关系,而不是跳来跳去。逻辑上,能让用户马上知道这块负责什么(明确各自的边界和职责,关联通过数据结果体现)。

  1. 制品库能力需要提高, 在我写这篇评测时候,阿里已经发布了新功能😄。不过相比于友商,还是来的有点晚。目前功能还有待完善和加强。

  1. 云效本身带着阿里云的基因,所以,客观造成了对于私有化场景还是能力欠缺的(不是技术,是业务场景)。对于周边工具生态的整合,也需要提升,比如常见的sonarqube, nexus等。
相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
SVN版本控制系统
SVN是现在软件开发之中的主流软件版本控制工具,在工作之中利用SVN可以有效的解决多人开发的代码管理问题,本课程将为读者讲解SVN服务器的配置以及基于MyEclipse的SVN客户端插件的配置与使用,并且在讲解之中着重讲解了冲突的产生于解决。
相关文章
|
3月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
113 2
|
4月前
|
弹性计算 监控 JavaScript
云效Flow:打造高效、稳定的CI/CD流程实战指南
【10月更文挑战第7天】本文介绍了“云效Flow”这一CI/CD工具,通过实际案例展示了其在Node.js项目中的应用,包括自动化构建、测试及部署流程。云效Flow支持多种开发语言与框架,集成第三方服务,提供详尽的新手引导,简化了CI/CD流程的搭建,提升了开发效率与软件质量,特别适合初创团队和大型企业使用。
181 4
|
2月前
|
数据可视化 关系型数据库 MySQL
阿里云开发者社区12月更文特别活动分享:🌍PolarDB、🧹OS Copilot和🧰云效Flow深度体验
本文深入探讨了阿里云的三款核心产品:PolarDB MySQL、OS Copilot和云效Flow,分别聚焦于云数据库、系统运维和DevOps流程管理的功能、表现及优化建议。通过多场景评测与实验,展示了这些产品在提高效率、简化操作和增强系统稳定性方面的显著优势。
|
2月前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
3月前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
在DevOps实践中,确保安全审核和合规性至关重要。通过自动化合规审查、持续安全集成、基础设施即代码管理、敏捷合规框架、跨部门合作、教育与培训、实施DevSecOps模型、使用安全编码技术、整合正确工具及采用安全即代码等措施,组织能有效管理并降低合规与安全风险,促进高效可靠的DevOps文化发展。
|
3月前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率
在DevOps实践中,为平衡开发速度与安全审核效率,可采取自动化安全测试、安全编码实践、持续监控与日志分析、集成安全工具、合规性代码审查、基础设施即代码、权限和访问控制、安全培训、漏洞及补丁管理和持续反馈改进等措施,确保高效安全的开发流程。
|
3月前
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
3月前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
85 4
|
3月前
|
运维 安全 Devops
DevOps实践中的安全审核和合规性
DevOps实践中的安全审核和合规性
|
3月前
|
监控 安全 Devops
DevOps实践中,如何平衡开发速度和安全审核的效率?
DevOps实践中,如何平衡开发速度和安全审核的效率?