乐趣区

关于程序员:优酷质量保障系列一服务端稳定性保障实践

娱乐妹导读 : 品质保障贯通全副研发流程,测试作为品质的构建者和守护者,须要保障的不仅仅是提测后的性能品质,而是整个研发过程的品质和效率。分享优酷通过品质保障建设晋升研发效率和品质的实际过程。
本系列文章将陆续公布,感兴趣的敌人继续关注!_

服务端品质保障做什么?

答复这个问题之前,先要看看影响服务端品质的因素有哪些?从以后服务端研发流程来看一个需要上线的全副阶段以及每个阶段的次要流动:

能够看到品质相干的流动贯通全副研发流程,测试作为品质的构建者和守护者,须要保障的不仅仅是提测后的性能品质,而是整个研发过程的品质和效率。

定义每个阶段影响品质的次要因素:

•    需要确认:需要的有效性以及业务价值
•    计划审计:计划的合理性以及变更导致的品质危险
•    代码开发:代码逻辑和编码标准
•    线下验证:回归测试的效率和品质;新功能测试的效率和品质
•    平安生产:留观流量的有效性;品质验证的充分性
•    线上公布:线上稳定性保障机制和异样查看能力

联合优酷业务个性和研发现状,确定测试以后须要重点关注的保障内容:

•    代码开发:通过建设静扫、单元测试,实现开发提交代码后的继续验证
•    线下验证:保障提测代码品质、线下验收品质;•    平安生产:保障平安生产验证有效性
•    线上公布:保障线上服务稳定性

总结成一句话:服务端品质保障体系就是要构建贴合业务个性的自动化测试保障能力,并融入研发流程要害品质阶段 ( 测试准入 冒烟测试 提测 回归测试 平安生产验证 线上公布),保障利用变更可继续集成、可继续部署、可继续公布。

如何构建品质保障体系?

推流程

保障能力只有嵌入到研发流程,能力真正的发挥作用,为此,通过自定义利用公布流程和组件,构建了优酷线下部署、线上公布的流程,借助公布流程的对立降级,实现保障体系降级:

准入测试

•    保障内容:验收单元测试后果、动态代码扫描后果,保障进入测试阶段的代码根本品质;防止有效部署 (代码调试、开发自测) 触发测试工作执行
•    准出条件:静扫无 Block 问题;单元测试通过

冒烟测试

•    保障内容:构建自动化测试实验室,验收利用基本功能,阻断低级问题流入提测阶段以及集成测试阶段,保障后续测试流动的品质和效率
•    准出条件:冒烟测试实现;实现失败用例剖析;

提交测试

•    保障内容:通过自定义“提测”组件买通公布平台和优酷研发效力平台,开发在公布流程中一键提测,主动收集提测相干信息并生成提测单,保障提测信息有效性,阻断低质量提测流入测试环节
•    准出条件:冒烟测试后果满足业务提测基线;提测单蕴含代码变更、性能阐明、影响接口等测试信息;

集成测试

•    保障内容:构建贴合业务个性的回归测试工作,对变更进行全量回归测试,保障变更代码不影响原有性能
•    准出条件:回归测试实现;实现失败用例剖析;没有影响线上公布的问题

平安生产验证

•    保障内容:对接平安生产验证组件,为利用公布提供平安生产环境的验证能力,保障平安生产留观期间内的流量有效性、品质稳定性。•    准出条件:平安生产验证实现;实现失败验证点剖析;没有影响线上公布的问题

灰度验证

•    保障内容:在微灰环境建设压测分组,通过引流的形式对压测分组机器主动压测,并和历史压测基线做比照,提供性能评估能力,保障变更代码的性能稳定性
•    准出条件:比照性能基线,压测评估后果通过

线上部署

•    保障内容:通过构建线上巡检工作,定时巡检外围接口的外围场景,及时发现因为配置变更、代码变更、依赖变更导致的线上问题
•    准出条件:无

建能力、搭平台

对立利用公布流程后,如何疾速帮助业务构建流程中须要的各种保障能力,也是品质保障体系必须解决的问题。在“不反复造轮子”的准则下,通过整合阿里在服务端测试畛域的能力和服务,造成了一套能适宜优酷业务个性的品质保障能力,并通过平台化向各个业务提供接口,帮助业务团队疾速构建品质保障体系的能力。

研发流程

通过自定义公布流程组件,买通公布流程和优酷效力平台,实现在公布流程上一键提测,次要为提供提测承载页、提测代码变更剖析、提测卡口性能。

根底能力
基于 JVM-Sandbox 提供的能力、平台实现了采集模块主动部署、模块状态主动保护、申请采集主动调控、加强类主动解析,反对利用一键接入保障体系所须要的根底能力:

•    全环境数据采集能力(申请入参和返回后果、利用外部办法链路)
•    全环境、全接口协议、多形式申请回放能力(实时回放、mock 回放、泛化回放)
•    线下环境 Mock 能力(模仿返回后果、模仿异样、模仿超时)

自动化测试工作
不同业务须要的保障能力可能来自团体不同平台,业务的接入和剖析老本比拟高,为此,自动化测试页面提供了各种工作的接入配置、调度执行、后果回收、失败剖析性能,实现了任务调度、剖析解决的闭环能力,目前反对的工作类型和配置如下:

•    反对工作类型:自动化实验室、智能回放、平安生产验证、单机性能评估
•    反对工作配置:继续集成配置、后果告诉配置

自动化测试框架
优酷自研接口测试框架,通过提供近程接口调用、Wrapper 断言、自定义测试报告、中间件跨环境拜访、Pandora 类隔离机制等能力,业务团队能够低成本实现测试脚本开发,无效撑持优酷全副业务场景的冒烟测试、回归测试、线上巡检脚本开发和保护,框架次要模块如下:

•    近程接口调用模块:提供团体罕用协定接口的跨环境调用能力
•    断言模块:无需编写任何断言办法,提供所见即所得的断言机制
•    报告模块:自动记录测试脚本中的接口调用、断言等信息,生成残缺的测试报告
•    类隔离模块:实现通过容器运行测试脚本,解决测试工程的包抵触问题

智能回放
阿里已有的回放测试平台都是基于线下 mock 回放的子调用比照测试,但优酷的业务状态决定了服务端读接口偏多,更适宜做实时回放,既能够躲避配置变更导致的返回后果不统一,又升高了业务接入和应用老本。

为此,基于 JVM-Sandbox 提供的链路采集能力和回放能力,优酷实现了基于线上热度链路举荐的实时回放能力,相比团体已有回放平台,具备以下个性:•    更无效的申请举荐能力:通过聚合线上采集的利用外部办法链路,无效辨认出线上热度链路,基于热度链路举荐回放申请,相比基于子调用链路举荐申请,能更无效的笼罩利用外部代码链路和实在业务场景
•    更稳固的比照回放测试(只实用读接口的回放):采取实时非 Mock 回放,同时申请指标环境和回放环境,比照接口返回后果,无效躲避了因为子调用变更和配置数据变更导致的比照失败
•    更低的接入和应用老本:基于 JVM-Sandbox 实现利用无侵入部署;对只读接口,不须要配置子调用比照逻辑,指定接口后就能够开始回放,即配即用

平安生产
优酷构建了针对平安生产环境的验证机制和能力,能无效保障平安生产留观期间的流量有效性和品质稳定性,目前次要提供的验证能力如下:

•    业务品质规定验证:通过配置接口返回后果的品质规定,全量验证平安生产留观期间内接口的返回后果,保障接口返回后果的业务品质
•    智策告警:监控和剖析平安生产留观期间内产生的业务告警,保障惯例业务指标监控、中间件监控提前在平安生产阶段发现
•    接口 RT 比照:比照留观时间段内,外围接口在平安生产的均匀 RT 和线上的均匀 RT,提前发现接口性能相干的问题
•    接口自动化验证:通过自动化脚本验证平安生产环境接口品质,及时发现接口调用失败、无数据返回等重大接口问题
•    智能回放:通过智能回放,比照平安生产和线上的接口返回后果,保障读接口性能稳定性
•    业务场景覆盖率:通过建设外围接口的业务场景规定,保障留观期间内的流量能笼罩到外围业务场景

如何度量保障体系品质?

构建服务端保障体系次要是为了 晋升服务端公布品质和研发效率 ,优酷将升高服务端故障数和晋升变更公布效率定义为次要须要解决的问题。基于这 2 个问题,对指标的定义如下:
业务品质

•    公布导致的故障数:利用公布导致的线上问题数。评估拦挡公布导致故障的价值
•    线上突发故障数:线上突发故障数。用来评估线上服务稳定性

研发效率

•    变更无人值守率:评估继续集成体系对晋升回归测试效率的价值
•    变更验证停留时长:评估继续集成体系对晋升变更公布效率的价值

确定保障体系各项指标后,就要通过收集须要的根底数据,依照不同维度聚合,造成精确牢靠的度量指标。能让业务团队、专项负责人、测试负责人通过指标数据发现问题,为后续优化提供方向,这个就是保障体系的度量能力。
优酷服务端保障平台通过和各个内部零碎买通,并提供了通用失败剖析能力,造成了数据收集、失败剖析、聚合指标的度量闭环。

通过过来半年的能力建设和继续推动,曾经有几百个利用接入服务端测试平台,其中外围场景利用接入率 100%,用户活跃度高,保障成果显著,能无效发现品质问题,并且理论拦挡了若干次会引发回滚甚至是线上故障的问题,极大的进步了服务端上线品质和研发效率。

本系列文章将陆续进行公布,感兴趣的敌人肯定要关注!


阿里娱乐技术开明视频号了,将通过多种形式来分享咱们的技术教训和技术人日常
心愿能在视频号“娱乐圈程序员”里和你一起看点乏味的!

退出移动版