十五项指标衡量DevOps是否成功
DevOps在你的组织内部运行的如何?如果你需要一些帮助来度量它的运行情况,我们已经准备了一个用于跟踪的关键DevOps指标的列表,这些度量可以帮助了解你的团队是如何随着时间的推移而运行的。
在团队内部明确DevOps的定义意义重大
DevOps这个词不同的人有不同的理解,有人说这是一种文化,业内的每个厂商都声称他们的工具帮助了DevOps,根据你如何定义DevOps,其中的一些度量可能对你的团队有重要的影响。
我将DevOps定义为与部署和监视应用程序相关的所有内容,从很多方面来说,这都是现实的可靠的工程问题。在Stackify,我们甚至没有运维团队,我们的开发人员直接部署到云上,我们的操作方式更多的是“NoOps”风格。
确定你的DevOps的挑战
在弄清楚DevOps度量标准是什么之前,你需要确定组织所面临的挑战以及要解决的问题。在Stackify,我们最大的问题不是经常部署,并且降低了缺陷逃逸速度。我们的执行团队正把重点放在2018年的具体指标上。
DevOps指标的类型
DevOps是尽可能快的持续交付和传输代码,你想要行动迅速而不是打破常规,通过跟踪这些DevOps指标,你可以评估在开始破坏之前,可以有多快。
Deployment frequency 部署频率
Change volume 容量变化
Deployment time 部署时间
Lead time 交付时间
Customer tickets 客户工单
Automated test pass % 自动化测试通过百分比
Defect escape rate 缺陷逃逸率
Availability 可用性
Service level agreements 服务水平协议SLA
Failed deployments 失败的部署
Error rates 错误率
Application usage and traffic 应用程序的使用和流量
Application performance 应用程序的性能
Mean time to detection (MTTD) 平均检测时间
Mean time to recovery (MTTR) 平均恢复时间
DevOps的目标:速度、质量、性能
DevOps的主要目标是速度、质量和应用程序性能。
希望尽可能快地发送代码,根据你的产品类型、团队和风险承受能力,你可以尽快的实现这一目标。
即使你没有在速度上跟踪任何DevOps指标,至少应该衡量在质量上的工作,也许你并不真的在乎到底有多快,但是,你总是关心质量,你最不想要的就是一直在疲于生产。
关于性能,你可以争辩说,这也与你的高速度和高质量的目标不一致,性能也与质量有关,但可能略有不同。
部署规模
跟踪有多少功能、特性请求和错误修复正在被部署,这是另一个良好的DevOps度量,取决于你的工作项目有多大,它们的数量可能会有很大差异,您还可以跟踪部署了多少个功能点或几天的开发工作。
部署频率
跟踪部署的频率是一个良好的DevOps度量,最终目标是尽可能多地部署更小的部署,减少部署的规模使测试和发布变得更加容易。
我建议单独计算生产和非生产部署,部署到QA或预生产环境的频率也很重要。你需要在QA中尽早部署,以确保测试的时间,在QA中发现bug很重要,可以降低缺陷的转化率。
部署时间
这看起来可能很奇怪,但是跟踪实际部署需要多长时间是另一个很好的度量。我们在Stackify的一个应用程序部署在Azure上,部署大约需要一个小时。这是一个噩梦,跟踪这些事情可以帮助识别潜在的问题,当实际执行任务的任务比较快时,更容易部署。
交付时间
如果目标是快速发布代码,这是一个非常关键的DevOps度量,我将把交付时间定义为从工作项开始到部署之间的时间。这可以帮助你知道,如果你今天开始一项新的工作项目,直到它开始生产,平均需要多长时间。
客户工单
应用程序问题的最好和最差的指示器是客户工单和反馈,你最不想要的就是让你的用户发现bug或者对你的软件有问题,因此,它们也能很好地反映应用程序的质量和性能问题。
通过自动化测试通过率
为了提高速度,建议你的团队广泛使用单元测试和功能测试,由于DevOps严重依赖于自动化,所以跟踪你的自动化测试工作的好坏是一个良好的DevOps指标,了解代码更改导致测试中断的频率是很好的方法。
缺陷逃逸率
你知道在生产和QA中发现了多少软件缺陷吗?如果你想要快速地发布代码,你需要有信心,你可以在他们开始生产之前发现软件缺陷。缺陷逃逸率是一个很大的DevOps度量,用来跟踪这些缺陷在生产过程中经常发生的情况。
可用性
你最不想要的就是应用程序被关闭,根据应用程序类型以及如何部署它,可能会有一些停机时间作为计划维护的一部分,我建议跟踪这一点,以及所有计划外的停机。
服务水平协议
大多数公司都有一些服务水平协议(SLA),同样重要的是你要追踪你的SLA是否被遵守,即使没有正式的SLA,也可能需要实现应用程序达到期望。
失败的部署
我们都希望这种情况永远不会发生,但是你的部署经常会给用户造成中断或重大问题吗?反转失败的部署是我们永远都不想做的事情,但这是你应该一直计划的事情。如果你遇到了部署失败的问题,请务必跟踪这个度量,这也可以看作是对失败的跟踪平均时间(MTTF)。
错误率
应用程序中跟踪错误率非常重要,它们不仅是质量问题的指示器,而且是持续的性能和与时间相关的问题,好的异常处理最佳实践对于良好的软件是至关重要的。
bug,在部署后识别在代码中抛出的新异常。
生产问题,用数据库连接捕获问题,查询超时和其他相关问题。
对于大多数应用程序来说,错误是生命周期的一部分,在Stackify,我们在几百个服务器和上千个SQL数据库中处理数百万条消息。这里有一些错误,只是一个繁忙系统的部分噪音,重要的是,你要对你的错误率保持监控,并寻找峰值。
应用程序的使用和流量
在部署之后,你希望查看访问你的系统的事务或用户数量是否正常,如果你突然之间没有流量,那么有些事情可能是错误的。
你最不想看到的就是根本没有交通,如果使用的是微服务,你还可以看到流量激增,而应用程序之一突然导致了大量的流量。
应用程序的性能
在进行部署之前,你应该使用像Retrace这样的工具来查找性能问题、隐藏的错误和其他问题。在部署期间和部署之后,你还应该寻找总体应用程序性能的任何变化。
在部署之后,可以看到特定SQL查询、web服务调用和其他应用程序依赖项的使用的主要变化。像Retrace这样的工具可以提供有价值的可视化效果,比如下面这个,可以帮助你轻松地发现问题。
平均检测时间(MTTD)
当问题发生时,重要的是你要快速地识别它们。最不希望的是出现重大的部分或广泛的系统中断,而不知道它。拥有健壮的应用程序监控和良好的覆盖将有助于快速发现问题。一旦发现它们,你也必须快速修复它们!
平均恢复时间(MTTR)
这个度量可以帮助你跟踪从失败中恢复需要多长时间。对企业来说,一个关键的衡量标准就是将失败降到最低,并且能够迅速地从失败中恢复过来。它通常是按小时计算的,可能是指业务时间,而不是时钟时间。
拥有良好的应用程序监视工具可以快速识别问题并快速部署修复程序,这对减少MTTR非常重要。
应用程序指标
除了上面列出的DevOps指标之外,你还可以跟踪许多其他的指标,这些指标都是特定于你的应用程序的。它们中的大多数与DevOps在部署应用程序方面不一定相关。但是,它们对于监视应用程序在生产中的使用和性能非常关键。
例如,在Stackify中,我们使用自定义度量来跟踪每分钟通过API接收的日志消息数量。这是一个重要的度量指标,帮助我们理解流经系统的数据量。根据你的应用程序的不同,你可能有类似的自定义指标,对你的应用程序至关重要。
在部署之后,你将希望监视所有关键的应用程序指标,以确保一切仍然正常。
总结
如果你想要将DevOps带到下一个级别,我相信我们的DevOps度量列表将帮助你了解如何跟踪和改进。DevOps的目标是协作,让开发人员更多地参与部署过程和应用程序监控。
十五项指标衡量DevOps是否成功的更多相关文章
- VS2017十五项新功能体验
Visual Studio 2017十五项新功能体验 Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP ...
- Visual Studio 2017十五项新功能体验
Visual Studio 2017正式已经于2017.3.7号正式发布,选在这一天发布也是为了纪念Visual Studio 二十周年.MVP 2017技术峰会将于这个周末(3.17)在北京举办,由 ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- Gradle 1.12 翻译——第十五章. 任务详述
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
- Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
- 201771010134杨其菊《面向对象程序设计(java)》第十五周学习
第十五周学习总结 第一部分:理论知识 JAR文件: 应用程序首选项存储: Java Web Start JAR文件: 1.Java程序的打包:程序编译完成后,程序员将.class文件压缩打包为.jar ...
- Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
随机推荐
- CSS3 linear-gradient线性渐变实现虚线等简单实用图形
一.作为图片存在的CSS3 gradient渐变 我觉得CSS3 Backgrounds比较厉害的一个地方就是支持多背景,也就是背景图片个数可以无限累加,正好CSS3的gradient渐变性质是bac ...
- html5备忘录——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=1544 一.前言兼图片 ...
- css-使不同大小的图片在固定大小的容器中居中
HTML示例如下: <ul> <li class="imgbox"><img src="img1.jpg"></li& ...
- 详解php 获取文件名basename()函数的用法
PHP 中basename()函数给出一个包含有指向一个文件的全路径的字符串,此函数返回基本的文件名,本篇文章收集了关于使用PHP basename()函数获取文件名的几篇文章,希望对大家理解使用PH ...
- windows如何查看nvidia显卡(GPU)的利用率和温度
windows如何查看nvidia显卡(GPU)的利用率和温度 nvidia-smi 只要在文件夹C:\Program Files\NVIDIA Corporation\NVSMI里找到文件nvidi ...
- 今年新鲜出炉的30个流行Android库,你一定需要
作者|Michal Bialas 2017年快过去了,你年初的定的目标都快完成了吗?总结过去三个月内发布的 最新的30 个 Android 库和项目.你一定需要,建议收藏!让你事半功倍 1.Mater ...
- Vue 框架-09-初识组件的应用
Vue 框架-09-初识组件的应用 今天的第一个小实例,初步使用组件: 在 app.js 中定义模板组件,在 html 文件中使用自定义标签来显示 js 文件中定义的 html 代码块 比如说,下面定 ...
- Condition使用
面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法, 能够支持2个生产者线程以及10个消费者线程的阻塞调用 有两种方法 1.使用wait和notify/notify ...
- Pig UDF 用户自定义函数
注册UDF do.pig的内容如下: register /xx/yy.jar data = load 'data'; result = foreach data generate aa.bb.Uppe ...
- java基础(八) 深入解析常量池与装拆箱机制
引言 本文将介绍常量池 与 装箱拆箱机制,之所以将两者合在一起介绍,是因为网上不少文章在谈到常量池时,将包装类的缓存机制,java常量池,不加区别地混在一起讨论,更有甚者完全将这两者视为一个整体, ...