DevOps 落地笔记

开篇词 | 落地 DevOps,你需要一个全局视角

你好,我是 DevOps 亮哥,一个打算在 DevOps 领域持续深耕下去的老程序员,目前就职于一线互联网公司,从事 DevOps 平台的架构设计和团队管理工作。

我与 DevOps 的“十年之缘”

说起来很幸运,入职场十年,我算是经历了软件开发方法更新迭代的整个过程,也实际经历了不同行业企业里从瀑布模型开发,到敏捷开发,再到现在 DevOps 开发的整个演变历程。

职场前半程,我一直在国企参与建设几十人协同开发的大型软件项目,当时采用的都是瀑布模型开发,至今写用户需求说明书、概要设计、详细设计的场景依然历历在目,一个项目从立项到上线不夸张地说,至少要经过 2 年!

后来,基于精益思想的敏捷开发方法出现了,它强调“响应变化”,通过小批量迭代的方式不断更正开发中的软件,以达到满足用户需求的目的。但敏捷软件开发也有局限性,只注重开发阶段的敏捷,并未涉及软件开发流程的其他环节,导致很多企业在采用敏捷开发后效果并不明显。

职场后半程,我加入百度工程效率部,从事支撑万人研发团队的 DevOps 效能平台的设计与研发工作,深度实践和积累下大量的 DevOps 平台建设经验,真正认识到 DevOps 的魅力所在。后来在互联网银行全程参与中国信通院组织的 DevOps 全面级认证过程,也让我更系统、更全面地了解了 DevOps 平台的功能与价值。

DevOps,从软件开发全生命周期的角度出发,优化研发流程,提高研发效率和产品质量,切实解决了企业在软件开发过程中遇到的问题,为快速交付高质量的软件提供了帮助。从精益和敏捷发展起来的 DevOps 已经逐渐取代精益和敏捷,成为新一代的软件开发模式。

Drawing 0.png

来自:百度指数

当下市场竞争日趋激烈,DevOps 成为企业数字化转型的助推器,它扮演着基础设施的角色,通过加速业务创新,保证业务系统稳定运行

无论国有企业、一线互联网公司,还是初创公司,越来越多地设立了专门的工程效率部、效能平台部等,广招 DevOps 人才来提升企业的整体研发效能。真正懂 DevOps、有过 DevOps 平台研发经验的工程师,在未来很长的一段时间内,都会是市场的香饽饽。

Drawing 1.png

招聘数据来自拉勾网

如何更有效做好 DevOps?

最近几年,我都在面试 DevOps 岗位的候选人。面试过程中,我有两个必问问题:“你们公司是如何应用 DevOps 的”,以及“你是如何理解 DevOps 的”。借此,我可以了解到国内的 DevOps 应用现状,以及相关从业者对 DevOps 的理解程度。

我发现,国内企业都已经开始通过自研工具或开源工具应用 DevOps 了,基本上都是先从自动化入手,将之前手动编译、打包、部署等环节转变为自动化方式。但是大多数企业的 DevOps 之旅也都停留在这个阶段,他们认为到这里企业就已经 DevOps 了。

这个结论和第二个问题的答案是完全匹配的。候选人在回到第二个问题时大多会认为:使用了 DevOps 工具,能够自动化部署,就是 DevOps 了。而事实上,DevOps并没有限制使用什么样的工具,强调的 DevOps 是一种理念,一种思想,将现代的科学技术应用于端到端的价值链中,并通过对企业文化、流程和制度的变革来获得更大的成功。

因此,虽然 DevOps 开发方法已经被证明是有效的,并且被越来越多的企业所接受,但企业在落地 DevOps 的过程中却不是一帆风顺的,大多数只停留在应用 DevOps 的初级阶段, 这也是很多人/企业普遍误认为 DevOps 不好,或者发挥不出真正价值的原因所在。

我认为主要原因有以下三点:

  • DevOps 人才紧缺。 由于 DevOps 进入国内市场的时间较短,真正做过 DevOps 平台的企业和个人更是屈指可数,这就导致目前市场上 DevOps 人才紧缺,真正懂 DevOps 的专家更是寥寥无几。市场需求的不断增加和 DevOps 人才供不应求,是目前的一个待解问题。

  • DevOps 技能待提升。 大多数 DevOps 工程师都是半路出家,从运维、测试等转岗而来,往往由于之前工作经验的局限性,上手学习存在困难,工作中对 DevOps “只见树木,不见森林”,缺乏整体性认知,在开发和应用 DevOps 的过程中,很容易忽略全局。

  • 缺乏整体视角的学习资料。 市场上关于 DevOps 的课程大多是讲具体的工具如何使用(比如,如何使用 Jenkins 搭建流水线),或者是对某个细分领域的讲解(比如,如何做好自动化测试),这些课程虽然对学习具体的技能很有用,但缺少对端到端的软件研发全生命周期,以及对 DevOps 的全面系统化讲解,难以培养出具有全局视角的 DevOps 工程师。

鉴于以上种种原因,我和拉勾教育合作了这个课程,一方面让企业尽快招到合适员工,一方面让相关技术人员得到技术方面的提高。 不管你是从事 DevOps 多年的工程师,还是打算转到 DevOps 岗的工程师,或者企业内部的团队负责人,甚至是软件工程专业的学生,都可以通过这个课程学习了解这个新时代的软件开发方法——DevOps。

但在学习和践行 DevOps 的过程中,我有三点需要提醒你注意:

  • 要有全局观。 在应用 DevOps 过程中,要从软件开发全流程的角度出发制定实施方案,了解每个阶段在全局流程中所处的位置,以及对上下游的影响。比如测试阶段效率的提升可能会导致部署阶段工作任务的积压,对整体交付并不一定产生积极影响。

  • 要以终为始。 在应用 DevOps 过程中,要知道做这件事的目的是什么。应用 DevOps 是为了交付业务价值,是为业务服务的,不要捡了芝麻,丢了西瓜。比如在十人规模的初创公司,需要做的是快速迭代产品、快速占领市场,如果这个时候还需要开各种迭代会议,设置各种质量关卡,反而会对公司的业务产生消极影响。

  • 要持续改进。 在应用 DevOps 过程中,要抱有持续学习、不断改进的心态,通过不断试验来持续改进。这就需要定义可度量的、有价值的指标来指导改进,这也是课程中我将专门介绍的。

总的来说,DevOps 还处在发展的初期阶段,在未来还有很大的发展空间,但同时也存在上面提到的那些问题,因此我希望这个课程能够让你系统化地学习 DevOps,不管是促进企业内部的 DevOps 落地实施,还是你自己职业生涯的技能提升,都是一次不错的机会。

课程设计

为了帮你建立整体视角,这门课首先带你从历史中看 DevOps,然后按照软件开发流程介绍 DevOps 中的最佳实践和关键工具。“端到端”是这门课程的主线,我会一步一步带你从需求开始,到软件开发,到测试部署,到生产发布交付,带你过完整个的业务流程。

课程共为三大模块,21讲:

  • DevOps 开发方法的发展历史。 本部分志在追本溯源,为你梳理 DevOps 发展的来龙去脉,产生的时代背景,以及要解决的具体问题,这些软件行业存在的问题,DevOps 能否解决?学完本部分,你可以对 DevOps 有更清晰的了解,知道任何事物的产生都是有其原因,也是有其特点的,为后面更深入地实践 DevOps 打好基础。

  • DevOps 开发方法的最佳实践。 本部分为你梳理 DevOps 的关键实践,包括短周期迭代、限制在制品数量、代码预检查、自动化、持续集成等,也会介绍常用的管理工具,比如影响地图、用户故事地图、看板方法等。学完本部分,你可以知道如何将 DevOps 实践应用到软件开发流程中,这些实践和工具应该在哪些阶段使用,用来解决什么问题。 此外,该模块我还选择了实际工作中比较有特点的两个案例,希望从三方及测试角度出发,帮助你理解 DevOps 如何落地。

  • DevOps 开发方法的度量指标。 DevOps 的一个核心思想是持续改进,而度量指标为持续改进软件交付提供了强力支持。学完本部分,你能够了解有哪些指标可用,以及如何有效发挥作用。

未来可期的 DevOps

市场竞争日趋激烈,企业对缩短产品投放市场的时间诉求会更加强烈。DevOps 对企业数字化转型是一个机会,同时对个人的职业生涯,技能提升也是一个机会。DevOps 运动才刚刚开始,我们每个人都有机会成为这个领域的专家。

学习 DevOps 持续改进的思想,每天进步一点点,并通过实践验证你的知识体系,不断调整。我相信,你也能够快速成为 DevOps 领域的实践者和开拓者。

最后,希望学完这个课程后能够让你对 DevOps 有个全新的认识,成为真正具备全局视角的 DevOps 工程师,成为企业内组织变革的中流砥柱。

欢迎你在留言区和我分享你们公司的 DevOps 实践或是遇到的问题,期待与你交流。