淘宝首页serverless升级后的质量保障方案

news2024/11/16 0:08:53

2c74b08cfc95c5aaa321f8bbb267c819.gif

本文主要介绍了serverless 架构升级在淘宝首页的应用,新架构对底层所依赖的容器、环境资源等与之前相比差异较大,并且对应的预发、安全生产、生产等环境,与旧架构的完全隔离。

ed3c71c1abf4102d917528468116a25d.png

背景

阿里巴巴集团大淘宝技术全面推进云原生2.0战役——serverless 架构升级,此次升级不仅可以帮助业务提升效率,也可以降低业务资源成本。淘宝首页作为响应此次战役的第一个试点业务,是否可以平稳升级,决定了后续其他业务的升级工作是否可以顺利进行。因此,首页侧的质量保障工作变得尤为重要。

07bfb4e7bb831c4b36215082a98b3887.png

系统改造方案

此次升级不仅涉及接入层以及上层业务的代码改造,也涉及底层链路的改造。新架构对底层所依赖的容器、环境资源等与之前相比差异较大,并且对应的预发、安全生产、生产等环境,与旧架构的完全隔离。首页侧作为上层应用,拟从三个方面进行改造,分别是业务代码改造、发布流程改造和切流方式改造。

  业务代码改造

首先需要在新环境上抽出业务基座层,并将部分业务二方包下沉到业务基座层。其次是改造mvn profile功能,支持一套代码能够同时运行于新旧环境(新环境代指serverless环境,旧环境代指改造前的非serverless 环境)中,且两类环境可以分别部署不同的二方包,实现依赖隔离。此外,依赖隔离时,也需要变更bean的初始化配置。

  发布流程改造

将从切流前,切流中和切流后三个环节进行改造。切流前支持新旧环境使用各自流水线进行独立发布,切流中实现单流水线向双环境发布,切流完成后流水线仅保留向新环境发布的环节。

  切流方式改造

从老架构过渡到新架构需要灰度放量,对应实现方式为接入层切流。本次切流,底层依赖集团内部切流系统,新旧环境分别使用不同的应用分组,而不同应用分组又绑定不同的集群KEY,统一接入层通过路由到不同的集群KEY实现流量控制。

从上述改造思路可以看出,本次改造范围较广,对业务稳定性影响较大。因此,在测试过程中需要尽可能覆盖所有的场景,确保改造后的业务功能可以正常如初。首页后端系统,本次升级改造架构图如下:

332c7414019cb49daea9d50b558a43cb.png

a1cdab3ecd46f2769cab7b04f0c3d154.png

风险分析

本次架构升级具有高度不确定性,影响面未知,需要全回归验证,尽可能覆盖所有的业务场景。此外,由于涉及底层链路的改动,而底层测试具有局限性,因此也需要依赖上层业务进行全链路验证。基于首页精细化运营的特点,覆盖所有业务场景几乎是一件不可能的事情,且首页业务沉淀多年,历史包袱较重,包含大量复杂的业务场景。

c2209bfb3f97e4b1adf84a7b72a8d5f1.jpeg

质量保障方案

鉴于上述风险分析,从保障稳定性、减少核心业务损失以及降低测试成本等因素综合考虑,基于全流程层层拦截是一种有效的手段。在线下环节尽可能保证业务的全面覆盖,在上线后通过细致的数据观察来做后续的放量决策。放量过程中如果发现问题,可以通过切流的方式实现快速回滚。整体测试保障流程如下:

b403c8040cb019480173dc2626a1bf15.png

  预发验证阶段

  1. 核心功能梳理、验证——主要对核心功能以及下沉二方包涉及的业务场景进行梳理并验证。

  2. 录制回放——通过录制回放辅助验证遗漏的业务场景。

首页版面本质是基于多业务组件(卡片)组合而成,升级后可能会引发一些潜在问题,比如某类卡片缺失造成无法在淘宝透出;透出时缺少一些利益点,ui信息;或者点击无法跳转,点击时业务埋点参数丢失等,如下图所示。此类问题可能在逐步切流过程中导致相关业务曝光减少,ctr降低,功能无法正常使用等。若依赖人工回归这些内容,可能无法100%覆盖且耗时较长,性价比极低。为此,在预发阶段使用录制回放,从线上引流,然后在新旧环境分别回放,通过对比结果进行验证。

32527fb57550147e11481f8ff88cacce.png

65ffe8cc5e6248c205a3f46f189b0a3e.png

但是,采用这种方式又面临两个问题:一是淘宝通用录制回放工具平台无法支持指定两个IP进行回放,然后对回放结果进行对比;二是首页对比规则是基于业务特性产生的,较复杂,平台侧无法较好支持。

0488fa4b11b332903ff59113c1a56d63.png

对于上述问题,经过综合考量决定,依托淘宝通用录制回放工具平台现有的录制回放能力,通过在首页平台侧开发适配业务特色的自定义断言规则完成对比校验。对比过程将以旧环境返回的结果作为基准,通过断言校验,判断新环境的数据是否有缺失。录制回放过程如下图:

eae2402b8589dc219550d46e935d5c89.png

  发布阶段

  1. 加白验证——通过加白名单方式对核心业务场景进行再次验证。

  2. 录制回放——利用录制回放能力并行验证。此时,录制回放流程与预发验证的有所差异,改为从线上引流后,直接在serverless进行回放与对比。

  3. 单机压测——切流前,需要对新旧环境的各项参数指标进行压测对比,将新环境的各项参数调至最优,以减少机器差异造成的影响。压测方案如下:

    压测环境:隔离环境,通过在header中增加标识,分流到新老不同架构

    接口选择:选择首页主接口和购后信息流两个主接口(主接口和购后信息流是首页访问量最大的两个接口,比较具有代表性)

    压测步骤:两套隔离环境同步压测,观察各项系统指标

f10e375558c8142c9617131f7394b59d.png

6ac790cc090959fce2db2a585585b85c.png

灰度期间,如何保障大促例行化压测?

切流过程较长,期间会叠加大促场景,而大促前需要对集群进行例行化压测摸底。初次切流后压测,可能会存在一些潜在问题。首页作为流量入口层,很多下游业务的压测流量都对其有依赖,首页压测出现问题时,会对下游的压测实施产生影响。因此我们需要确保新环境压测出现问题后不影响原有压测计划继续执行。

综合考虑,最终采用双环境压测隔离方式,如下图所示。构造两套压测模型供新旧环境使用,旧环境按照100%流量压测,新环境根据流量比例压测 。当新环境压测出现问题时,停止即可,而旧环境可以继续执行压测。

ff3bdf7f92a0d642e9b5db01b972d9c8.png

67cf548fd6c96b54c286515779092c26.jpeg

总结

经历了618大促放量10%,以及618大促和88大促之间切流50%,60%,80%等过程,已经于8月2日完成百分百切流。

在首页serverless架构升级的测试过程中,我们对首页录制回放的对比方案进行了探索与尝试,后续会将此方案继续运用于日常以及安全生产回归中,以提升整体回归能力。

029737e723dac6adeed94ca5f0eab069.jpeg

团队介绍

我们是大淘宝技术导购&详情测试团队,负责导购以及详情链路的质量保障工作。导购以及详情链路作为淘宝的基础链路,承载着淘宝的海量DAU与业务使命。团队致力于通过高效的策略以及适配的技术工具为相关业务的质量与稳定性进行保驾护航。

¤ 拓展阅读 ¤

3DXR技术 | 终端技术 | 音视频技术

服务端技术 | 技术质量 | 数据算法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/125854.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

wordpress企业主题推荐

WordPress制造企业主题推荐 国潮好物,配国产主题,为中国制造加油、助力,适合生产、加工、制造业官网的WordPress主题。 演示 https://www.jianzhanpress.com/?p4358 wordpress服务行业网站模板推荐 浅绿色小清新wordpress网站模板&#x…

软件测试期末复习(一)试题及答案

一、单项选择题(每空 2 分,共 40 分) 1.软件测试的目的:( c ) A. 避免软件开发中出现的错误 B. 发现软件开发中出现的错误 C. 尽可能发现并排除软件中潜藏的错误,提高软件的可靠性 D. 修改软件…

Axure绘制流程图

相信大家在日常的工作中经常会绘制流程图,基本常见的绘制流程图的工具有Visio、亿图等。但是如果大家使用的是axure制作的产品prd的话,这些流程图的源文件全部需要进行存储,一旦丢失就需要重新画一遍,这样是很不方便。那么有没有一…

JDBC API详解

文章目录入门案例DriverManagerConnectionStatementResultSetPreparedStatement数据库连接池完整代码入门案例 package jdbc;import java.sql.*;public class connectionTest {public static void main(String[] args) throws ClassNotFoundException, SQLException {//1.注册…

Revit二次开发小技巧(十六)寻找最短路径

最近遇到一个需求,指定两个配电箱,然后找到两个配电箱之间最短的桥架路径。运用了Dijkstra算法去计算最短路径,以配电箱实体、三通、四通为节点,简化中间弯头计算的方式。 背景 选择起点和终点的配电箱,找到最短的桥架…

RingUI + JCEF开发IDEA插件

文章目录RingUI知识储备示例插件实现逻辑开发环境开发流程新建一个IDEA插件项目新建一个前端项目验证前端项目丰富前端项目丰富插件内容RingUI This collection of UI components aims to provide all the necessary building blocks for web-based products built inside JetB…

向 Windows 高级用户进阶,这 5 款效率工具帮你开路

工欲善其事,必先利其器。作为全球最多人使用的桌面操作系统,Windows 的使用效率与我们的工作学习息息相关。今天,小编就为大家整理了 10 款提高效率的利器,让你的 Windows 更具生产力。 1.文件预览——Seer MacOS 有一个非常方便…

优雅草YYC松鼠短视频2022年12月28日更新v5.1.6版本更新·修复因为消息提醒二开导致菜单栏无法显示·进一步完善推送

优雅草YYC松鼠短视频2022年12月28日更新v5.1.6版本更新修复因为消息提醒二开导致菜单栏无法显示进一步完善推送 更新日志 修复因为消息提醒二开导致菜单栏无法显示 继续进一步开发消息推送 目前消息推送登录以及推送判断返回刷新仍存在问题在开发中 目前goeasy官方也在更新关…

数据劫持基础

数据劫持数据劫持原理。属性描述符Object.defineProperty官网响应式原理![在这里插入图片描述](https://img-blog.csdnimg.cn/b9f900484f314334a0dc6139428b397c.png)getter和setterObject.defineProperty的不足proxy工作原理总结数据劫持原理。 数据劫持,指的是在…

Find My资讯|苹果 Find My 找到因交通事故坠崖的一名女子

美国加州圣贝纳迪诺县消防局在其官方 Facebook 更新动态,表示在接到家属报警,通过苹果 Find My 功能追踪家人的 iPhone,成功营救出在圣贝纳迪诺山区的 18 号高速公路上坠崖的一名妇女。 圣贝纳迪诺县消防局在帖子中表示这名妇女在圣诞节那天…

多线程与高并发(三)

【 day3课前复习 】: 【AtomicInteger】: 原子性——都是用CAS机制来实现。 【 expected , update 】: //有时候也会写三个值——你要修改的那个对象。 expected——期望值。(旧值) update——更新值。(新值&#…

LeetCode刷题复盘笔记—一文搞懂动态规划之剑指 Offer 46. 把数字翻译成字符串问题(动态规划系列第三十四篇)

今日主要总结一下动态规划的一道题目,剑指 Offer 46. 把数字翻译成字符串 题目:剑指 Offer 46. 把数字翻译成字符串 Leetcode题目地址 题目描述: 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” &am…

小型云台机械手的制作

1. 运动功能说明 小型云台机械手,下方的云台可以提供左右旋转和上下摆动的动作,与舵机夹爪配合可以完成简单的抓取和搬运。 2.结构说明 该样机由一个 R207小型舵机云台 上串联了一个 舵机夹爪模组 构成。 3. 运动功能实现 3.1 电子硬件 在这个示例中&a…

Redis集群系列五 —— 分区/片概念

什么是分区 分区就是将所存储的数据按照一定的规则存储在不同的存储服务或介质上,通过降低单服务或介质的数据量级来提升数据处理能力,从而达到拥有数据处理横向扩容的能力的目的。 还可简单的理解为分区就是将数据拆分到多个 Redis 实例的过程&#xf…

21. 合并两个有序链表播报文章

题目描述 这是一道难度为简单的题目,同时,这道题也是Leetcode148题中,链表归并排序中重要的组成部分。 题目描述 题目分析 本题的题目简单易懂,输入为两个有序链表,要求将链表合并为一个有序的链表。在此不在再赘述…

【消息中间件】RocketMQ如何实现Producer的负载均衡

目录 一、前言 二、实现Producer的负载均衡 1、负载均衡选取一条消息队列并且高可用 1.1、模拟随机递增取模消息队列数为5 1.2、模拟随机递增取模消息队列数为6 1.3、判断Broker代理是否可用 2、更新故障项维护startTimestamp字段 2.1、退避运算 2.2、更新故障项维护st…

干货 | 数字经济创新创业——数字经济下的商业模式与解决方案

下文整理自清华大学大数据能力提升项目能力提升模块课程“Innovation & Entrepreneurship for Digital Economy”(数字经济创新创业课程)的精彩内容。主讲嘉宾:Kris Singh: CEO at SRII, Palo Alto, CaliforniaVisiting Professor of Tsinghua Unive…

卷积、转置卷积、膨胀卷积学习记录

Conv计算: 计算公示 1、pytorch中默认参数,以conv1d为例 torch.nn.Conv1d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_mode‘zeros’, deviceNone, dtypeNone) 2、输出卷积尺寸&am…

MySQL常见内置函数及其使用

目录 1、聚合函数 2、日期函数 3、字符串函数 4、数学函数 5、其它函数 1、聚合函数 函数说明 COUNT([DISTINCT] expr) 返回查询到的数据的 数量SUM([DISTINCT] expr)返回查询到的数据的 总和,不是数字没有意义AVG([DISTINCT] expr)返回查询到的数据的 平均值…

数据蛙恢复软件替代产品有哪些?15款顶尖数据恢复软件清单

数据蛙恢复软件是一款国内数据恢复软件,可以在很多品牌的电脑上使用。但是你可能会遇到数据蛙恢复软件扫描不到需要恢复文件的情况。那么有没有更专业的数据恢复软件可以找到更多误删数据?本文将为你介绍最值的推荐的15个数据蛙恢复软件替代产品。 丢失…