我们新推出大淘宝技术年度特刊《长期主义,往往从一些小事开始——工程师成长总结专题》,专题收录多位工程师真诚的心路历程与经验思考,覆盖终端、服务端、数据算法、技术质量等7大技术领域,欢迎一起沟通交流。
本文为此系列第六篇内容。
第三篇:聊聊我在淘宝做性能分析的经历
前言
作者在进入阿里前从事于某三方服务公司负责PUSH产品的技术研发工作,基于自研长连接通道实现终端设备(Android/iOS/IOT等)消息推送能力,并将能力打包成SDK为市面数千款APP提供服务,帮助终端用户能够及时接收到APP消息提醒。除服务于各类APP外,也为三星和坚果(锤子)等厂商实现了移动设备系统内置的消息推送服务,一直沿用至今。
自2021年初加入阿里以来,我一直负责淘宝长连接技术产品ACCS(阿里云通道服务)的体验优化与架构升级工作,在不断完善技术产品的同时也帮助诸多淘宝业务体验变的更好,过程中受益良多。本次受邀沉淀个人年度总结,恰好借机分享本人关于工作与个人成长上的一些思考,希望各位读者能有所借鉴之处。
个人成长
每个岗位都能够套用的成长公式。
在保障工作内容完成的前提下,如果还能收获到个人能力上的成长,那再适合不过了。但大厂中较少有机会重新定义或彻底重构一个产品,那么要如何保障在日常工作中也能一直收获个人成长,我在这个问题上思考数久,最终沉淀了一套公式:
个人成长公式
-
底层逻辑:成长过程是长期持续的,必须要先明确支撑自己前行的内在动力,即内驱力,内驱力可以是更高层级、更高收入、行业兴趣或成就感等; -
产品、技术思考:工作上不只是被安排完成某项需求,可以基于自己立场出发,思考所负责产品未来要“去的地方”,围绕一个远大目标开展相关工作,但实际工作开始前跟老板沟通确认好,必要时相信有更高几率做出正确选择的人; -
定义问题:这一步其实是最难的,往往都是遇到bug,然后针对性解决就好了。定义问题就是围绕我们要达成的目标,需要解决哪些事情,将现象定义成问题并量化它。就像在王者荣耀中,我们团战打不过敌方是一个现象,定义为问题的话可能是经济落后xxx、等级落后xxx和装备落后xxx等; -
解决问题:工作中每天可能都在解决不同的问题,所能解决的问题也可以体现出个人能力目前具体成长到哪个阶段了,在这个过程中有一些催化剂可以加速解决问题的过程,比如说老板提供了一种新思路比自己想了一周的方案还更好,又或者方案评审被指出了一些bug等。另外,问题可以是解决80%,也可以是100%解决,这就取决于个人工匠精神与极致追求; -
衍生思考:在解决单点问题后,可以继续思考是否还有其他解法,具备多套方案后,再从整体架构视角审视每个方案合理性,继而选择最优方案; -
数据验证:只有通过线上用户的真实数据反馈,才能验证问题是否有效得到解决,有效性验证取决于线上用户规模,基于10w DAU和亿级DAU的数据结果是无法相提并论的,这也是大厂给我们个人成长提供的环境优势;同时数据结论也是我们工作结果最直接的展示形式; -
总结:经过思考、问题定义与解决以及数据验证后,系统性回顾整个过程中的个人收获会有一定的满足感,但更多应该反思其中不足之处,比如数据验证过程发现问题并没有一次性解决,那么下次遇到类似问题的话可以如何更高效的应对。阶段性任务完成后系统性看待自身工作上的不足、查缺补漏并沉淀为我们宝贵的经验,将不断升级我们的思考模型,从而影响后续看待问题的方式。
业务思考的底层逻辑:社会责任感。文章第一部分个人成长公式中“产品技术思考”部分,之所以将其放在所有action的前面,就是为了防止所做之事与当前产品毫无关联。我们在完成工作任务和提升个人生活品质之外,基于业务思考开展的工作中带来的产品体验提升、服务器成本优化和技术架构升级等甚至是科研性质工作,无一例外都在影响着他人,让社会变得更美好,这也正体现了工程师们的社会责任感。
业务思考的前提:明确业务形态和客户。只有在了解了自身业务与客户之后,我们后续才能基于业务场景痛点开展针对性的优化工作。以自身为例,我在进入阿里后一直负责淘宝长连接技术产品ACCS,ACCS是一条基础消息通道,衔接用户终端与云服务器且保持长时间在线,基于此通道,终端用户可以主动上行消息发送到云服务器,反之,云服务器也可以推送消息下行至用户设备上。大家日常使用的淘宝消息、淘宝直播弹幕和一些互动游戏如斗地主等,都是基于ACCS实现的。
在理清业务思考的意义、底层逻辑和形态后,可以基于「体验」和「技术」视角出发来思考要做的事情。下面还是以笔者所负责的产品ACCS为例进行说明:
面向体验的思考,寻找日常生活中与业务相类似的产品进行横向对比会更有体感。比如ACCS帮助业务实现了端与云双向消息收发能力,日常生活中类似产品就是送快递。快递员基于买家或商家发货诉求,不管天气环境恶劣(移动网络复杂性)、距离长短(消息时延)或快递包裹重量(消息数据包大小)等因素对我们带来的挑战,都要将快递成功送到家(消息到达率),在此期间可随时查看物流信息(可观测性)。以此提炼出ACCS为提升体验要持续优化网络技术、消息时延、通道质量和可观测性;
送快递与ACCS相似
面向技术的思考,基于技术价值出发,不断提升架构先进性和攻克技术难题。ACCS提供于APP使用,主要运行在终端系统Android/iOS上,系统多进程环境下交互本身就较为复杂且Android国内各大手机厂商都基于Google原生系统有不同程度的定制化实现,这就要求运行在终端设备的技术产品要适配各种差异性带来badcase;除原生系统带来的挑战外,ACCS还衔接了端与云之间的通信,端到端链路长且牵扯模块较多,往往需要进行架构上的调整才能有效解决问题。以此提炼出ACCS要做的有原生技术和架构设计;
-
网络技术:移动网络复杂性不言而喻,且协议上OSI七层网络模型中各层对网络数据的传输也存在种种限制,因此ACCS需要具备系统性的网络技术储备,包括但不限于自研应用协议、自研传输协议、厂商网络加速和动态降级原生标准协议等技术; -
消息时延:在保障消息稳定交付业务的前提下,做到最短时间交付,降低业务消息整体时延,支撑上层更多技术模型的开展,比如帧同步等; -
通道质量:持续完善消息通道传输质量、长时在线质量与建连质量,保障每个消息不丢、不重且不乱的交互至业务; -
可观测性:ACCS端到端整体链路较长,可观测性也是一大挑战。需要建设平台化日志分析以提升日常排查问题效率、唯一消息ID窜连全链路以实现链路追踪、整合关键数据报表以及完备各项数据指标异常告警能力等; -
原生技术:终端设备大多为iOS和Android系统,特别是Android在国内各大厂商华为、小米、OPPO和VIVO等均有不同层度的系统定制,且近年来厂商对APP的管控策略愈发严格,我们需不断沉淀原生技术来对抗终端复杂环境下的各类挑战,比如跨进程传输可靠性、线程休眠、APP后台断网和系统差异性适配等; -
架构设计:ACCS内部涉及数十个不同的端到端模块协同,全链路复杂度极高,优秀的架构设计(顺丰快递是一个很好的例子)可以帮助我们事半功倍的对抗种种挑战,如移动网络复杂性、原生技术兼容性、长时在线稳定性和上层业务多样性等; -
业务实践:业务使用体验对我们来说至关重要,即使消息通道本身没有问题,也要保障业务方能够正确的使用我们提供的服务。
在过去两年间,我们一直围绕以上七点开展相关工作,很荣幸与跟大家分享我们的一些成果:ACCS通道传输时延降40%、淘宝APP冷启动基本秒连以及淘宝消息/斗地主卡顿用户舆情分别下降40%/80%。
纸上得来终觉浅,绝知此事要躬行。
以上规划A~D都已经实现,考虑到实际应用上的高风险故未实现规划E,后续还是基于现有工程不断的优化并陆续下线老代码。我进入阿里两年以来,一直沿用成长公式并将其融入到日常的工作中,在不断攻克工作中挑战的同时个人也收益良多,最重要的是亲眼看到我们客户的体验变的更加丝滑,也算是为社会发展贡献了一份薄弱力量。最后还是希望各位读者读到此处能有所收获,遇到挑战可以想想“如果不难,要你干嘛”。
团队介绍
作为集团最重要的终端团队之一,我们负责淘宝核心技术建设、原生技术挖掘,包括但不限于客户端体验、厂商与系统技术、用户增长及移动平台。无论是基础设施、业务创新还是技术发展,我们团队都能为你提供巨大的机遇和成长空间,期待您加入。
本文分享自微信公众号 - 大淘宝技术(AlibabaMTT)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。