DevOps 是软件工业界的一种提高生产效率的方法论,它与制造业的精益生产、JIT生产、自动化工厂等有异曲同工之妙,因为他们解决的仍然都是生产要素中各种资源的组合与编排问题。
为了方便大家更形象的理解软件工业,我们制造业来做一个对比:
制造业 | 软件业 | |
---|---|---|
生产对象 | 物料、半成品、第三方来料 | 代码、引用库 |
人力资源 | 工人、物流、工程师、厂长 | 开发、测试、架构师 |
设备 | 组装、检测、切割等组成的流水线 | 开发、代码组合、编译、测试、发布组成的自动化过程 |
流程 | JIT、精益、5S | 敏捷、瀑布、DevOps |
通过制造业生产对比,更形象的表达了【生产活动】的要素,帮助我们更加直观的理解 DevOps,把它从技术的“神坛”上拉下来。
在制造业中,有个非常重要的理论叫做 4M1E(人机料法环)全面质量管理理论,这五个字全面简练的概括了生产活动的所有要素:
- 人,指制造产品的人员;
- 机,制造产品所用的设备;
- 料,指制造产品所使用的原材料;
- 法,指制造产品所使用的方法;
- 环,指产品制造过程中所处的环境。
制造业是以【流水线】为核心的生产活动,各种设备组成了流水线,然后人和物料在流水线上的各个节点上协同工作,最终实现一个高效的生产活动。
既然 DevOps 是软件生产的自动化过程,那么我们首先要搞清楚,它是如何实现自动化的。
软件业虽然号称高科技行业,但其他它也属于工业。所以软件业不但在产品的架构上采用了工业界普适性的【模块化】与【组件与子系统多级分层】的思想,而且软件在生产过程中同样采用了流水线的一套工作流程。
所以可以很明确表达我的观点:DevOps 的方法论的精髓就是设计软件生产的流水线。
软件的流水线设计包括如下几个要素:
- 生产单元:做什么?代码合并,代码检查单元、测试单元、编译单元等
- 生产工具:用什么做?编译环境、测试工具、部署环境、传递工具(上传/下载)
- 流程控制:怎么做?从哪里开始,节点怎么控制,任务怎么触发等
生产单元是对流水线总体任务进行切割,形成单元任务,重点聚焦于每个单元做什么
生产工具是对每个单元任务所需的生产资源进行准备,重点聚焦于用什么做
流程控制包括每个单元的工序步骤,也包括各个单元如何衔接。重点聚焦于怎么做
接下来,我们回顾一下我们在学习 DevOps 过程中说了解的技术栈:
Jekins, Gitlab-Runner 是用于构造流水线的工具,它们是整个 DevOps 的核心。使用流水线工具最需要的技能就是理解流水线工具是如何编排各类资源,实现自身的软件生产流程控制。
理论知识到此即可,再讲更多没有用,你所需的就是自己动手实践了。
内容目录