发布在即!企业 AIGC 应用程度测评,3 步定制专属评估报告。抢首批测评权益>>> 了解详情
写点什么

苏宁零售云 App 稳定保障实践

曹银飞

  • 2018-11-01
  • 本文字数:2492 字

    阅读完需:约 8 分钟

苏宁零售云 App 稳定保障实践

1. 背景

苏宁零售云目标 T4-T6 级市场的业务,定位更靠谱的智慧零售解决方案和零售服务集成商,实战式跨界赋能。苏宁易购 TO C 的经验丰富,相关的方案很完善,但是零售云 TO B 相关业务启动后,业务增长迅速,App 相关的稳定保障方案缺失。

2. 零售云业务的特殊性

零售云主要是 TO B 的业务,目标 T4-T6 级市场的加盟店,授权店,跟 TO C 业务相比,有以下有个不同点:

1)用户量不多,但是每个用户强依赖零售云相关 App。
2)每笔订单金额巨大。
3)需要系统稳定。

零售云的每个用户都是一家门店的一个角色人员(老板,店长,收银员…),每家门店每天的进销存都依赖零售云配套 App(零售云,零售云店员,零售云管家)。零售云 App 提供进货服务,零售云店员提供销售服务,零售云管家提供库存管理,报表查询等服务。可以看出,一个用户使用出现问题,就会影响到一家门店的日常销售,导致不能正常销售,每一家门店每天都付着店面租金和人员酬劳,不能营业的后果非常严重。

3. 前期快速迭代满足业务遇到的问题

1)系统问题需要门店上报给运营,运营再同步给研发负责人,问题的流程较长响应比较慢。

2)研发需要跟门店人员确认操作过程,甚至借用登录账号,体验不好。

3)App 到数量的灰度发布,不能精确试点,一旦出错,影响范围较大。

4. App 稳定保障思路

系统稳定的三个特点:可监控,可灰度,可回溯。对于 App 来说,一旦新包发出去后,想回溯就不太现实了,办法无非是提示更新或者热更新,所以我们主要针对前面两点来实现。

4.1 可监控

在监控上我们做了两个方面的工作:

1)云迹性能监控,类似友盟或者 Buggly 的性能统计,包括崩溃,卡顿,日活等等;
2)云迹实时日志统计分析。

4.2 可灰度

1)实现到店铺层面的灰度更新

下面我们来展开讲讲这两点的实现方式。

5. 到人的请求监控(可监控)

类似友盟或者 Buggly 的性能统计,我相信大部分 App 也都接入了,这边不做解释了,不管 TO B 还是 TO C 业务都一样。

正是基于上面的性能统计,我们得知,零售云 App 的使用用户,60% 左右是在 WIFI 环境下。上面也解释了 TO B 业务对系统的强依赖性,但是对于流量消耗的敏感度却不高。基于前提条件,我们决定把客户端所有的网络请求数据和业务错误轨迹都记录在云迹平台,并且配置错误告警。这样做的好处有两个:1)通过短信和邮件告警,可以快速知道错误。2)通过实时日志埋点可以知道每个用户的行为和操作轨迹,方便快速定位错误。流程图如下所示:

image

5.1 异常告警

我们根据自己的需求,配置搜索条件,告警触发条件,并以短信和邮件的方式通知给对应的负责人。如下图所示:

image

当有异常触发告警条件时,对应负责人会短信和邮件收到告警通知,第一时间发现问题。

5.2 日志查询

1. 当收到告警后,对应负责人需要登录到云迹实时日志分析平台 1) 选择对应的系统名 2) 选择日志类型 3)选择查询时间 4) 通过 kibana 查询语法,即可查询到该条件下的日志。

image

2. 我们随便点开一条日志,可以看到详细的用户信息。

image

根据上图日志内容可以快速获取如下关键信息:

1)app 版本
2)手机版本,手机型号
3)业务信息(请求地址,请求参数,返回参数,堆栈信息)
4)账号

通过上面信息可以快速定位到某个时间点下错误的请求。

3. 某个用户轨迹

很多时候,某些错误是在用户特定操作下才会触发,这个时候,需要知道用户的操作轨迹,我们可以通过 kibana 查询语法,筛选出某个用户的所有日志,根据请求时间可以很方便的知道,用户的整个操作轨迹。如图所示,该用户最近三小时的操作行为都可以查到。

image

得到用户的行为轨迹,很多错误场景,研发可以自己模拟,不需要再远程咨询门店用户,方便高效定位问题。

6. 到店的移动 App 灰度发布(可灰度)

TO C 的场景一般是用户量的灰度,比如一次灰度 10000 个用户,但是对于 TO B 却不适合,比如一次灰度 100 个用户,可能覆盖到 100 家店铺,一旦出问题这 100 家店铺正常销售受到影响,而且统计哪些店铺受到影响也很困难。针对零售云特殊的情况,我们制定了特殊的灰度发布流程。每个 app 在苏宁升级平台(MPCS)上面配置两个 appid,一个为正式版本包,一个为灰度版本包,客户端根据分销前台返回的 appId(0/1),区分取正式包还是灰度包的 appid,进行版本更新请求。灰度期间,通过分销前台配置店铺白名单,在白名单文件中的店铺下的用户提示升级到最新版本,其他用户无影响。在灰度成功后,分销前台关闭灰度开关,进行全量升级。流程图如下所示:

image

灰度期间只有白名单用户才调用灰度包更新接口,其他用户调用正式包升级接口。逐步增加灰度的店铺,10 个 ->20 个 ->50 个 ->100 个 -> 全量,期间注意观察云迹异常。

7. 避免的生产问题

通过上面的稳定保障,我们避免了不少生产问题,这边举两个例子:

1)四月份的一个下午,突然收到很多告警,打开云迹实时日志查到一个小时内报大量的请求超时,而且集中在某个区域,通过这些关键信息,最后定位是运营商网络的问题,当天就快速修复,对于用户来说对于整个修复过程无感知。

2)云迹告警商品详情页接口会偶尔失败,通过云迹查询到日志信息发现,商品详情页需要传的店铺编码,某些时候客户端传的是空,但是 review 客户端相关模块代码,确认每次都是传了店铺编码,这个时候就需要模拟用户的操作轨迹。通过查询该用户所有操作日志,分析出失败接口前面几分钟的操作行为得知,在四级页停留了很长时间后登陆失效,再次登陆后店铺编码为空,知道具体错误后,就可以在下个版本修复避免生产问题。

8. 目标展望

为了保障零售云 App 的稳定,我们其实还做了很多工作,这里不一一列举了,当然我们还有很多的提升空间,未来我们会不断优化监控和灰度方案,加强数据收集和分析,保障零售云 App 的稳定。再稳定的系统也不能保证百分之百不出问题,所以在应对可能出现的问题时,我们必须要在第一时间发现问题,快速响应解决问题。

作者简介

曹银飞,苏宁易购 IT 总部 Android 技术专家,拥有多年 Android 研发和管理经验。曾就职于联创,腾讯等大型互联网公司,现负责苏宁易购 Android 开发部产品研发与技术管理工作,在 Android 项目架构设计,性能优化,团队管理上有多年的实战经验。现致力于打造苏宁智慧零售相关 App,希望将苏宁的零售技术能力发挥到极致。

2018-11-01 14:5913598
用户头像

发布了 164 篇内容, 共 103.0 次阅读, 收获喜欢 391 次。

关注

评论 2 条评论

发布
用户头像
1
2018-11-03 14:57
回复
没有更多了
发现更多内容

JS基础——JS数据类型

龙之幽谷

前端 js

软件测试 | 测试开发 | 利用 rpush 和 blpop 实现 Redis 消息队列

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | gitlab 服务端 hook, 拦截糟糕的提交到仓库

测吧(北京)科技有限公司

测试

仅靠一文便火爆全网!开源阿里绝密800页JDK源码笔记:霸榜GitHub

Geek_0c76c3

Java 数据库 程序员 架构 开发

Eclipse Theia技术揭秘——脚手架源码分析

龙之幽谷

开发工具

架构实战营模块1作业

乖乖IvyShine

软件测试 | 测试开发 | 一种能有效缓解环境噪声对音频质量干扰的方案

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | Shell 进程通过 ContentProvider 实现跨进程通信

测吧(北京)科技有限公司

测试

元年洞察|数字化转型进程中的创新技术菜谱

元年技术洞察

数据中台 数字化转型 趋势研究

用 nodejs 搭建脚手架

coder2028

node.js

AntDB数据库与鼎甲科技完成产品互认证,共筑数据安全防线

亚信AntDB数据库

AntDB AntDB数据库

MySQL查询数据库表记录数

源字节1号

软件测试 | 测试开发 | Spring boot 之 RestTemplate访问

测吧(北京)科技有限公司

测试

软件测试 | 测试开发 | InfluxDB 2.0 原理与应用实践

测吧(北京)科技有限公司

测试

企业级npm仓库搭建

龙之幽谷

前端 nexus NPM仓库

Eclipse Theia技术揭秘——构建桌面IDE

龙之幽谷

开发工具

软件测试 | 测试开发 | 自定义form表单验证

测吧(北京)科技有限公司

测试

医疗卫生机构应该多久进行一次等保测评?

行云管家

网络安全 信息安全 等保测评 等级测评

javascript 高级编程 之 Array 用法总结

hellocoder2029

Vue

AntDB入选《爱分析:2022数据智能厂商全景报告》

亚信AntDB数据库

AntDB AntDB数据库

数据中台打造企业数据能力组件中心

元年技术洞察

数据中台 SaaS服务应用 PaaS平台化能力

Eclipse Theia技术揭秘——自定义布局

龙之幽谷

开发工具

认识 ESP-IDF-v4.3+工程结构(ESP32-C3应用调整示例)

矜辰所致

ESP32-C3 9月月更 ESP-IDF

边缘计算在视频直播场景的应用与实践

火山引擎边缘云

边缘计算 视频直播 火山引擎边缘计算

双非二本程序员,年近30,5年间在大厂中横跳,工资翻了三番

程序知音

Java java面试 后端技术 秋招 Java面试八股文

VSCode技术揭秘(一)

龙之幽谷

vscode 开发工具

leetcode 572. Subtree of Another Tree 另一棵树的子树 (简单)

okokabcd

LeetCode 数据结构与算法

软件测试 | 测试开发 | Golang死信队列的使用

测吧(北京)科技有限公司

测试

运维学网络安全还是云计算好?哪个更有前景?

行云管家

云计算 运维 网络安全

软件测试 | 测试开发 | Pytorch GPU 训练环境搭建

测吧(北京)科技有限公司

测试

Forrester发布中国数据治理生态报告,亚信科技AntDB数据库等四款数智产品入选

亚信AntDB数据库

AntDB AntDB数据库

苏宁零售云 App 稳定保障实践_语言 & 开发_徐川_InfoQ精选文章