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