我在 2008 年进入公司后,做的一直是面向 C 端用户的客户端产品—QQ,产品的可测性是很强的,虽然功能很多,但我们测试团队总是能成为产品质量的坚强后盾。2016 年我们团队加入腾讯云之后,依然在客户端方向,但所做的产品已经不再是一款软件,而是一套音视频通信领域的 PaaS SDK,即 [TRTC SDK] 和 [IM SDK] 。
相比于 QQ 只需要做好一款 App,我们要面对的是服务好几千个客户的 App,而于此同时,测试资源又是有限的。在这种情况下,如何确保产品质量呢?
在几年前我们刚开始做 ToB 的 SDK 的时候,曾经对接过一家做社交 App 的公司,对方的技术负责人很年轻也很务实。在商务大哥给力的努力下,客户成功完成了产品的接入,并进入线上灰度阶段。
然而,在开始灰度的那天晚上,线上用户出现了很多消息延迟大的投诉,用户的一条消息需要很长时间才能发出去。客户虽然对我们很失望,但依然很努力地在配合我们排查和修复问题。
在两天的时间里,我们给客户改进了多个版本,每次给版本的时候我们都说“已经找到问题了,这个版本肯定可以”,但每次效果都不理想。两天之后,客户的技术负责人很严肃地询问了我们一个问题:“从这两天的排障过程和修复过程来看,我想确认一下你们这是一款商用级的产品吗?”
在那个晚上,我们开始冷静地思考一个问题:一款优秀的商用级 SDK 应该怎么做?
最近教育行业被政策打压地非常厉害,但在两年前,这是个 PaaS 服务的兵家必争之地。我们有一家做在线英语教学的客户,一直在对接我们的 TRTC。这个客户对质量要求非常苛刻,他们很早便引入了赛马机制,将多家 PaaS 服务商拉入到自己的供应商集群,互为灾备,并进行质量评估,看谁的质量好就用谁的产品。
在最开始对接的时候,我们的产品质量还不是很优秀,几个关键指标跟竞品都有差距。这倒不是问题,优化总要有一个过程,于是我们一个迭代一个迭代地去跟进。因为客户的版本发布速度非常慢,所以我们需要在两个版本之间都做好问题分析和优化落地,稳抓稳打地慢慢降低工单率。就这样,经过了将近一年的时间,产品各项指标都已经很不错了,我们非常有信心在下一个版本超过友商获得质量上的领先地位。
但就在我们信心满满地等待客户上线的灰度反馈时,客户突然抛出一个问题:“你们的 SDK 有一个对音频模块的自动重启逻辑,这个逻辑会在切换线路时影响到其他供应商的音频模块, 这是绝对不能容忍的”。因为引入多家供应商赛马的意义就在于保证可以有灾备,如果一家供应商影响了其他供应商的稳定性,这个灾备便没有了意义,因此客户对我们异常失望,放量计划无限期搁置。
面对一年的努力功亏一篑,我们开始接受一个现实:每位同事都可能会因为手滑引入缺陷,但对团队而言代价却是难以承受的,怎么办?
回到正题,接下来我会介绍一下过去的这些日子里,我们怎么去应对这个问题。不过在此之前,我需要先介绍一下我们的产品:
我们团队所开发的是一套面向企业级客户的 SDK,包括用于实时音视频通讯的 [TRTC SDK] ;用于消息通信的 [IM SDK] ;用于直播推流和播放的 [LIVE SDK] ;以及用于短视频录制和编辑的 [UGC SDK] 。
产品面向的客户群很多:有做泛互联网行业的,比如在社交领域长期霸榜苹果应用商店的某知名 App;也有在线教育领域的很多知名机构,教学模式包括 1V1、小班课、大班课等等;也有金融和保险领域的巨无霸,他们会使用我们的产品将现有的业务尽快地跟互联网融合;还有各行各业的中小型企业,他们虽然可能并不出名,但确实支撑我们国家互联网经济持续繁荣的基石;对了,还有做毕业设计的学生,虽然他们不会付费,但保不齐人家会在毕业后给自己的老板推荐我们的产品呢。
面对这么多行业领域的客户,有喜有忧,喜的是这是一桩很好的生意,忧的是这里有着车载斗量的压力:因为 SDK 这种形态的技术产品,如果要面向企业客户去服务,那真是打从娘胎里一出来就注定了坎坷的一生。
首先是客户群体:
然后是产品形态:
最后是交付成本:
面对这个问题,我们的友商做法是:加人。
当然,我们不能这么简单粗暴,毕竟粗放型经济是走不远的,我们还是得从研发体系上用集约的思想去解决问题,这就是接下来要说的重点:从研发、产品、数据和排障等四个方向去认认真真做好一款面向企业服务的 SDK 产品。
在研发体系方面,我们依然遵循腾讯倡导的需求评审=>技术评审=>开发=>测试的流程。但每个环节,我们都结合自身的特点进行了改进。
首先是需求评审,我们团队经过这几年的打拼,总结出来最关键的一个点,就是看需求一定要看客户背后的意图。有时候客户会跟你说:“我想要你给我增加一个设置视频分辨率和码率的接口”。这个时候你要不要加呢?如果我们只是看客户的需求,那是要加的。但如果我们再问问,“您为什么需要我们加这个接口呢?” 那客户可能就会跟你说:“我觉得你们的画质不行,不够清楚,我要自己调,我要调清楚一点。” 这个时候我们就明白了,我们的需求不是“去增加一个可以设置视频分辨率和码率的接口”,而是去“提升我们的画质以满足客户的需求”。
这两者是不对等的,因为前者客户可能认为只要分辨率调到 4K 就是清晰的,但客户可能误以为“清晰度”就等同于“分辨率”,所以往往会指定一个 4K 的分辨率,却配置了一个 40Kbps 的视频码率。懂音视频的朋友都知道,这样的画面是模糊地没法看得。所以我们在简单版的 API 接口中,都不开分辨率设置接口,而仅仅是提供一个画质等级的接口,以避免客户的错误配置。但我们在得知客户的意图之后,会去了解客户为什么觉得我们画质不行,是跟哪款产品比有差距。进而分析是提升颜色矩阵转换的精度,还是在前处理的最后增加一道锐化,还是视频分辨率不匹配显示分辨率导致的问题,还是 OpenGL 的线性变换和就近变化的差异问题。
这个部分,我们一般会鼓励大家提供两个以上的方案,然后进入“左右互搏”的模式。因为很多可爱的同事本身也是可爱的急性子,只要能早点写代码,什么都是不重要的。毕竟咱们做研发的成就感,不就来自于把功能做出来看到自己的成果吗。
但我们也不断地告诫自己,我们究竟是做“一票子买卖”还是是“百年老店的生意”。如果是前者,那大可以想到哪里代码就写到哪里;但如果是后者,则需要我们综合考虑多个方案,选择更能可持续发展的方案。
要知道在 ToB 这个领域,我们一不注意就会把自己陷入到做定制需求的套路里。面对业务压力,一开始这样是很解渴的,但随后的维护成本就让自己彻底吃不消了,每天除了救火什么都干不了的团队,也就失去了创造新价值的能力。
在代码合入方面,我们团队在很早的时候就引入了一套非常严格的代码评审流程,即三级评审:
最近半年在测试团队,尤其是 svein 和俊哥的大力支持下,我们的自动化测试进步极大。不管是 native sdk 还是 webrtc sdk,自动化测试都能覆盖掉很多刁钻和难以手工覆盖的部分。比如一次通话过程中几十次的“进进出出”,或者是频繁的切换某个状态,这些都是以往手工测试很容易把人逼疯的部分。益于测试团队的持续投入,目前我们的自动化测试系统已经小有成绩。要知道,构建一个面向音视频功能的自动化测试体系,那难度可是非常高的。仔细想想就知道这里面有多少破事儿要解决:
通过需求评审、技术评审、代码审查和自动化测试的多重保护,我们最近已经很久没有再发生前面说的第二个故事里的事情了。即使有些同事一时手滑引入了一些问题,也大都能在 SDK 交付前得到暴露,只是目前我们并不能将这个概率降低到 0% 而已。
作为一款自身不带界面的 SDK,要做到产品体系的优化,就只能去优化技术本身,但这是枯燥且不好度量的。俗话说得好,“文无第一,武无第二”,说的就是评判标准的问题。这就好比你画一幅画,如果没有老师指点你怎么才算好,那就会很难度量自己这段时间是水平提高了还是退步了。不然人家丢勒一个德国人,干嘛两次跑到意大利的威尼斯去学画画;又不然怎么会出现很多画家都是在那啥之后才有人开始欣赏他们的作品的呢?
所以说,作为一款面向 ToB 客户的 SDK 产品,要提升产品质量,就得有一些手段和方法,我们是这么做的:
我们做 TRTC SDK,我们的客户拿 TRTC SDK 的能力去做合唱,去做 K歌,去做语音聊天室,去做视频直播。那我们就只是做好自己的一亩三分地吗?
当然不行,所以我们自己也实打实地开发了一些面向行业场景的 App(也可说是 Demo),比如合唱、语聊、教育、直播等等。并在这些场景的开发过程中,不停地寻找产品的问题和不足,并持续打磨,以确保在产品交付客户之前,在产品体验上就已经达到了一个很好的水平。
比如我们在开发在线合唱的场景时,就经常有人找我问:“rex,我跟你确认一下哈,咱们团队里的同学,究竟都是写代码的程序员,还是想要通过《我是歌手》来改变人生的麦霸?”
构建一套靠谱的数据体系很重要,这就是把“文无第一”的事情变成“武无第二”。通过数据体系,让所有的指标都变成可以比较的数字,并且依托数据分析系统,不断地提升产品质量。
虽然这个思路大家都很清楚,也都在各自的产品中有所落地,毕竟咱们腾讯的产品团队,谁家还没有一个负责数据运营的同事呢?当然有些比较大的业务,都是有自己的数据运营团队的。
但还是得说,这个事情在 toB 的方向上不好做,难在两点:
面对上述挑战,我们还是得从技术角度去解决问题,毕竟靠堆人是不行的,这生意得做出毛利率才能长久地坚持下去。
庆幸的是这方面我们还是做得不错的,尤其是我们团队一向比较在意数据,团队里还有一等一的聪明脑袋负责数据体系的建构。比如我们在自己的引擎内部的各个关键模块都做了数据“挂节点”。这些模块会每时每刻将近百个技术指标以一秒一次的频率反馈给统计模块,在统计模块进行汇总之后,再实时上传到服务器上。
基于这些海量的数据信息,仅仅靠 group by 和 count 、where 等 SQL 语句做简单的统计分析是肯定没用的,因为这样的分析得不出任何有价值的信息。
比如一次糟糕的通话体验,可能出现过一次 2s 的卡顿,但是这些数值如果仅仅是用来做大盘平均分析,那这次 2s 的卡顿就“淹没”在了海量的通话数据里,你拿到的最终的平均值甚至不会有小数点上的一个波动。
针对这个问题,团队中的 xuanyi 和 yuting 两位同事,基于对以往 badcase 的经验综合分析,构建了一套“根因分析系统”,并用了将近半年的时间,不断地打磨其准确性。到目前为止,这套系统对于 badcase 的分析已经接近人工挨个 case 分析的准确性,为团队节省了不知道多少人力。
回到最初的小故事,客户之所以怀疑我们的产品不是一款商用级的产品,最大的问题就在排障体系上。因为客户也不是最终用户,客户在面对自己用户的反馈和投诉时,往往也是很难拿到第一手信息的。如果我们将排障过程演化成了:我们 <=> 客户<=>客户的用户,之间的复杂关系,这个事情就很容易引发矛盾和冲突。
所以我们在接受了早期的失败教训之后,就励精图治建设了一套商业级的排障系统。经过这几年的努力,这套系统已经越来越强大了,也承载了越来越多的能力。目前已经能够做到分析过去两周内任何一个用户的任何一次体验问题,并能够定位到技术层面的缺陷或者环境方面的问题。
于此同时,在线日志和离线日志系统的双重保障,也让排障的信息变得更加容易获取。以往比较困难的线上死锁问题和调用时序问题,也开始不再那么可怕和束手无措。
当然,面对这么多的客户,靠一个团队的人力是不可能搞定数千个客户的技术支持和售后服务的,靠两个也不行。不过作为一款腾讯云上的老产品,我们的 TRTC 和 IM 很早就接入了腾讯云的安灯系统。借助安灯的问题跟踪和信息流转能力,中小客户的问题也得到及时的处理和沉淀。
从 2016 年加入腾讯云,团队到今天已经走过了五年,我们用了五年时间去学习如何做一款商用级的 SDK。虽然现在来说,我们做得还不够好,但至少可以回答几年前客户的质问,我们现在还是有信心并且有能力做好一款商用级的 SDK 产品的,而且不止一个。
本文由哈喽比特于3年以前收录,如有侵权请联系我们。
文章来源:https://mp.weixin.qq.com/s/DcDZad4UP4VUSWRnfVy9MQ
京东创始人刘强东和其妻子章泽天最近成为了互联网舆论关注的焦点。有关他们“移民美国”和在美国购买豪宅的传言在互联网上广泛传播。然而,京东官方通过微博发言人发布的消息澄清了这些传言,称这些言论纯属虚假信息和蓄意捏造。
日前,据博主“@超能数码君老周”爆料,国内三大运营商中国移动、中国电信和中国联通预计将集体采购百万台规模的华为Mate60系列手机。
据报道,荷兰半导体设备公司ASML正看到美国对华遏制政策的负面影响。阿斯麦(ASML)CEO彼得·温宁克在一档电视节目中分享了他对中国大陆问题以及该公司面临的出口管制和保护主义的看法。彼得曾在多个场合表达了他对出口管制以及中荷经济关系的担忧。
今年早些时候,抖音悄然上线了一款名为“青桃”的 App,Slogan 为“看见你的热爱”,根据应用介绍可知,“青桃”是一个属于年轻人的兴趣知识视频平台,由抖音官方出品的中长视频关联版本,整体风格有些类似B站。
日前,威马汽车首席数据官梅松林转发了一份“世界各国地区拥车率排行榜”,同时,他发文表示:中国汽车普及率低于非洲国家尼日利亚,每百户家庭仅17户有车。意大利世界排名第一,每十户中九户有车。
近日,一项新的研究发现,维生素 C 和 E 等抗氧化剂会激活一种机制,刺激癌症肿瘤中新血管的生长,帮助它们生长和扩散。
据媒体援引消息人士报道,苹果公司正在测试使用3D打印技术来生产其智能手表的钢质底盘。消息传出后,3D系统一度大涨超10%,不过截至周三收盘,该股涨幅回落至2%以内。
9月2日,坐拥千万粉丝的网红主播“秀才”账号被封禁,在社交媒体平台上引发热议。平台相关负责人表示,“秀才”账号违反平台相关规定,已封禁。据知情人士透露,秀才近期被举报存在违法行为,这可能是他被封禁的部分原因。据悉,“秀才”年龄39岁,是安徽省亳州市蒙城县人,抖音网红,粉丝数量超1200万。他曾被称为“中老年...
9月3日消息,亚马逊的一些股东,包括持有该公司股票的一家养老基金,日前对亚马逊、其创始人贝索斯和其董事会提起诉讼,指控他们在为 Project Kuiper 卫星星座项目购买发射服务时“违反了信义义务”。
据消息,为推广自家应用,苹果现推出了一个名为“Apps by Apple”的网站,展示了苹果为旗下产品(如 iPhone、iPad、Apple Watch、Mac 和 Apple TV)开发的各种应用程序。
特斯拉本周在美国大幅下调Model S和X售价,引发了该公司一些最坚定支持者的不满。知名特斯拉多头、未来基金(Future Fund)管理合伙人加里·布莱克发帖称,降价是一种“短期麻醉剂”,会让潜在客户等待进一步降价。
据外媒9月2日报道,荷兰半导体设备制造商阿斯麦称,尽管荷兰政府颁布的半导体设备出口管制新规9月正式生效,但该公司已获得在2023年底以前向中国运送受限制芯片制造机器的许可。
近日,根据美国证券交易委员会的文件显示,苹果卫星服务提供商 Globalstar 近期向马斯克旗下的 SpaceX 支付 6400 万美元(约 4.65 亿元人民币)。用于在 2023-2025 年期间,发射卫星,进一步扩展苹果 iPhone 系列的 SOS 卫星服务。
据报道,马斯克旗下社交平台𝕏(推特)日前调整了隐私政策,允许 𝕏 使用用户发布的信息来训练其人工智能(AI)模型。新的隐私政策将于 9 月 29 日生效。新政策规定,𝕏可能会使用所收集到的平台信息和公开可用的信息,来帮助训练 𝕏 的机器学习或人工智能模型。
9月2日,荣耀CEO赵明在采访中谈及华为手机回归时表示,替老同事们高兴,觉得手机行业,由于华为的回归,让竞争充满了更多的可能性和更多的魅力,对行业来说也是件好事。
《自然》30日发表的一篇论文报道了一个名为Swift的人工智能(AI)系统,该系统驾驶无人机的能力可在真实世界中一对一冠军赛里战胜人类对手。
近日,非营利组织纽约真菌学会(NYMS)发出警告,表示亚马逊为代表的电商平台上,充斥着各种AI生成的蘑菇觅食科普书籍,其中存在诸多错误。
社交媒体平台𝕏(原推特)新隐私政策提到:“在您同意的情况下,我们可能出于安全、安保和身份识别目的收集和使用您的生物识别信息。”
2023年德国柏林消费电子展上,各大企业都带来了最新的理念和产品,而高端化、本土化的中国产品正在不断吸引欧洲等国际市场的目光。
罗永浩日前在直播中吐槽苹果即将推出的 iPhone 新品,具体内容为:“以我对我‘子公司’的了解,我认为 iPhone 15 跟 iPhone 14 不会有什么区别的,除了序(列)号变了,这个‘不要脸’的东西,这个‘臭厨子’。