安全模式:天猫App启动保护实践

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
查看查看200 回复回复1 收藏收藏 分享淘帖 转播转播 分享分享 微信
查看: 200|回复: 1
收起左侧

安全模式:天猫App启动保护实践

[复制链接]
i0n1c 发表于 2016-8-7 19:22:18 | 显示全部楼层 |阅读模式
快来登录
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑

在App热修复中有一个特殊情况,就是应用在启动阶段crash,根本启动不了,热修复就难以奏效,不过这种情况也能解决。前段时间微信读书分享了他们的启动保护方案,现在天猫也分享了他们的实践,叫做安全模式。本文介绍了天猫安全模式的由来、设计思路、原理和易用性考量等等。

安全模式:天猫App启动保护实践 1

安全模式:天猫App启动保护实践 - 敏捷大拇指 - 安全模式:天猫App启动保护实践 1





1、引言

天猫客户端用户众多,如何保证天猫App的稳定性是非常重要的任务,而启动阶段的保护是其中关键的一环。

天猫安全模式致力于解决APP启动阶段的crash等问题,同时具备自修复能力、同步热修复能力,是一整套启动保护的解决方案。




2、天猫安全模式的由来

问题:APP在使用过程中,有时会遇到线上无法修复的启动crash问题,用户无法使用APP

思考:

  • 我们能否避免这样的问题发生?有没有办法让程序自动修复该问题?
  • 我们怎么样能更好的修复同类问题?


结论:

我们需要一个可以保证APP顺利启动并解决重大问题的解决方案 - 安全模式




3、天猫安全模式设计

天猫安全模式重点放在了解决启动阶段问题上,从配置后台、客户端能力、数据、测试四个方面给出了统一的解决方案,同时也考虑到了不同APP的兼容性问题。

安全模式:天猫App启动保护实践 2

安全模式:天猫App启动保护实践 - 敏捷大拇指 - 安全模式:天猫App启动保护实践 2





4、配置后台

  • 统一的配置后台,具备灰度发布机制





5、客户端能力

  • 在APP连续Crash情况下具备分级、无感自修复能力
  • 具备同步热修复能力
  • 具备指定触发某项特定功能的能力
  • 具备功能注册能力,可以方便的后期扩展安全模式





6、数据统计及告警

  • 统一的数据平台
  • 监控告警功能,让你及时发现问题
  • 可以查看热修复成功率等数据





7、快速测试

  • 优化预发环境下测试
  • 优化每次回归验证安全模式的难度等





8、天猫安全模式的发展

安全模式到目前为止经历了4个大的版本,功能一直在不断的完善,下图介绍了每个版本的主要功能

安全模式:天猫App启动保护实践 3

安全模式:天猫App启动保护实践 - 敏捷大拇指 - 安全模式:天猫App启动保护实践 3





9、天猫安全模式的原理

APP crash的原因有很多,每个APP设计的方案也有不同,将其所有的异常错误都捕捉到很困难,因此我们换了个方式,完全从用户的角度来思考什么是异常退出,也就是打标记flag方式

安全模式:天猫App启动保护实践 4

安全模式:天猫App启动保护实践 - 敏捷大拇指 - 安全模式:天猫App启动保护实践 4




9.1、如何判断异常退出:

  • APP启动时记录一个flag值
  • 满足以下条件时,将flag值清空:

    • APP正常启动10秒
    • 用户正常退出应用
    • 用户主动从前台切换到后台

  • 如果在启动阶段发生异常,则flag值不会清空,通过flag值就可以判断出客户端是否异常退出
  • 每次异常退出,flag值都会+1




9.2、安全模式的分级执行策略:

  • 安全模式中根据flag值的大小做了分级执行策略,目前分为两级安全模式,连续crash 2次为一级安全模式,连续crash 3次及以上为二级安全模式
  • 业务线可以在一级安全模式中注册行为,比如某业务要清空缓存数据,这样在进入一级安全模式时,安全模式就会自动调用注册的行为,尝试修复客户端
  • 如果一级安全模式无法修复APP,则会进入二级安全模式,二级安全模式会将APP恢复到初次安装状态,将Document、Library、Cache三个根目录清空




9.3、热修复执行策略:

老版本热修复策略:二级安全模式中触发。

问题:连续crash 3次后触发,在有问题的情况下,能打开这么多次APP的用户太少了,我们能不能更快的修复呢?

新版本修复策略:

将热修复从具体的级别中剥离,只要发现配置中需要热修复,APP就会同步阻塞进行热修复,保证修复的及时性



9.4、灰度方案:

安全模式制定了简单的灰度策略,灰度时,配置中会同时包含灰度、正式两份配置,也会包含灰度的概率

APP根据特定算法算出自己是否满足灰度条件,如果满足,则使用灰度配置,否则使用正式配置




10、天猫安全模式在易用性上的思考

最开始时,我们并没有特别考虑易用性问题,因为前两个版本都只有天猫一个接入方,不用考虑差异性问题;但在对接集团其他APP时,发现大家的需求点还是有较大不同的,同时也发现了安全模式存在的不足,因此我们加大了对易用性的考虑,主要体现在以下几点:



10.1、接入成本

  • 站在接入方角度,完善文档,重新定义接口,力求接口简单、清晰,降低接入成本




10.2、统一配置后台

  • 方便接入方配置信息,利用阿里云的CDN服务搭建统一的配置中心,可按照APP、版本来配置




10.3、定制性

  • 考虑到不同APP的定位以及实际需求的不同,改造安全模式支持定制功能,让接入方来决定具体行为
  • 比如天猫觉得用户主要关心的是功能可用,不关心是否进入安全模式,因此不需要显示一个独立的提示页面,但与其他APP沟通时发现,有些APP还是很想有这样一个提示页面来告知用户我们做了什么




10.4、灰度机制

  • 安全模式最开始的定位只是用于解决启动crash问题,但是在与集团内其他APP沟通的过程中发现,他们也有需要在APP不crash的情况下解决问题的需求,直接发布还是很危险的,对灰度机制的需求很迫切,因此我们在4.0版本中实现了灰度机制。




10.5、数据分析

  • 采用集团统一的数据平台,方便接入方查询相关数据,同时为安全模式的改进提供依据。




10.6、快速测试

  • 针对测试(模拟连续crash)加入特殊处理,提高测试效率。





11、结语

安全模式目前发展到V4.0版本,已上线超过半年时间,很好的保证了天猫APP的启动安全,后续我们还会持续对其打磨,让安全模式更好的为APP保驾护航。

都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。

回帖是一种美德,也是对楼主发帖的尊重和支持。

*声明:敏捷大拇指是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,敏捷大拇指将保留所有法律权益。如有疑问或建议,邮件至marketing@swifthumb.com

*联系:微信公众平台:“swifthumb” / 腾讯微博:@swifthumb / 新浪微博:@swifthumb / 官方QQ一群:343549891(满) / 官方QQ二群:245285613 ,需要报上用户名才会被同意进群,请先注册敏捷大拇指

嗯,不错!期待更多好内容,支持一把:
支持敏捷大拇指,用支付宝支付10.24元 支持敏捷大拇指,用微信支付10.24元

评分

参与人数 1金钱 +10 收起 理由
Anewczs + 10 推送上首页了~分享到朋友圈微博QQ空间吧~.

查看全部评分

美人虞 发表于 2016-8-8 11:16:12 | 显示全部楼层
不懂,飘过支持一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

做任务,领红包。
我要发帖

分享扩散

都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的金钱积分奖励
关闭

站长推荐 上一条 /3 下一条

热门推荐

合作伙伴

Swift小苹果

  • 北京治世天下科技有限公司
  • ©2014-2016 敏捷大拇指
  • 京ICP备14029482号
  • Powered by Discuz! X3.1 Licensed
  • swifthumb Wechat Code
  •   
快速回复 返回顶部 返回列表