今日,小王去面试开发,但万万没想到... ...
小王:您好,我来面试开发职位。
面试官:您好,请问您有过 DevOps 经验吗?
小王:Emmm…
First blood
面试官:CI/CD 是否有了解呢?
小王:……
Double kill
面试官:如果您有这方面的知识的实践,会特别加分。推荐您一个课程:
一次演讲,一场革命
2009 年,Velocity 大会,一场题为 “10+ Deploys Per Day: Dev and Ops Cooperation at Flickr” 的分享给了 DevOps 创始人 Patrick Debois 很大的震动,也拉开了 DevOps 发展的大幕。经过 10 余年的发展,DevOps 的理念和实践已经遍及全球。
从国内来看,DevOps 已经成为了各大企业进行研发效能提升的必备手段。根据中国信通院发布的《中国 DevOps 现状调查报告(2021)》显示:中国企业 DevOps 落地实践成熟度在全面级继续扩张。
成熟度处于全面级的企业最多,为 35.40%,同比增长 8.84%,具备工具化、 自动化、规范化的特点;16.53% 企业的实践成熟度处于优秀级,具备平台化、 服务化、可视化与度量驱动改进的特点;0.87% 的企业处于卓越级,能够实现 DevOps 的高度智能化、数据化及社会化的特点。
在 DevOps 发展的过程中,逐渐沉淀或延伸出了很多落地实践的方法,诸如持续集成(Continuous Integration,简称 CI)、持续交付(Continuous Delivery,简称 CD)、持续部署(Continuous Deployment,简称 CD)、持续测试(Continuous Testing,简称 CT)、安全“左移”(DevSecOps)、部署策略及配置管理等。而其中的 CI/CD 是最为大众所熟知的。
CI/CD 的底层逻辑
Sanjeev Sharma 在《DevOps 实施手册:在多级 IT 企业中使用 DevOps》一书中写道:DevOps 有两个关键核心能力:持续集成及持续交付。没有这两种能力,就没有 DevOps。这两种能力连同其他扩展能力或者支撑能力是实施 DevOps 所必须考虑到的。这两个概念聚焦于周期时间最小化。
这本书是由极狐GitLab 高级解决方案架构师万金老师翻译。
周期时间:从需求或者用户故事开始到把能力交付到客户手中,或者至少是完成集成、测试并已为部署到客户机做好准备的时间。
正因如此,CI/CD 常常被拥抱 DevOps 的企业奉为圭臬,作为 DevOps 落地实践的第一步,因此也经常会听到“DevOps 就等于 CI/CD”的论述,虽然是一种“反模式”的论断,但是足以看出 CI/CD 的重要性。
CI/CD 的本质是:围绕软件开发生命周期,通过梳理流程,尽可能将所有流程、步骤进行自动化处理,从而加速软件交付。优秀的 CI/CD 流程设计会有很多收益:
- 节约时间,节省人力
通过自动化的手段省去众多手动操作,自动执行多项并行操作,节省人力成本的同时节省大量时间。
- 安全为底,保证效率
安全是应用程序的底线,应该将安全防护手段嵌入到 CI/CD 中,做到安全的持续自动化,让每一次代码变更都经过安全检测的“筛子”,让部署变得充满信心。同时,安全的嵌入不应该降低整体的交付效率,需要对于安全防护手段进行优化,在保证安全的前提下保证效率。
CI/CD 的顶层设计
CI/CD 是一个涉及多流程(编码、构建、测试等)、多人员(研发、测试、运维、安全等)的过程,并不是一件一蹴而就、一劳永逸的事情。需要企业根据自身的实际状况(项目情况、团队能力、客户需求等)进行设计。但是有几个原则是通用的:
- 工具为辅,数据为主
工具是 CI/CD 落地实践的有效支撑,但是过多的工具链容易造成运营成本的上升(安装运维)、数据孤岛的形成(不同工具的数据模型不一致导致)、难以构成研发闭环(数据反馈难以到达研发侧并与研发流程结合)等问题。工具是手段,重点是数据的处理,数据的流动带动价值流的快速流动。
- 循序渐进,持续优化
CI/CD 设计是一个循序渐进的过程,先打通正向流动(将编码、构建、测试、部署等“串”起来),再做好反馈,将每个步骤中的数据(构建结果、构建报告等)反馈到对应的人员,为下一步行动提供数据支撑,最后需要根据项目的需求、团队的发展等做持续的优化,让 CI/CD 变成真正能够提升研发体验、提高生产力的重要利器。
- 安全为底,保证效率
安全是应用程序的底线,应该将安全防护手段嵌入到 CI/CD 中,做到安全的持续自动化,让每一次代码变更都经过安全检测的“筛子”,让部署变得充满信心。同时,安全的嵌入不应该降低整体的交付效率,需要对于安全防护手段进行优化,在保证安全的前提下保证效率。
极狐GitLab CI/CD
极狐GitLab 不仅仅是一个源代码托管平台(虽然《中国 DevOps 现状调查报告(2021)》显示,在代码管理中,GitLab 以 53.45% 的占比位居第一,远高于排名第二、三的 GitHub、SVN,占比分别为 24.91%、23.75%),CI/CD 也是其非常重要的功能特性,自 2015 年正式推出以来,经过多年发展已经变的功能强大,也是众多企业的选择。同样根据《中国 DevOps 现状调查报告(2021)》显示,在持续集成与流水线的使用比例中,GitLab CI 以8.86% 的占比位居第二,仅次于 Jenkins,远高于 Travis CI 和 Bamboo。
极狐GitLab CI/CD 具有如下特点:
- 开箱即用,简单易用
极狐GitLab CI/CD 无需安装配置第三方工具,只需要配置 .gitlab-ci.yml 文件即可,节约了众多工具链的学习、运营及时间成本。
- 功能众多,快捷高效
经过多年的迭代演进,极狐GitLab CI/CD 有众多功能特性,诸如有向无环流水线、父子流水线、多项目流水线以及合并列车(Merge Train)等来方便用户快速构建高效的 CI/CD Pipeline。
- 数据反馈,研发闭环
极狐GitLab CI/CD 的构建结果以及报告(测试、安全等)直接反馈到 MR(Merge Request)中,打通了各个环节的数据流,避免了数据孤岛的形成,同时为研发、代码审核人员提供代码是否能够合入的决策能力,从源头保证代码质量以及应用程序安全。
- 安全构建,安全交付
极狐GitLab DevSecOps 的七大功能能够直接集成到 CI/CD 中,为应用程序提供构建到上线的全流程安全保障能力,同时能够做到安全报告的统一展示透明、安全漏洞的修复管理透明。