《快手测试环境的设计与实践-于南.pdf》由会员分享,可在线阅读,更多相关《快手测试环境的设计与实践-于南.pdf(33页珍藏版)》请在三个皮匠报告上搜索。
1、快手测试环境的设计与实践主讲人:于南时间:2023.02快手测试环境的设计与实践于南 快手研发效能专家 10年服务端开发经验,对研发效能、质量提升相关领域有丰富的经验快手环境建设背景环境设计目标基础能力建设经验总结与未来展望快手测试环境的设计与实践快手环境建设背景环境设计目标基础能力建设经验总结与未来展望快手测试环境的设计与实践建设背景环境最初形态开发联调测试回归上线行为特点与线上网络互通与线上共用存储一套缺点 不安全不安全,与线上网络互通,数据共享 低效低效,与本地网络不通,调试复杂 测试阻塞测试阻塞,多需求共有一套 不稳定不稳定,RD、QA共用,测试、回归共用线上测试环境生产环境环境建设背
2、景环境最初形态形成原因快手最初业务形态推荐主站系统类型算法类工程类重模型:需要用线上数据训练读服务:安全风险小建设背景为什么需要治理从环境建设视角看下快手的业务架构的演变推荐主站广告电商直播消费系统类型易用推荐主站算法类(重模型、读服务)工程类最初现在安全易用用户需求的演变原环境的优势越来越小,缺点则越来越不能忍受快手环境建设背景环境设计目标基础能力建设经验总结与未来展望快手测试环境的设计与实践顶层设计测试环境设计原则顶层设计理想状况线上测试环境原体系生产环境新体系线下测试环境预发环境灰度环境生产环境物理网络隔离回归测试严格隔离在线下网络小流量观察建立泳道分组泳道分组路由体系,支持全链路灰度以
3、及需求并发顶层设计理想状况与现实有差距线下环境完备性问题:推荐算法服务无法在线下环境搭建推荐算法服务无法在线下环境搭建数据同步:模型的训练依赖线上用户行为的实时同步人力成本:需要梳理所有依赖关系、线上配置ROI:对算法团队没有任何收益线下测试环境如何落地?顶层设计环境终态线下测试环境预发环境灰度环境生产环境线上测试环境线上测试环境测试库受限使用线下网络线上网络网络物理隔离泳道逻辑隔离跨网络代理服务生产库泳道路由算法模型相关多套真实服务MOCK服务跨环境代理线下测试环境线下测试环境开发、联调、普通功能测试线上测试环境线上测试环境算法类服务专用,配合依赖算法且非算法类服务的测试预发环境预发环境上线
4、前最后一轮测试、共享线上数据库,承接测试流量灰度环境灰度环境小流量环境、共享线上数据库,承接线上真实环境快手环境建设背景环境设计目标基础能力建设经验总结与未来展望快手测试环境的设计与实践基础能力建设MOCK与代理泳道隔离机制测试数据流量录制回放基础能力建设基础能力建设目标MOCK与代理泳道隔离机制测试数据流量录制回放隔离安全方便易用服务完备支持需求并发环境仿真度高支持设计原则支持设计原则完备性方案MOCK与代理MOCK方案场景:服务A想访问服务B,服务B不存在服务A服务注册中心1询问服务B的地址2返回服务B的地址不存在服务A服务注册中心2询问服务B的地址3返回服务B的地址MOCK服务B1启动服
5、务并注册4访问B5根据入参返回mock数据解决方案:方案特点:主调端无侵入,一人MOCK,多人使用适用:补充线下测试环境服务完备性完备性方案MOCK与代理代理方案客户端自然作品推荐广告作品推荐广告业务服务被测服务自然作品与广告作品混排验证广告展示效果部署线下网络包括其依赖的业务API server部署在线上网络部署在线上网络部署线下网络广告场景:广告场景:被测服务既需要访问线上模型,又需要访问线下广告作品混排线上自然作品和线下广告作品只能识别线下数据包括作品、用户、评论等被依赖服务客户端自然作品推荐广告作品推荐广告业务服务代理方案:代理方案:proxy跨环境代理替换线上数据(因为推荐类服务都是
6、访问的线上数据,一定程度上保障了测试的真实性)完备性方案MOCK与代理代理方案客户端mock广告业务服务广告作品推荐自然作品推荐proxyAPI server线下测试环境线上测试环境线下测试环境数据MERGE能力线下数据来源配置固定数据动态接口数据替换规则用相对较低的成本解决了服务完备性完备性的问题需要有服务端QA支持,需要理解推荐服务返回的数据格式支持需求并发泳道隔离机制需求并发场景ABCDEF需求3需求2需求1解法一同一套混合环境测试效果互相影响难免会互相阻塞缺点缺点:解法2A2B2C2D2E2F2需求3需求2需求1ABCDEFA3B3C3D3E3F3机器、人力成本高昂资源浪费难以落地缺点
7、:缺点:支持需求并发泳道隔离机制需求环境1A1B1D1需求环境2主干环境A2C2ABCDEFB2理想情况:特点:服务隔离,互不影响按需部署,节省资源建设条件:微服务框架支持给服务实例标识“身份”流量支持标识“身份”支持需求并发泳道隔离机制主干道泳道X泳道Y服务A服务B服务C服务D主干道流量服务服务A A服务服务B B服务服务C C服务服务D D泳道X流量泳道Y流量 服务标识:API、RPC、Consumer、Task等服务 流量标识:比如从Http发起的流量,或者从离线任务发起的流量泳道是什么?一种标识支持需求并发泳道的应用需求泳道X服务A实例1实例2服务B实例3需求创建分支部署联调测试泳道研
8、发交付流程需求上线后平台变更需求状态泳道自动回收服务实例自动回收支持需求并发泳道的应用为平衡易用性和资源成本需求泳道需求泳道个人泳道个人泳道长期泳道长期泳道使用场景使用场景随需求自动创建个人手动创建个人手动创建默认周期默认周期一次申请最长30天过期自动回收一次申请最长30天过期自动回收不限制时间审批流程审批流程首次申请无需审批续期需审批首次申请无需审批续期需审批首次申请需要审批续期不需审批易用性建设测试数据易用性建设测试数据数据构造平台业务服务业务服务:API、RPC业务存储:DB、Redis业务消息:Kafka、RocketMQ业务配置:Kconf自编写代码线下自生产模式事件事件执行事件配置
9、权限管理日志回溯场景资源(数据)资源配置串联条件判断循环并行场景编排运行引擎参数传递结果处理执行进度异常处理生命周期管理资源生产资源借用资源回收资源销毁资源属性生产时赋予生产后赋予仿真能力建设流量录制回放 线上真实数据线上真实数据 数据量大,覆盖足够多场景数据量大,覆盖足够多场景 为非推荐类场景补充了仿真能力为非推荐类场景补充了仿真能力快手环境建设背景环境设计目标基础能力建设经验总结与未来展望快手测试环境的设计与实践经验总结环境全景推进业务方落地推进基础设施改造难点在于推进,环境的治理是在业务已经发展到一定规模时开始的推进,环境的治理是在业务已经发展到一定规模时开始的有能用好用 习惯的改变难以统一的规范资源的治理整体迁移的成本自上而下,顶层支持有效(统一)的组织体系问题过于琐碎优先级难以提高坚定且明确的目标专门支撑环境建设的研发团队