近日,翰德恩的学友会同学们与翰德恩高级DevOps咨询师、原京东研发效能专家熊志男老师就DevOps工具链展开了探讨。
Q: 熊老师好,公司要求我们自研或者基于业界的工具采购DevOps相关工具。您在京东等大厂有多年的DevOps工具经验,有几个问题请教。
A: 尽管问,请讲。
1.能一句话给个定义吗,所谓的DevOps工具链到底是什么?就是把各种工具都穿起来吗?
DevOps工具链是指为了使研发团队和运维团队在整个研发生命周期中能够无缝协作的工具集合,具体包含持续集成、持续交付、自动化工具和协同工具等等。然而仅依靠工具是无法实现DevOps的,文化、组织和技术手段是三个基本要素,而工具只是代表了其中的技术手段。
2.那么DevOps工具链有哪些必备的工具种类?
DevOps工具链必备的工具种类包含不同团队之间沟通和协同的协作类工具、制定排期和计划的工具、代码仓库、缺陷管理、配置管理、持续集成、制品仓库、自动化测试工具、部署工具、监控工具和数据仓库。
3.为什么需要DevOps工具链?没有工具链不行吗?
通过使用DevOps工具链可以带来的好处包含:通过自动化技术节约时间和资金成本、通过事件管理工具实现及时响应从而降低损失和风险、通过自动化技术提升开发和部署效率、通过缺陷管理和质量工具实现质量保障、通过度量和评估来找出效率瓶颈从而获得研发效率提升、通过质量左移和自动化技术实现效率和质量的平衡、增加系统的鲁棒性。总结起来,每个单独的工具都可以带来有效的价值,工具链的意义在于流程和数据的打通,实现多个工具组合起来形成一加一大于二的效果。
4.那么我们该如何构建DevOps工具链?
DevOps工具链不是一蹴而就的,主要从成本和收益两个维度考虑。基础设施类的工具是需要首先考虑的,比如基于云的基础实施管理、运维和部署;其次是在研发生命周期中涉及到不同角色必须使用的工具建设,如代码仓库、缺陷管理和事件管理等;接下来是实现工具整合和协同效率提升类的工具,如通过流水线实现多类型工具的协同,通过数据平台实现全生命周期的数据度量和分析。
5.DevOps工具链中的工具如何选型?
构建DevOps工具链可以选择的工具有开源工具、商业工具或者自研工具,那我认为选择的策略可以参考两个方面。首先从DevOps工具链发展阶段来看,初期为了快速实现工具链的完整和打通,可以优先选择开源工具或者商业工具,需要注意的时候工具之间的联通性,和是否有标准的数据模型;中后期为了满足企业内部的定制化需求,比如与内部其他工具系统打通,可以进行工具的定制化,或者通过自研工具来实现。然后可以从工具的能力属性来考虑,提供单点能力的工具,如自动化测试工具、代码扫描工具、机器和任务调度引擎等,选择开源的或者商业的工具较好,因为这些工具经过不断演进和发展在技术上具备先进性,功能上更加完备;而对于管理协同类工具,如效能度量、流程和质量管控和统一平台入口等具有企业特色的能力大多时候会选择通过自研来实现。
6.如何实现DevOps工具的定制化?
DevOps工具的定制化,主要指两个方面:一是指在链条上的相同节点的不同工具的选择,如流水线引擎的选择可以多样化,采用传统的Jenkins平台来实现是一种方式,另外也可以采用ArgoCD这种基于GitOps的工具。另外一个方面是指对于单个工具的定制化,通过调用API的方式,或者开发自定义插件的方式实现工具的定制化,对于开源工具来说,通过基于开源工具的二次开发实现定制化开发比起商业工具的定制化来说成本要低得多。
7.为什么需要构建一站式DevOps平台呢?
之所以要构建一站式DevOps平台,是基于以下几个方面考虑。首先是为了降低用户的操作成本,例如使用原生的DevOps工具大多需要通过编写脚本或者DSL语言来实现自动化任务的编排,而通过平台化可以实现界面拖拽或者操控按钮的方式代替。减少用户在不同工具之间的切换也能帮助降低用户的操作成本。然后通过不同工具之间的有机结合,实现整体效用提升的效果。比如精准化测试等事件需要多个工具之间更加丰富的数据传递和接口调用,平台化可以帮助实现此类功能。还有就是通过平台化实现数据的统一收集和度量,建立有效的效能度量机制,是驱动研发团队和平台本身朝着正确方向演进的不二法门。
8.业界是否有一站式DevOps平台的案例?
企业内一站式DevOps平台的案例全景图如下:
![](https://i-blog.csdnimg.cn/blog_migrate/5eab264378f9237df535522171e509c8.png)
9.企业建设DevOps平台一般会遇到哪些问题?
DevOps平台建设常常会面临以下问题:首先是平台的复杂性增加带来用户体验和使用效率下降。根本原因是企业内工具类产品大多时候早期缺乏合理的用户体验设计,而随着平台的功能增多,进行颠覆式修改的成本有很大,因此这样的设计债会拖累用户体验提升的进展。然后是与管理诉求的绑定,随着功能的完善,用户需求也越来越多,而平台建设需要投入的成本也会增加,因此往往平台建设团队通常会过多迎合管理来需求来换取资源的投入,这样会造成管理流程完善,但是一线用户使用体验反而降低的现象。还有大多时候会由独立的工具团队来负责DevOps平台建设,而这些团队自身的开发流程与模式与业务研发团队存在差异,而如果不能和相关研发领域专家很好配合就会造成功能脱离实际的情况。
10.展望未来,DevOps工具链有什么演进趋势?
DevOps工具链的演进趋势主要体现在以下几个方面:首先是多云环境的支持,目前越来越多的企业使用混合云的部署方案,无论从多云部署还是和云原生工具的集成角度都是必要的。然后是更加注重软件供应链的安全,随着平台化的演进,不同角色的用户都可能会通过平台操作来引入不同的风险,在整个软件研发生命周期中,需要通过DevSecOps等实践来确保整个软件供应链的安全。还有就是智能化技术在研发过程的的应用,比如通过低代码平台来快速生成软件系统,通过智能化测试技术来实现测试数据生成、用例智能推荐和精准化度量等。
Q: 感谢熊老师,让我对DevOps工具链平台清楚了很多,知道如何着手开始第一步。
A: 客气了。学无止境,翰德恩咨询伴您一路成长,为您解决数字化和敏捷DevOps转型过程中的各种疑难杂症。