DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。但是,在很多开发人员的理解中,好像DevOps就是一些工具的集合。在此认知的基础上,孤立的使用DevOps的某一些工具,导致并不能产生很好的收益。正如敏捷一样,DevOps实践也必须在深入理解DevOps价值观的基础上,将其推荐的实践和自己的产品相适应,根据自己产品的具体情况灵活运用具体实践,才可能产生我们期待的效果。因此,本文谈谈DevOps的核心价值观。
参考《DevOps实践指南》,我们可以将DevOps的三大基本原则作为DevOps的核心价值观,如下:
1: 流动原则
2: 反馈原则
3: 实验和学习原则
1流动原则
流动原则,流动的应该是什么?是价值。在精益中,有专门的价值工程(VE),用以分析全部业务中真正的价值流。通过定量的方法计算各个步骤创建价值的大小,通过替换、创新等方法去减少成本、增加价值。DevOps继承于敏捷和精益,其所做的一切聚焦于价值。一个需求,什么情况下是所谓的实现价值?从传统的敏捷团队而言,演示会中用户的认可代表敏捷价值的达成。深入思考一下,这样正确吗?对应制造业,制造出的成品不表示价值达成,相反,在精益中,一个基本思想是:“库存是万恶之源”。而将产品卖给用户才表示价值的完成。同理,对软件行业,需求的交付不能表示价值完成,甚至,套用上述精益的思想:“交付而不试用的需求是万恶之源”。需求的价值体现在上线并且给用户带来价值,这才是价值的根本。所以,价值必然是端到端的。DevOps流程是敏捷的基本体现。DevOps流水线上应该流动的是价值。其本质是基于对价值流完整和系统的分析和组合。在DevOps这个价值流的自动化管道中,我们希望流动的价值流是小批量,这样可以更加快速和方便试错。中间应该没有多余或无效的环节,没有浪费。各个步骤应该尽可能的快速。
价值流动且快速流动价值观是我们判断流水线价值的主要依据。
2反馈原则
金泽锋教练分析敏捷的第一性原理(就是敏捷最核心的理论基石)的时候,认为敏捷的第一性原理是“控制论”。控制论是不是敏捷的第一性原理可能有不同的看法,但”快速而高效的反馈”肯定是敏捷的一个核心原则。这同样适用于DevOps。所以在价值流水线的基础上,各个节点都必须有快速而有效的反馈。DevOps强调,任何产品需要强调的品质或特性(比如安全,合规,质量),都应该内置到全部流水线中合适的节点,通过进行全面和自动化来进行保证,仅仅依靠独立的环节可能无法达成目的。
特别重要的是质量,需要通过测试分层的方式,用代码走查,UT,FT, IT(接口测试,集成测试)到ST. 也包括静态检查等来系统保证。DevOps强调的另一点是通过技术的手段解决技术的问题。例如,传统运维中经常暴露的生产环境和测试环境不一致问题,部署困难的问题,DevOps通过频繁部署的方式解决。在这个过程中,可能需要解决很多的技术问题。
将关注的内容自动化内置到流水线,实现最高效,最快速的反馈是DevOps的一个核心价值观。
3:持续实验和学习原则
敏捷和DevOps最核心的一个目的是”拥抱变化”,让我们的软件开发过程适应现在不断变化的市场和用户需求。其根本认知是”我们不能充分预测市场,唯一可以做的是小步验证,根据验证结果进行不断调整”。犹如盲人走路,唯一拥有的是一个目的(我们的愿景),没有地图,没有路径,只能不断的尝试。所以,DevOps强调全员学习和改进的文化。每一次错误都是我们学习的机会,每一个犯错的人都是其他人的老师——他应该深入剖析并分析自己犯错的前因后果。而改正,应该是在DevOps流程中通过工具改正,而不能依靠管理改正——人是应该做更有价值的事情。
任何错误都应该是系统和组织改进的源泉。
DevOps的试错文化应该包括:
1: 打造信任文化
2: 弹性工作模式
3: 快速的交流和传递通道
DevOps流水线不是固定不变的,而是持续学习持续改进。完美并不存在,但我们要一直在追求完美的路上。价值、反馈、持续改进,这三点是DevOps的核心价值观,也是我们理解一切DevOps实践的基石。
CIO之家 www.ciozj.com 公众号:imciow