点击蓝色关注,回复“职级”获取知名互联网公司职级定义

每月开展上个月读者阅读、转发、在看、留言各前三名(冠、亚、季军)评选活动,次月初开奖!欢迎参加,有惊喜。

两周前的3月25日,手淘iOS团队,发生了一起非常严重的首页弹框故障。最终通过发布新版本解决,算上加急审核时间,至少耗费8-12小时。

由于淘宝已经封口,故障最终定级到P几,也只有内部同学才知道了。

是一个和阿里考核3.25巧合的bug?

要不要杀一波程序员祭天?

从这件事故背后,有什么值得学习和思考的?

以下将从「事故现象和结论、弹框必备知识、对策以及规避」三部分展开讨论。


 1

事故现象和结论

1、现象:

1)App启动时弹框必现。

2)热修复(hotfix)后弹框依然一闪而过。

2、热心读者的思维导图和分析结论:

(在公众号对话框回复关键字“9527”,获取上面ppt高清图)

1)首页弹框的优先级非常高。

2)hotfix的代码初始化过于靠后

3)hotfix后弹框文本内容已发生改变。

3、结论:

猜测弹框关闭后,涉及到的接口内容对下文有强依赖,在hotfix阶段采用先展示后关闭的方式,进行必要的数据传递,因此只能接口改造并更新版本解决。


 2

弹框必备知识

1、用途:看过325弹框的同学,应该有非常深的印象了。那么这个弹框通常被用在App启动页,其目的是用来告知用户进行一系列的操作,比如软件更新、营销广告、浮层引导等提示引导。

2、运行机制:保证弹框在首页需要的特定场景,可以弹出即可。由于电商、社交、游戏等类型的App弹框的业务类型差异性,因此各类弹框的时机也会有差异,这里不再赘述。

3、技术实现:由于业务的差异化,技术选型也会存在差异。举个栗子,隐私弹框在App第一次打开的时候只显示,那么就需要考虑这个弹框在App端是否需要写入一次,多次读取,既然涉及到了缓存,那么就得考虑缓存的写入判断及缓存清理等操作,不要小看了这个问题,曾经遇到过因手机磁盘空间满,而无法写入导致弹框反复出现,相信在一些用户体量小的情况下,这条测试用例是多余的。

4、弹框可配置:由于运营、风控、安全、隐私、评价等业务的团队都会用到这个弹框,因此做好弹框的类型、优先级尤为重要。重点交互接口必须做到可回滚、可降级且增加权限判断(可以参考银行的交叉业务鉴权/授权进行设计),弹框的频率控制也要考虑,通常关注维度不局限在次数、时间上。

另外弹框文案、颜色、字体及路由目标地址,必须可配置化并增加规范性检查,必要的时候风控介入(请对弹框内文案的合规检查,亲身经历曾经某平台发布了违规物品信息、导致收到警方要求提供发布者IP)。

5、数据监控:大胆设想一下,如果这次淘宝325的弹框有预期值,并且设置警报阀值,也许解决的速度会更快,毕竟0点到6点苹果的审核速度还是可以保证到的,大厂们通常都会和苹果保持一定特殊审核通道。

如果是权限控制类弹框,还需要注意业务逻辑混淆,避免被脱壳后快速注入的尴尬,优秀的产研人员都会通过分析数据,从而对其进行调整。

6、缺陷:以手淘325为例,光阻塞级别的用户体验就能让普通用户莫名奇妙,再加误导文案引起的卸载量,就能让增长、运营哭晕在厕所。

试问在没有更新AppStore版本之前的hotfixed,有多少用户知道杀掉进程后再启动?其实我更想看到的是淘宝客诉电话量及接通率,这是一个服务性行业的硬指标。

如果此时竞对盯着这个点不放,可能大阿里在商海中也要打个哆嗦。

7、上述仅仅只是对外的表现,如果没有对弹框做好业务规划,并对弹框分类、优先级及权限设置做系统化的梳理,那么无论是产品经理、技术负责人还是像我们这种活在最底层的小开发、小测试,都将是一场噩梦。

我身边做过相关弹框的产品,换了一波又一波,吐槽的研发测试也不在少数,曾经一个被定级为P1的故障,就因为层级配置错误,导致弹框无法被关闭,虽然通过hotfix快速修复,一查数据15分钟内影响到了4w+用户。


 3

对策以及规避

1、技术层面

1)Code Review:请不要过度依赖代码检查工具,规范性检查无法验证业务逻辑是否正确,除非团队实施单元测试,重点业务逻辑请尽量团队或交叉Review,git权限做好管控,避免灰犀牛事件发生。

这里推荐一个代码比较工具BeyondCompare,如果版本基线管控得当,这是一个神器,当然git也非常好用。

2)由于影响面非常大,因此首页弹框功能设计必不可少,尤其是要做好权限管控,做到研发测试权限隔离、生产环境权限申请,涉及到的敏感操作需要二次审批或确认。

如果公司内部能像银行那样做好二次审批授权的话,应该可以有效的避免类似之前微盟的运维事件。

网传手淘也有因iOS研发被325,才搞出这等骚操作,针对此事不做过多的猜测,权当娱乐新闻搏君一笑,毕竟写代码还是非常枯燥的事情。至少故障发生时,AppStore半年前的iOS版本9.1.1是没有这个问题的:)

3)热修复(hotfix)尽量在有能力的前提下自研一套,经历过两家公司,从打仗的高速业务竞争期到合并中的蜜月期,你会发现在此期间有个hotfix方案兜底,走路都带风,说话声音都大了。

hotfix独特的下发和触发机制,会因为网络问题(无法下载)、手机内存问题(无法保存)和一些用户不知道如何冷启动(即杀掉淘宝进程再重新进入app),导致无法快速覆盖到所有被影响到的用户。

做好RN或h5页面降级这样的伪动态化方案。flutter长期看好,目前github上已有flutter基于JIT在iOS下热更新的方案(性能略差),当然能否过审先在这里打个问号。

说了这么多hotfix,咱还是低调点吧,毕竟之前大神Bang的JSPatch之前被苹果爸爸打得鼻青脸肿,滴滴的DynamicCocoa更是被苹果爸爸吓得在github仅靠README.md就获得1.3k的Star,lol~

4)前面提到的数据监控,在Jenkins阶段就可以开始介入,用好定时job,类似Infer和OCLint扫描不能走形式主义,直接发送到各自业务模块负责人限期整改并kpi考核。

5)动态化、A/B、灰度、降级等策略是非常棒的实施手段,如果有精力,请记得一定构建这种能力体系。

6)最后,也请关注故障复盘、故障演练,毕竟这是「团队成长」的一部分。

2、其他层面

身为研发、测试,不能只管好自已的一亩三分地,问题发生时请同步运营、公关、法律、风控、财务、人事、行政等进行相关的处理,做好故障安抚及灾后重建工作。

题外话:要在阳光灿烂的日子里修屋顶,不要等到下大雨去修屋顶。

------乡村教师马老师。

抛个问题供大家讨论:「客户端」的高可用体系该如何建立?

祝愿所有读完本文的人都不会被325!


最后的话

以上就是一位热心读者的投稿内容,希望你喜欢!

我相信文中的方法论不仅仅适合移动端!

抛一个问题,除了移动端,后端或者其他有啥线上事故?请留言分享!

「产品经理程序员、职场困惑找军哥。

关注后回复w,获取微信与我建立连接和互动。

另还有高质量技术、产品、技术管理群。

-------

以往热文推荐:

为什么工作很卖力,最后还晋升不了?


更多精彩,关注我公众号,一起学习、思考、成长

▲ 长按关注军哥手记,一起学习、思考、成长

淘宝3.25弹框技术分析,不只是程序员的事相关推荐

  1. 天猫、淘宝运营数据抓取技术概述

    对通用网站的数据抓取,比如:谷歌和百度,都有自己的爬虫,当然,爬虫也都是有程序写出来的.根据百度百科的定义:网络爬虫(又被称为网页蜘蛛,网络机器人),是一种按照一定的规则,自动的抓取万维网信息的程序或 ...

  2. 2019年末逆向复习系列之淘宝M站Sign参数逆向分析

    郑重声明:本项目的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,因为滥用技术产生的风险与本人无关. 这篇文章是<2019年末逆向复习系列>的第一篇:< ...

  3. 淘宝灵活的圆角框--通过一个圆形图片形成圆角原理

    具体实现方案就是通过隐藏/显示一个圆形的不同部分来实现圆角效果,具体分析见注释!! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Trans ...

  4. 淘宝直播窄带高清技术

    本文来自阿里巴巴淘系技术部 高级算法专家王立波在LiveVideoStackCon 2020线上峰会的分享,从直播背景.直播痛点分析.窄带高清.云视频技术趋势几方面详细介绍了如何在确保用户体验QOS不 ...

  5. 冯森林:手机淘宝中的那些Web技术

    2019独角兽企业重金招聘Python工程师标准>>> Native APP与Web APP的技术融合已经逐渐成为一种趋势,使用标准的Web技术来开发应用中的某些功能,不仅可以降低开 ...

  6. 性能第三讲:百万级QPS,支撑淘宝双11需要哪些技术

    性能第三讲:百万级QPS,支撑淘宝双11需要哪些技术 又到一年双11,相信大部分同学都曾经有这个疑问:支撑起淘宝双11这么大的流量,需要用到哪些核心技术?性能优化系列的第二篇我想跟大家探讨一下这个话题 ...

  7. 天池赛:淘宝用户购物行为数据可视化分析

    目录 前言 一.赛题介绍 二.数据清洗.特征构建.特征可视化 1.数据缺失值及重复值处理 2.日期分离,PV及UV构建 3.PV及UV可视化 4.用户行为可视化 4.1 各个行为的面积图(以UV为例) ...

  8. 手机淘宝双11全球狂欢节技术解读

    手机淘宝 双11全球狂欢节技术解读 2015双11全球狂欢节全天交易额912.17亿元!无线成交626.42亿元!无线占比68.67%!--这是消费的力量,是新经济的力量,是我们每一个人的力量,更是中 ...

  9. 下拉搜索词api接口、淘宝搜索下拉框选词api,淘宝下拉词接口,淘宝搜索的下拉词推荐接口、关键词推荐api

    一.下拉搜索框选词api介绍 淘宝搜索下拉框选词是通过淘宝.天猫.手机润宝搜索下拉框查询淘宝搜索指数高.流量高.转化率高的关键词,并获取各关键词对应的在线相关宝贝数量及其推荐属性词.对于查询到的这些关 ...

最新文章

  1. New Video Game Controlled By Kissing
  2. 在工作中有被动转主动的体会_积极主动应对眼前的一切,就是对自己最好的犒赏...
  3. Calc3: Multiple Integrals
  4. 函数调用和尾递归的一点认识
  5. CUMCM之2006B:2006之B题: 艾滋病疗法的评价及疗效的预测
  6. Android系统介绍
  7. [react] 请说下react组件更新的机制是什么
  8. 在IIS8添加WCF服务支持
  9. 上海电力学院计算机组成与结构试卷,上海电力学院试卷及成绩管理办法
  10. asp .net 多文件上传(二)
  11. 面试之函数节流和函数防抖
  12. 从零开始做小程序(三)——引入组件库
  13. 路由器桥接dns服务器未响应,360路由器无线桥接的设置方法(电脑)?
  14. 听云java探针_性能监控工具的配置及使用 - 听云-Server
  15. 图片文件太大?缩小图片文件的2个小技巧
  16. AR平台:1.ARSDK介绍
  17. LeetCode题解(0695):岛屿的最大面积(Python)
  18. java 栈队列区别是什么意思_Java实现数据结构栈stack和队列Queue是什么?
  19. 写一个PE的壳_Part 4:修复对ASLR支持+lief构建新PE
  20. 西北计算机大赛奖金有多少,我校学生2019年中国大学生计算机设计大赛西北赛区决赛中获得佳绩...

热门文章

  1. OpenCore引导黑苹果显示器黑屏、花屏、闪屏完美解决
  2. 华为鸿蒙新机预测价格,鸿蒙操作系统亮点华为Mate40新机,华为Mate30黯然降价网友欢呼...
  3. 23岁我写了第一封情书
  4. java confirm_confirm确认对话框的实现方法总结
  5. 【Reporting Service】报表项表达式只能引用当前数据集作用域内的字段或指定的数据集作用域内的字段
  6. Optional类型
  7. PYQT之表格控件QTableWidget复杂表头(多行表头) 及冻结行的简单方法
  8. winbox 端口扫描_[分享]RouterOS 禁止端口扫描 | 霸王硬上弓's Blog
  9. MVC 自定义AuthorizeAttribute实现权限管理
  10. Zxing实现工作原理之QRCode