DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。
什么是DevOps
DevOps是一个融合了敏捷、持续交付、ITSM的方法论,它给出了三条指导原则(三步工作法)和一系列的最佳实践,用来指导软件产品从计划(Planning)到终止(EOL)全生命周期管理。
所有的方法论一定由指导原则和最佳实践组成,比如Scurm、ITIL、VeriSM、TOGAF。
Devops解决什么问题
昨天刚好看到一本书《协同:数字化时代组织效率的本质》,背面印刷了一幅图
当资源累计到一定程度想要产生更多价值就只能比拼资源整合速度(见《如果中台是药,那么一定是中药》)。把各个团队组织起来共同推动事情的发展,让原本利益冲突的团队能够达成某种平衡甚至利益一致是组织管理中最需要解决的问题。
一个以IT为主要业务的组织中,开发部门负责响应市场变化,尽快实现新功能;运维部门则必须保证系统稳定、可靠、安全。对于开发部门来说,他们已经有一套方法论——敏捷开发,拥抱变化,响应市场变化;运维部门的方法论——ITIL则期望能够控制变更(ITIL4已经跟上了时代步伐),这就是双态IT(敏态和稳态)。所以我们需要一个“从头到尾”的方法论能够把开发和运维贯穿起来(把软件的生命周期完成贯穿起来)积极响应变化,这就是DevOps。
DevOps如何解决问题的
讲解DevOps比较权威的一本书是《DevOps实践指南》,下图是三步工作法和最佳实践,里面包括了我对某些原则的认识和理解。
具体技术实践
在实践DevOps的过程中有很多误区,工具论是最典型的误区。方法论只会从概念上告诉我们一个方向,并不会有具体的技术实践,所以其实没有一个软件产品叫“DevOps系统”(就像没有一个软件叫“敏捷开发管理系统”)。我也在自己的团队推广DevOps,坚持执行两个原则:
所有代码都由Jenkins编译成制品(在我们的环境中是Docker镜像);
所有代码都必须有单元(集成)测试,测试覆盖率必须达到80%以上;
简而言之两句话:所有代码必须内建质量,所有制品必须自动化产生。这两条刚好一条是描述运维,一条是描述开发。细节还有很多,比如版本管理、安全扫描、制品仓库等,所有这些都是要结合自身的情况去有针对性的选择切实可行的一些实践方法,并没有“一招鲜吃遍天”的通用解。感兴趣的朋友可以后台留言告诉我你具体的疑惑或者问题。
欢迎关注公众账号了解更多信息“写程序的康德——思考、批判、理性”