有一天,伊万被召集开会讨论DevOps指标。
每个参与者都为会议准备了一些他认为值得实施的指标列表。
听了这些报告,伊凡(Ivan)尝试计算出建议的度量标准:5.10,再次是10,还有大约十几种。 原来是30点。
由于某种原因,突然想到一个想法,就是那些聚集在一起的人用谷歌搜索并写下了对他们来说似乎很有趣的名字。 显然,没有人考虑过指标的本质。
伊凡从侧面观看,问自己一个问题:为什么? 为什么要使用这些指标? 他们会给你什么? 突然之间,会议变得很明显,因为会议聚集了对度量标准本质没有真正了解的人员,并且一切都会照常结束,因为会浪费大量时间并将工作丢到垃圾桶中。
变得悲伤和侮辱。 遗憾的是,公司的时间和金钱无济于事,而遗憾的是,无法开展有用的业务。
伊凡(Ivan)长期研究指标,并且很长时间以来就一直了解该主题非常严重和复杂,无论如何都不可能从橡皮艇那里解决这个问题。
在那一天,会议以一无所有而结束-我们决定立即实施所有内容(没有人愿意为拒绝承担责任,因为我不明白为什么另一个人需要这些指标)。
Ivan决定准备自己的DevOps指标愿景,并确保其中的每个指标都是合理的,具有特定目的,有用且可理解的。
那就是他所做的...
您要管理什么?
首先,伊万(Ivan)决定考虑制定指标的主要目标。
精读分析《精益分析》和《 Too Toyota的实践》建议:选择要控制的数字作为主要指标。 接下来,选择此数字中可以影响度量的组件。
DevOps在上次会议上的目标宣布为“软件质量”,但是质量的概念非常模糊。 什么是质量? 如何用一个数字表示? 哪些成分会影响它?
不幸的是,软件质量不能用单个数字表示。
无论如何,使用DevOps的目的真的很优质吗?
几年前,Ivan在一家小公司担任IT主管,负责生产自己的软件,并在那里成功启动并使用了DevOps。 DevOps的目的根本不是真正的质量。 而是质量。 主要且唯一的目标是消除在舞会部署期间的体力劳动。
通过消除体力劳动,他实现了加速并减少了错误数量,从而有可能至少每分钟发布一次改进。
因此,事实证明,作为
TARGET METRIC DevOps本身就表明了自己
交货时间
恰恰是它的减少或增加将显示管理决策的效果。
交货时间(上市时间,TTM)增加了-很差。 减少-非常好。
但是交付时间取决于任务的数量,测试的持续时间以及许多其他因素! 是的,没错。
这就是为什么伊万(Ivan)刻意决定不是从编码和分析的那一刻开始倒计时,而是从组装(发布)已经创建并存储在那一刻起,只是剩下的就是进行一系列检查并将其部署在工业环境中(所谓的“倒计时”)。连续交付(CDL)。
Ivan认为,首先要开发一个原理,概念,并将其进一步扩展到其他未达到的领域,这一点很重要,因为编码,汇编和所有其他开发步骤也像CDL阶段一样影响交付时间。 让我们在一个中做-我们将在另一个中做。
在Ivan工作的大公司中,指标至关重要。 每天有成千上万的开发人员看到了代码,并制作了数百个程序集,但是没人,公司中没人知道团队实际上在DevOps上花费了多少时间。
投诉四面八方:DevOps废话,这行不通,速度放慢,毫无意义。 但是没有人有真实的数字,根本不可能证明或反驳球队的言论。
这是Ivan设定的目标-计算团队在DevOps上花费的时间,尤其是在组装的交付阶段。
伊万想,这不可能,如果我曾经启动过DevOps并立即产生了效果,那为什么不在这里呢?
建立度量系统成为Ivan的荣幸。
控制您可以控制的
如何管理交货时间? 这可能吗? -伊万问。
如果我们将交付时间视为一个数字,那么很明显,DevOps流程中有很多地方会严重影响该数字。
Ivan的公司有一个标准:参加舞会之前的每个组件都应该通过三个测试台,在该测试台上测试了软件的各个方面。
自然,它们上的程序集会由于错误而“消失”,而是创建了新的程序集。
事实证明,摊位是总交付时间的关键要素,正是它们影响总时间并增加了总时间。
交货时间= 1号展位时间+ 2号展位时间+ 3号展位时间影响每个展台上的团队所花费的时间,有可能影响最终的交付时间。
剩下两个简单的问题:
- 如何实际计算看台上团队的成本,以及
- 展台之间的停机时间该怎么办(停机时间也是交货时间的组成部分)?
Ivan别无选择,只能跳入Jenkins和Nexus(CDL中使用的软件)的丛林。
Jenkins和Nexus帮助
使用詹金斯(Jenkins)在架子上进行“滚动”组装。 实际上,詹金斯(Jenkins)是像crontab这样的常规sheduler,但是具有高级功能。
Jenkins知道如何以RSS的形式显示所有正在运行的作业(在机架上滚动装配的任务)的日志,并且有开始,结束时间以及到特定装配的链接。
事实证明,Ivan掌握了组装工作开始和结束的确切时间的数据,即 可以轻松,准确地计算出团队在展位上花费的净时间。
而且,如果将所有机架的数据都转储到一个数据库中,则可以计算机架之间的停机时间。 太好了!
Ivan从Nexus(网络文件存储)中获取程序集本身的创建日期,依此类推。 确定其出现的时刻和参考点。
一切都准备就绪。 差不多了
-以及如何解决这个问题,伊凡(Ivan)想?
待续。 影响对象