DevOps 已然家喻户晓,如果你还没听过,那确实要去补补课。随着敏捷研发的普及,一种快速响应业务、高效运维的模式必然深得众心,Git 的发展近来几乎在代码管理领域一骑绝尘,在此基础上衍生出 GitOps 的概念,成了DevOps 理念的最佳实践(如果 SVN 也有这种能力的话,出现一个 SVNOps也不是不可能)。
常见的管理概念,如研发管理、团队管理、项目管理、产品管理等,DevOps理念基本也都穿插其中,顺便翻了几个产品,Teambition、禅道、TAPD、阿里云效、极狐Gitlab、Gitee等等,没有 DevOps 都不好意思出来讲故事、搞营销、做增长。
DevOps 比较核心的理念当然还是 CI/CD,你自然会联想到 Jenkins ,很多小伙伴想当然的 DevOps 就是 Jenkins,即便有一站式的平台,很多小伙还是比较倾向于 Jenkins,虽然有时候还需要亲自动手安装配置很多东西。云原生背景下,Jenkins 也不是唯一选择,ArgoCD 等爆发新生态的力量。但工具不能独立存在,必须融合起来才能发挥更大的效能。CI/CD 是核心,但远不是DevOps 的全部,不能以偏概全。
- 项目管理,包括5大阶段(计划、启动、执行、收尾、监控)、9大领域(采购、成本、风险、沟通、质量、范围、人员、时间、整体),范围不可谓不广,基本覆盖整个软件过程。工具选择常见的 JIRA、Basecamp、Teambition、禅道、TAPD 等都是可选项。
- 代码管理,代码仓库管理,制品库管理,还包括配置过程,GitOps 实践是基本一切可以交由 Git 来进行管理配置,比如软件、环境、参数。制品库呢?Java体系下服务模块输出的 jar 包、容器化部署时产生的yaml配置等等,都可以作为制品库存在,方便使用时直接引用,而不是重新编写。
云IDE的出现,更是将云原生推向了极致,本地还需要安装开发环境吗?Localhost即将成为过去式,一个浏览器中搞定所有研发流程的方方面面。
- 流程管理,这里的流程重点指CI/CD流程,即持续集成、持续交付(部署)流程,Jenkins Pipeline 绝对是领域内的王者
- 知识管理,这也是很多管理者容易忽视的点,技术传承靠知识,沉淀落到实处就是文档,设计图、思维脑图、问题总结、各种研发规范、操作指南等等,企微飞书钉钉都有文档功能,独立的应用 Confluence、语雀、Notion 等等
- 质量管理,开发阶段关注代码质量、测试阶段关注产品质量,但两者又是相互依存关系,没有好的代码质量就不会好的产品质量,常见的代码质量检查工具如Findbugs、ESLint 等等,SonarQube 提供了一个好的结果载体,将结果留存展现出来,嵌入到CI流程中去,可以即时的发展问题解决问题。
- 效能管理,研发绩效管理并非不能无迹可查,任务完成及时度、Bug 重复打开率、Bug 缺陷级别统计、版本交付偏差率
回头再看 DevOps,可谓面面俱到,至于工具选择,因时因人而异。每个工具都有自己的基本盘,再由基本盘衍生而来来定义 DevOps,比如 Gitlab 基本盘就是代码仓库,再基于此衍生 CI/CD,继而其它。禅道的基本盘就是项目管理,DevOps 如何实现做?它就把自己变成集成商,将 Jenkins、Gitlab、SonarQube 等等通过 Toekn 的方式跟自己打通,进而在禅道里一站式管理。
工具只是用来给人、给团队赋能,并不能完全取代组织里的各个角色的主能动性,背后的文化至关重要,单纯工具的运行,离开人的参与肯定也会千疮百孔,东西是好东西,得看念经的和尚能不能念好。