serverless在点淘的质量保障实践

news2024/11/20 16:35:50

fc7e03bee5a0591120b2c8f46a564caa.gif

SERVERLESS能够将应用分为研发域和运维域,使两者独立迭代,降低运维成本,提升研发效率。点淘作为试点项目,经历了包括功能回归、压力测试和监控验证在内的质量保障流程,并在实践中遇到了各种问题,如依赖梳理、性能验证和监控建设等。文章还提到了SERVERLESS带来的部署效率提升,例如应用部署时长显著下降,并展望了未来通过基座插件化和分层自动化来进一步优化测试成本和功能保障。最后,文中列举了SERVERLESS升级带来的部署时间减少的具体案例,展示了实施SERVERLESS架构的收益。

d2c85061afd5f468f1c14ec376df1926.png

aone serverless概念&背景

aone serverless简介:

  1. serverless作为新兴技术,虽然有了统一的定义和鉴定原则,但普遍认为还没统一的实现标准。广义上指:构建和运行软件时不需要关心服务器的一种架构思想。虽然 serverless 翻译过来是 “无服务器”,但这并不代表着应用运行不需要服务器,而是开发者不需要关心服务器。

  2. 特别说明:aone serverless是结合阿里集团特点推出的对传统的集团内的企业级应用实现serverless化的解决方案,下文所提的serverless均是aone serverless的工程实践,可能和公网上所提的serverless略有不同。

  3. aone serverless从本质上讲是一种新型的云原生架构,通过分层的思想,将原来的应用分离成研发域以及运维域,并通过『插件机制&三层调度』提供一个架构一致性的抓手,研发域由业务开发人员掌控,运维域由基座开发人员掌控,两者独立迭代,互不干扰。

本文主要讲aone serverless质量保障,概念本身此处不做过多展开。

dc040eae3b6657808f5de169df1fc485.png

内容技术开展&点淘APP先行的原因

  1. 降低运维成本、提升研发体验、提升交付效率。(顶层设计比较朴实,预研时很关注ROI)

  2. 集团在基础设施和实践经验上有了一定积累

  3. 点淘历史比淘内短,试错的成本和风险低于淘内,更适合做这种探索性工作

29c2b1601795b0ff838ab28903fb1d50.png

质量保障设计思路

serverless是一种新型云原生架构,那么对应的质量保障手段就绕不开常规的保障手段——回归。经历过PandoraBoot强势推进升级覆盖、集团整体上云等的同学应该都做过全应用回归。点淘做serverless在内容技术属于试点,集团可参考的团队不多,当时serverless对我们来说是相对黑盒的。同时流量高&资损点多,所以点淘回归做的比较重,同时重点关注应用性能表现

serverless架构采用了分层的思想,质量上也应该分层保障。过往我们测试更关注研发域应用层的质量,后面运维域基座&插件的保障也应在工作范围内。同时架构升级和分层也导致了某些依赖关系发生改变,质量保障上也应更关注环境依赖相关功能的保障。

点淘serverless已开展了近半年,基于过往经验&踩坑,serverless质量保障可以做的更轻便,这块在「总结&展望」重点讲,此处不做过多展开。

69892861fdf2aa82728b5619c19d350c.png

升级质量保障实战

  功能回归

业务梳理:

  1. 接口反推:根据升级应用内接口流量大小排序(如QPS>X),并且根据接口反推功能,确保大流量接口都能覆盖到。

  2. 专家经验:对资损、环境依赖、高舆情场景进行梳理和覆盖。

  3. 依赖梳理:结合流量调用分析对应用&接口的依赖关系进行梳理,对之前没有覆盖的对外依赖(如中间件、其他应用、外部SDK等)进行重点覆盖。

be3ebdd586d490898ac711a9a525247a.jpeg

独立测试环境搭建&命中:

serverless升级主要是针对服务端的,但内容相关业务往往是端到端的。所以重点场景的功能测试是必不可少的。命中serverless独立测试环境可以提高功能测试效率,集团测试工具可以帮助测试流量快速&准确的命中到serverless机器上。

接口自动化测试:

  1. 接口自动化测试是做回归最直接的手段。如果待升级的应用已经有了自动化覆盖,那么质量保障成本会小很多。如果还没有自动化覆盖,可以参考一下我们以往踩的坑,提高工作效率。

  2. 对于功能回归我们很难覆盖业务线上流量的所有情况,所以需要进行全面的接口测试来对场景进行全面覆盖,为提高接口回归的效率与覆盖率,采用接口流量录制与回放的方式对接口进行回归。

    5ee3ed8d76f1de0f1f4570b1069b34c4.png

  3. 由于serverless本身机制问题,每次部署之后IP都会变化。经过调研,我们选择了自动化挂载比较方便的自动化平台。

  压力测试

serverless升级主要是环境升级,需验证新容器比旧容器性能表现不明显下降。对性能敏感的应用,建议测试环境阶段就对serverless机器进行性能对比。对性能不敏感的应用,可以等灰度放量50%时和老容器进行流量和系统水位的对比。

压测方式:

  1. 优雅的压测方式:应采用统一环境隔离的方式,针对需要验证的机器做gray4的灰度环境压测。但因人员调整,gray4压测不再支持新业务接入,我们只能曲线救国。

  2. 曲线救国的压测方式:通过vipserver把指定接口路由到需压测的机器上去,再对实验组、对照组压测,观察性能表现。(此部分为研发工作量)

    db5856590dba9eb912a299eeeba12bbe.png

  3. 最省力的压测方式:对性能不敏感的应用,等灰度放量50%时和老容器进行流量和系统水位的对比。

压测验证方式:

  1. 执行压测前即可通过调用数据的traceid验证流量是否到指定机器上,确保实验组和对照组的前置条件符合预期,进而降低压测成本。

  2. 流量和系统水位观测:和普通压测类似,找到普通分组和serverless分组即可,然后对cpu、load等关键指标两个分组进行对比。但由于serverless基建还可能还不完善,建议多个平台对比系统水位,确保系统数据显示准确。

79818fd711a204c5c407fc51eba33489.png

  监控验证

应用serverless升级后在灰度放量前,我们需要单独对serverless的机器分组进行监控建设(主要覆盖核心场景)。

对于serverless的监控,研发一般会有两种操作:在原有监控基础上新增分组、新建监控。验证方式如下:

  1. 合理性验证:根据经验以及对应用的了解,和研发对齐监控设置的报警条件是否合理

  2. 有效性验证:这部分的验证手段可以利用混沌工程往日志文件中注入错误日志,看是否能够触发监控报警,在过程中主要关注两个点:报警是否订阅、报警达到阈值后能否及时报警

  3. 日志排查:对于应用的监控关注点,建议放在系统的异常日志,因为升级过程中遇到的各种因环境未ready造成的异常均可以体现在异常日志。

  问题分析

近半年踩了不少坑,记录在案的有42个问题,仅3个和研发域上层应用升级相关。阿里serverless在上层应用升级上具备了可推广的条件。

  1. 研发域问题:参考历史问题,基本都集中在对外部有依赖的场景上(如中间件、其他应用、外部SDK等),升级时这部分需要重点关注

  2. 运维域问题:问题基本集中在监控系统数据统计和更底层的依赖上,随着这半年的踩坑,目前运维域升级也越来越顺畅

  3. 产品能力问题:serverless还是一个迭代中的新云原生架构,还有些细节问题不完善。目前这些问题都有比较定制的快速解决方法,优雅的解决方式还需要产品化的长远解决

4da716fd804c4f768c46bb26ddf4504c.jpeg

总结&展望

  总结
  1. 研发域的问题基本都和环境相关。和对外依赖、外连权限、系统变量、自定义变量等相关的要重点梳理,功能测试接口测试都尽可能覆盖。

  2. 运维域踩了最多的坑,一般和业务的性能统计性能表现相关,主要影响基座&插件相关的同学(少数)。

  3. serverless还是一个发展过程中的产品,有它架构先进性和潜在收益。但也有大量的坑需要接入方去踩,一般这些坑踩过之后,别的应用也是受益的。一般产品能力问题都有黑科技可以解决,但长远支持还得看tre产品化能力支持。

  4. 目前serverless升级各阶段投入成本如下图。

eb8d5a76c1a114dd10dcdc11f5a279d5.png

  展望
  1. 点淘踩了半年的坑之后,serverless对我们也不再黑盒。后续环境依赖相关功能和P0级接口重点保障,其他功能通过线上监控保障。预估下来1个普通应用升级的测试成本可控制在0.5~1人日(现成本见上图),复杂应用得具体分析。

  2. 点淘已经基于基座做了工作,但目前基座上的插件还不多,S1点淘预计完成26+个基础能力的插件化。插件功能不会暴露hsf接口,1个基座同时会同时影响多个上层应用。所以分层自动化&分层容灾是必须要做的工作。最底层的单元测试我们将使用copilot对基座插件代码进行覆盖,试用下来有明显效率提升。

  收益
  1. 【部署提效】应用部署构建时长平均减少17%,对于启动时长越长的应用,收益更好,并且由于引入surge模式,原有的2批发布改为一批发布,一线同学对于升级serverless之后的体感更强一些, 月度平均部署构建时长见下表。

    应用举例

    部署时长

    构建时长

    总时长

    某大型业务应用

    减少44.4%

    减少17.2%

    减少34.9%

    某数据型应用

    减少32%

    减少6.5%

    减少22.9%

    某中型业务应用

    减少25.6%

    减少8.7%

    减少18.9%

  2. 基座owner&插件升级者关注,对于其他一线开发同学无感

    464cf211d966961eba3c94b4d7aa0da1.png

274d37657a2e419d33a4226698575b93.jpeg

声明&致谢

  1. serverless还是一个探索中的技术形态,故本次分享不是点淘serverless质量保障的最终形态,欢迎有兴趣的同学一起来探索更稳定更高效的保障策略。

  2. 本文部分设计思路和图表产自我的搭档,以及我的TL在方案设计和AI实践上的指导。

¤ 拓展阅读 ¤

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

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

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

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

相关文章

VOS3000被DDOS攻击后该怎么办

VOS3000遭受DDoS攻击的应对措施 当VOS3000遭受DDoS攻击时,可以采取以下几个步骤来应对: 立即启动防火墙:尽管难以完全阻止DDoS攻击,但防火墙可以在一定程度上帮助抵御攻击,减轻其造成的危害。 联系服务器提供商&#…

抖音小店新规重磅来袭!事关店铺流量!商家的福音来了?

大家好,我是喷火龙。 就在前两天,抖店发布了新规,我给大家总结了一下,无非就是两点。 第一点:保证金下调,一证开多店。 第二点:新品上架破10单,有流量扶持。 咱来细细的解读&…

人生苦短,我学python之数据类型(下)

个人主页:星纭-CSDN博客 系列文章专栏:Python 踏上取经路,比抵达灵山更重要!一起努力一起进步! 目录 一.集合 1.1子集与超集 1.2交集,并集,补集,差集 1.intersection(英文&a…

学习笔记——STM32F103V3版本——HC-05模块控制数码管

一.硬件 1.HC-05模块 2.数码管 3.连接硬件 二.在keil5中的代码 main.c代码: #include "stm32f10x.h" #include "buletooth.h" #include "led.h" #include "sys.h" #include "usart.h" #include "delay.…

python实用系列:按顺序重命名文件

啊,好久没更博客了,今天偶然想换个桌面壁纸,于是上网搜了两个比较满意的桌面壁纸,都是压缩包: 当我想要给他们放到我的桌面壁纸文件里的时候患了难,因为他们的名字有相同的: anime文件夹里边&a…

el-select可选择可搜索可输入新内容

需求:el-form-item添加el-select,并且el-select可选择可搜索可输入新内容,并且和其他的el-input做联动,如果是选择,那么el-input自动回填数据并且不可编辑,如果el-select输入新的内容,那么el-in…

js禁止使用浏览器的前进后退按钮的方法

效果图: // 替换当前页面的历史记录,使用户不能通过浏览器的前进后退按钮导航 history.replaceState(null, null, location.href);// 监听浏览器的历史记录变化事件 window.onpopstate function(event) {// 再次替换当前页面的历史记录,确保…

接口使用实例——数组排序

对于基本数据类型的大小比较&#xff0c;我们可以使用<,>,或者equals方法进行比较&#xff0c;但是对象之间如何进行比较呢&#xff1f;要对对象进行比较&#xff0c;我们必须对同一个成员变量进行比较&#xff0c;如我们可以通过比较name的大小来得出两个对象的大小&…

四万字长文详解——node.js使用移动云,EOS对象存储

目录 前言 安装及安装前的操作 前置条件 如何创建认证信息 使用npm安装SDK开发包 安装开发包命令 初始化操作 存储桶 查看结果命令 查看桶列表 查看结果命令 删除桶 查看结果命令 创建桶 获取桶列表 判断桶是否存在 查询桶所属地域 查询桶的访问权限 管理桶的…

前后端 | 低代码平台之 Erupt

前文提要 最近大家是不是都有那种危机感&#xff0c;项目变多了&#xff0c;工时压紧了&#xff0c;老板说&#xff0c;我不管你加不加班&#xff0c;我只看结果&#xff0c;项目经理说&#xff0c;我不管你用什么技术栈&#xff0c;我只要没BUG&#xff0c;测试说&#xff0c…

【算法】分治 - 快速排序

快乐的流畅&#xff1a;个人主页 个人专栏&#xff1a;《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火&#xff0c;在为久候之人燃烧&#xff01; 文章目录 引言一、颜色分类二、排序数组三、数组中的第k个数四、最小的k个数总结 引言 本节主要介绍快速排序&#xf…

类图的六大关系

类图中的六大关系包括&#xff1a;继承关系、实现关系、关联关系、聚合关系、组合关系和依赖关系。 1. 继承关系 继承是一种类与类之间的关系&#xff0c;表示一种泛化和特化的关系。子类继承父类的特性和行为。 class Animal {void eat() {System.out.println("This an…

足球走地全自动化操作软件实现过程

本次采用selenium实现自动化操作的流程 打开浏览器录入账号密码等待数据请求&#xff08;监听&#xff09;有新数据&#xff0c;进行自动化操作通过homeName搜索&#xff0c;找到对应数据找到对应的类型&#xff08;让、大小…&#xff09;找到对应的盘口输入数量提交 附登录…

系统资源监控器工具glances的使用详解

目录 1、glances工具介绍 2、安装方式 3、glances的工具界面说明 4、常用的参数选项 5、常用快捷键说明 1、glances工具介绍 glances可以分析系统的 CPU使用率、内存使用率、内核统计信息和运行队列信息磁盘I/O速度、传输和读/写比率、磁盘适配器网络I/O速度、传输和读/写…

华为编程题目(实时更新)

1.大小端整数 计算机中对整型数据的表示有两种方式&#xff1a;大端序和小端序&#xff0c;大端序的高位字节在低地址&#xff0c;小端序的高位字节在高地址。例如&#xff1a;对数字 65538&#xff0c;其4字节表示的大端序内容为00 01 00 02&#xff0c;小端序内容为02 00 01…

电脑远程控制另一台电脑怎么弄?

可以远程控制另一台电脑吗&#xff1f; “你好&#xff0c;我对远程访问技术不太了解。现在&#xff0c;我希望我的朋友可以远程控制我的Windows 10电脑&#xff0c;以便她能帮我解决一些问题。请问&#xff0c;有没有免费的方法可以实现这种远程控制&#xff1f;我该如何操作…

如何选择一个最强大模型-看最硬核排名了!

Chatbot Arena由伯克利大学主导团队 LMSYS Org 发布了一个针对大语言模型的基准平台 Chatbot Arena。该平台采用匿名、随机的方式让不同的大模型产品进行对抗评测&#xff0c;基于国际象棋等竞技游戏中广泛使用的埃洛等级分系统&#xff0c;通过用户投票产生&#xff0c;系统每…

基于SpringBoot的网盘系统设计与实现

第1章 绪论... 1 1.1 研究背景与意义... 1 1.1.1 研究背景... 1 1.1.1 研究意义... 1 1.2 国内外研究现状... 2 1.2.1 国内研究现状... 2 1.2.2 国外研究现状... 3 1.3 论文组织架构... 4 第2章 关键技术介绍... 5 2.1 SpringBoot. 5 2.2 MySQL数据库... 5 2.3 MVC架…

区块链论文总结速读--CCF A会议 USENIX Security 2024 共7篇 附pdf下载

Conference&#xff1a;33rd USENIX Security Symposium CCF level&#xff1a;CCF A Categories&#xff1a;网络与信息安全 Year&#xff1a;2024 Num&#xff1a;7 1 Title: Practical Security Analysis of Zero-Knowledge Proof Circuits 零知识证明电路的实用安全…

对AI 感兴趣的小伙伴

如图&#xff0c;欢迎来玩儿&#xff01; 欢迎来玩儿