持续交付

【读书笔记-024】持续交付2.0之监测与决策

2019-03-25  本文已影响85人  爱倩子的李总

将软件包部署到生产环境并为用户提供软件服务,这并不是快速验证环的最终环节,通过对软件服务进行持续监测,确保交付的软件可以为客户持续提供服务,并能够收集到有效的数字反馈信息,根据所获得的数据进行决策,确定接下来的行动方向,这才能真正完成持续验证的闭环。

生产检测范围

后台服务的检测

包括如下三个层次:

分发软件的监测

分发到用户手中的软件包,比如移动APP,PC端软件等,并非受控环境,受到客观条件的限制。通常情况下,需要在用户授权的条件下,在用户设备上收集自身软件的运行状态,以及宿主机设备的运行状态,并将收集的数据定期发送到后台服务器,由后台服务对收集上来的数据进行分析与呈现。当然,对分发软件的监测不仅仅是来源于软件本身,企业还要关注网络上的信息,比如移动软件应用市场的评分,用户发布的评价等。

数据监测体系

为了得到有效的监测数据,必须对监测数据的获取过程、处理流程进行全面管理,包括数据源、数据格式与采集周期、数据处理算法等。

收集与处理

采集、处理和应用的过程

数据的标准化

要想得到监测数据,首先需要对软件产生的事件(Event)进行规划和跟踪。持续交付价值环中的“探索”和“验证”,其最重要的信息来源之一就是真实的用户反馈。在实现业务功能之前,除了对业务方案的讨论,还需要做好两件事:

为了利于统计分析,团队必须在一开始就对数据日志格式与手机标准及规则进行定义,并定期进行宣讲。标准定义可以让数据的收集与处理更加方便,减少不必要的脏数据或者数据分类错误,从而提升数据处理的时效性和准确性。

数据日志的格式本身并不复杂,通常分为基础信息和扩展信息。

监测数据体系以及其能力衡量

很多决策依赖于大量的数据分析,因此数据的质量尤为重要,可以从正确性、全面性和及时性来衡量监测数据。除此之外,监测系统还应该具有抽样能力,可以根据实际数据量的需要,工程师可以配置每个数据采点的采样密度,并快速生效。

问题处理体系

从监测数据中发现问题的过程,通常先由及其根据各种规则进行判断,尽可能多地自动发现生产中的疑似问题,无法自动处理时,就作为一个告警发送给指定问题的接收人。

告警海洋与智能化管理

对于不断增加的告警数量,如何提高告警信息的质量非常重要,通常由两个方面来衡量:

对于告警海洋的问题,可以从四个方面来缓解,如下:

问题处理是一个学习的过程

良好的问题处理流程是一个重要的环节,为了提高效率,通常需要将流程中人工部分尽可能通过自动化方式来解决,包括问题单的自动跟踪、相关信息的附加记录、整个处理过程的时效度量、多种及时的通知机制以及问题反馈的升级机制等。通过一个工单系统来支持。

团队中的问题复盘环节是一个良好的学习机会,是一个最有效的学习方法;复盘过程中,相关的人一起对照结果回顾过程,进行得失分析和规律总结;复盘总结出来的规律,对于后来者再处理类似的事情是一个行动指南,是一种很好的知识传承,可以最大限度地帮助后来者进步。

生产环境测试

生产环境测试存在的原因在于:非生产环境无法永远保证发现生产环境中可能出现的所有问题,测试场景不可枚举性概率在逐渐提高,非生产的测试场景显得不充分。

测试活动的扁平化趋势

在传统的瀑布开发方法中,测试执行和决策活动通常集中在软件研发周期的中部,随着版本交付频率的不便加快,团队的测试活动开始向左右两侧移动。


测试活动的左右移动

生产环境中的测试

应该将生产环境的测试也纳入日常质量保障工作。

生产巡检:对生产环境中的后台服务进行定期的功能验证,以确保该后台服务依旧对外正常提供服务,并且处理的结果是正确的。这种巡检应该被自动化,并定期自动执行。

生产环境上的测试应该遵循以下原则:

混沌工程

指通过在生产环境注入“问题”,从而发现生产环境系统性弱点,并进行系统性改进的方法或手段。其目标是为了不断提升生产环境面对任何变更的可靠性。比如Chaos测试,通过模拟整个region挂掉、调用延迟、服务降级等异常。这种主动监测使得软件工程师在架构设计时就需要考虑一些常用的失败问题。

向东还是向西

经过分析和总结,如果收集到的业务度量数据符合在价值探索环中定义的目标预期,就能够确认我们在价值探索环做出的假设是正确的,就可以回到探索环的起点,选择下一个业务挑战;一旦结果不符合预期,不要气馁,已经用最快的速度得到了结果,团队需要进行分析与预期结果不一致的根因,确认是否需要进行微调,还是再选出另一个试验方案;也有可能在验证环的运行过程中,发现了新的业务知识,从而说明探索环中精炼的所有备选方案都是错的,需要带着刚刚学到的知识重新开始价值探索环之旅。

上一篇下一篇

猜你喜欢

热点阅读