“传统”彩铃业务,华为还能搞出新花样?
“传统”彩铃业务,华为还能搞出新花样?
让老树发新芽
在饱受战火侵扰的B国某地,天色已近黄昏,一个本地人独自盘腿坐在昏暗的房檐下,拿出手机拨了几个按键后,急切地把手机放在耳边,1-2分钟如此反复。原来,他在拨打IVR(交互式语音应答系统),听祈祷铃音,祈愿自己的生活能够好起来。
这是华为长沙研究所的一位工程师赵永宏来到研究所后,从产品总监那里听到的一个关于彩铃的故事。这个故事让他对这个曾在21世纪初风靡中国、如今在国内已淡出人们视野的业务有了新的认识。
01
接手一个过时的业务?
2020年8月,赵永宏来到骄阳似火的长沙,加入了软件业务产品部视讯融媒团队,负责海外彩铃产品的研发。
刚接触到这个岗位时,他非常困惑:“彩铃?就是那个打电话时,听筒里响起《老鼠爱大米》《求佛》等音乐铃音的业务吗?那不是2000年左右的事情吗?这种产品还有什么价值啊?”类似这样的想法在他心中不断蔓延,他甚至一度怀疑自己加入这个团队是否是正确的选择。
直到他找到产品总监,听到了前面那个故事,他开始对彩铃有了新的认识。
原来,在一些发展中国家和地区,彩铃业务依然具有强劲的生命力,这个有二十余年历史的产品一直在持续创新发展,衍生出的例如视频彩铃、呼叫秀、AI翻唱等业务,广受用户好评。
“原来彩铃还有这么多新业务在持续发展!”赵永宏心中的疑虑解开了,对彩铃也不再有偏见。但是,如何让彩铃这棵老树生出更多新芽,帮助各类业务高质量可持续地发展下去,在更多地区发挥自己的作用,展现自己的能力,为用户带来更大的价值,成为摆在他面前的一道道难题。
团队合影(右一为赵永宏)
02
用两天时间,给大家一个惊喜
当前的彩铃业务采用的还是十几年前的技术方案,web框架是较为老旧的spring mvc,而赵永宏从入行开始使用的就是目前Java平台上的主流web框架——“spring-boot”。“本地一键启动”“本地热部署调试”“前端所改即所得”等他认为应该具备的基础功能,在目前的系统架构中都不具备,就连基础的开发环境搭建,都需要花费成倍的时间,这大大影响了软件的开发效率。
面对这种艰难现状,赵永宏首先想到的是重构。但是就目前业务数据量的情况来看,还没有多到当前架构无法支撑,需要立刻进行框架重构的地步,此时进行重构性价比不高。但是如果不重构,怎么提升工作效率呢?
2020年深秋的一天,赵永宏在晚餐后回到办公室,看见一位同事一边敲键盘一边嘴里碎碎念:“这么多配置要核对,怎么搞得完咯,哎……“与他简单聊了几句,赵永宏了解到,由于次日版本转测,他当晚就要分析完数据库中800多个配置差异和60多张数据表结构差异。这是一个很耗时的工作,就算是对业务较熟悉的同事,也需要一天左右的时间去仔细核对才能完成。
此时赵永宏记起新员工座谈会上部长说的:“大家应该基于自身的经验和技术优势,结合部门特点做业务的融合和改进。”他在互联网和工程领域有一定的经验积累,作为全栈工程师,他能实现前后端到端的拉通,也能独自完成集成和交付的工作,那他能帮到同事吗?
仔细查看后,他发现这种数据库里的数据其实非常标准化和结构化,可以基于“spring-boot”独立开发出一个数据自动对比小型web工具网站,实现对数据的自动化处理。而这对于他来说,“So easy”!
他非常兴奋,当晚就输出了设计方案,然后立刻开启了沉浸式编码模式,常常在座位上一待就是几个小时,到了吃饭的时间也全然不知。身边的小伙伴问他:“你是陷入什么魔咒了?连吃饭都不跟我们一起了?”
他笑了笑,心里想着,请等待惊喜吧!
两天后,他开发出了工具compareDatabase,迫不及待地组织了一场demo show(样例演示),向团队的同事详细展示了使用方式,完成了数据对比分钟级挑战,实现了差异可视化的目标。
后来,他把这个工具发在了3MS网站上,被累计使用达3000次,“工具使用指引”帖子浏览量达1000多人次,其间他将其优化迭代了9个版本,受到了广泛好评,这坚定了他继续进行工具优化的信心。
他梳理了当前团队在开发过程中的典型问题,针对性地制定了效率提升方案,并求助到当时的主管杰哥。杰哥非常支持他,与他一起制定了“121”的作战打法——1天内做好需求分析、2天内做好方案设计和优化指南,1周内落地,通过小步快跑、快速迭代的方式,逐渐完成了本地一键启动调试、环境一键热补、前后端分离、web前端所见即所得、API(应用编程接口)接口文档一键生成、数据库对比工具开发、SSO(单点登录)桩等一系列的效率提升工作。
听着同事们在晨会上说的“现在开发需求方便多了,效率提升很多”“再也不用花那么多时间搭建环境了”“转测试时轻松多了”等反馈,赵永宏非常开心。但同时他也明白,提效只是锦上添花,想要彻底解决问题,架构的重构势在必行。
03
重构?重构!
2021年3月的一天,组内计费模块的同事俊哥突然找到赵永宏说:“永宏,现网有个紧急的问题,用来计费的话单同步定时任务卡死了,客户很着急,快来帮忙一起定位。”
赵永宏刚接入线上会议就听到一线同事在追问:“还有多久能解决问题,已经过去半个小时了,再搞不定我要提3级ITR(现网问题解决流程)了!”气氛非常紧张。
他和俊哥工位很近,他三步化作两步来到俊哥跟前,同他一起分析日志、走读代码,发现整个定时任务框架异常复杂——23个配置项,涉及5张表,关键位置点缺少审计日志。最后他们通过问题复现,用java线上监控诊断工具分析,发现是特殊场景下因等待被占用的资源,线程无法继续执行,导致程序卡死的故障发生。
虽然通过紧急规避方案将问题解决了,但赵永宏非常清楚,由于框架配置多,日志不全,相关文档也不全面,旧框架的运行后患无穷。
“现在彩铃业务规模越来越大,相比于前几年,用户数量成百倍的增长,数据总量也不是一个层级,当前架构不堪重负。加上spring mvc过于老旧,让新员工非常不适应,上手时间远远超于spring-boot,工作效率太低,是时候做出改变了。”
想到这里,他转过身和坐在他斜对面的主管杰哥说:“要开始重构了,不然‘落雨’背稻草,越背越重。”
杰哥赞同地点头,问他:“你觉得从哪个模块开始合适?”
他考虑了一下,定时任务框架复杂,目前团队内完全理解的人不多,使用门槛高,又是问题集中区,先把它搞定,后面很多困难都会迎刃而解,于是果断地说道:“我们就从定时任务框架开始吧。”
有句话说:先理解它、拥抱它、再改变它。他花了两天时间通读了一遍原定时任务框架代码,输出了对应的说明文档,然后给全员讲解了一遍原框架的设计思路,打牢基础后就和大家一起开启重构之路。
在定时任务框架重构的那段日子里,他有时候刷牙都在想,这个方案是不是最优?该怎么提升性能?是通过增加计算空间减少时间消耗,还是通过增加计算载体数量减少时间消耗?有时候出神导致牙膏泡泡都掉到衣服上,他自己看着都乐了。
在不懈的努力下,团队完成了定时任务的框架重构,配置表从5张减少了2张,性能提升50%,开发一个定时任务的时间缩短80%。同年,这个重构案例荣获“GTS代码百强”的荣誉。
那时候他的干劲很足,沉迷在代码时间里无法自拔,有时同事来跟他打招呼时他都没有反应,他不禁感慨:当你真正想干一个事情的时候,你往往有无穷的动力。
有了这次成功经验,后续他在团队中陆续开展了操作日志重构、返回码重构、参数校验框架重构、DT(开发者测试)框架重构等工作。
自此,视频彩铃业务的web框架全面切换为全新的“spring-boot”, 系统架构层次从原来的12层减少到4层,开销户、计费续订等核心模块关键性能提升10倍,无论是客户端还是开发端,系统的易操作性都得到了明显提升。在新系统架构的加持下,团队的局点割接交付能力大幅增强,一年半内累计完成12个局点版本一次性顺利割接和15个局点需求版本零事故交付。
04
“一通”促“百通”,让团队新星倍出
技术在不断更新,业务也需要更多的新技术、新想法和新发现。为团队培养更多有能力的新人,是推动彩铃业务发展的重中之重。
完成重构的一个月后,赵永宏收到了杰哥的邀请:“永宏,你在团队里已经是技术大牛了,是否愿意担任PL带一个团队,将好的经验分享给大家,培养更多有能力的同事,让团队整体作战能力更强?”
这也正契合了他当下工作中想发力的点,他当即点头应下。但同时,“怎么干?”“从哪里入手?”等疑问在他心中一一闪过。
那段时间,研究所和部门正联合发起软件文化slogan(标语)的发酵研讨会议,鼓励第一公里团队自主变革,形成正向的软件文化氛围,他决定趁势而为。
但什么是正向的软件文化?他通过请教专家,获得了启发:团队要关注软件内在质量,激发员工活力,可以根据团队的业务目标,结合高绩效导向,形成团队的自主软件文化。
随着海内外彩铃业务的持续发展,团队从“接稳业务”逐渐往“做好业务”转变,需求设计和代码编写质量成为团队业务和绩效导向关注的重点之一。于是,经过团队成员的讨论共创,确定了团队slogan——人人做clean Design,人人写clean code。
口号提出来了,关键看落实。他要求每个MDE(模块设计师)都要答辩上岗,并充分发挥Committer的作用,让他们讲解代码架构,进行跨部件代码飞检,结合公司战地复盘的要求,把好坏案例都整理出来,定期对全员推送、宣讲。
这个过程并非一帆风顺。因为他们要求Committer不仅要能对自己的部件认识透彻,还需要对系统其他部件有全面了解。前前后后组织了多次试讲,大家才逐渐对齐目标,Committer渐渐能将各子系统、各模块之间的关系分析透彻,所讲内容也能够被其他部件的Committer认可。
他趁热打铁,每周组织1-2个部件的Committer讲架构,先后开展了7期,覆盖9个部件,参与的11个Committer系统性地把各部件的软件架构都讲解了一遍。这种方式,不但让Committer快速提升了自身能力,也为后面项目的需求分析和软件设计工作提供了经验。
这样的学习氛围也促进了团队成员们的整体进步,不少成员的技术任职得到提升,多名成员获得代码百强、年度杰出Committer等荣誉。赵永宏也有幸被邀请在武研所“第一公里大会”上进行分享。当他站在台上分享团队的经验时,心想:“一切努力都值了。”唯有团队新星倍出,彩铃业务才能不断迭代更新,在未来开拓出更加广阔的天地。
目前,华为的彩铃等音视频服务在海外为尼日利亚、埃塞俄比亚、阿尔及利亚等18个国家和地区近30个运营商覆盖的几亿人提供着相关服务;在国内,AI家秀、AI舞秀等一系列创新业务也开启批量复制。哪里有客户需求,哪里就有华为的技术支持。让彩铃这棵“老树”生出更多新芽,为需要它的用户提供更好的体验,是赵永宏的使命,也是团队甘之如饴的追求。