有赞移动基础保障体系的建设

2020-02-23 222浏览

  • 1. 有赞移动基础保障体系的建设 ⼤大可乐 / 封光
  • 2.
  • 3. 代码评审 监控 排障 打包 发布 合分支
  • 4. 有赞移动日志平台 有赞移动CI/CD
  • 5. 商家反馈APP频繁登出
  • 6. 商家反馈APP频繁登出 3 和客满沟通,还需要APP版本、 设备型号、系统版本等信息辅助 定位问题 2 搜集视频/截图、店铺ID等信 息,最后提⼯工单 1 我最近总是重新登陆 反复沟通 商家 反复沟通 客满 4 搜集APP版本、设备型号、系 统版本信息 开发 5 必现:箭头 偶现:箭头 ?
  • 7. ⽇日志平台 ⽇日志信息 上传⽅方式 搜集基本信息 开发回捞⽇日志 搜集业务信息 商家主动上传
  • 8. ⽇日志平台 移动⽇日志 APP 设备查询 … 业务⽅方 回捞⼊入⼝口 SDK 后端服务 公共服务 ⽇日志库 ⻓长连接库 信息聚合 监控告警平台 设备信息库 回捞管理理 消息平台 筛选⼊入⼝口 ⽇日志管理理 底层服务 … Mysql
  • 9. ⽇日志平台 ⽤用户⽇日志 接⼝口错误 设备信息 移动⽇日志 APP 设备查询 … 业务⽅方 操作轨迹 ⽹网络状态 回捞⼊入⼝口 SDK ⽇日志库 ⻓长连接库 设备信息库 筛选⼊入⼝口 路路由错误 业务异常 后端服务 公共服务 信息聚合 监控告警平台 回捞管理理 消息平台 ⽇日志管理理 底层服务 … Mysql
  • 10. SDK ⽇日志保存策略略 单线程写⼊入 ⽹网络状态监听 消息收发 失败重试等 ⽇日志⽂文件管理理 写⼊入加密 完整性校验 ⽇日志 C++ iOS SDK cmake iOS - bridge iOS .a Android SDK 交叉编译 .so Android - bridge Android
  • 11. ⽇日志级别 1 收到socket消息时上传 2 启动、前后台切换时检查是否要上传 log.d log.i log.w log.e APP 本地 ⽇日志中⼼心
  • 12. 对称密钥 APP 原始⽇日志 加密 对称算法 加密⽇日志 APP⽇日志⽂文件
  • 13. 公钥ID ⽇日志后台 ⽂文件头 公钥 加密密钥 + ⽇日志库版本 rsa ⽣生成对称密钥 对称算法 APP⽇日志⽂文件 时间 设备ID 混淆参数 APP 原始⽇日志 加密 加密⽇日志 内容区
  • 14.
  • 15. 触发回捞时间 收到⽇日志时间
  • 16. ⽇日志级别 log.d log.i APP 本地 电话、短信、企业微 信、邮件等渠道 log.w log.e ⽇日志中⼼心 告警中⼼心 ⾃自定义告警配置
  • 17. 告警配置 阈值告警 环⽐比告警
  • 18. 告警配置 阈值告警 环⽐比告警
  • 19. 告警配置 电话、短信、企业微信、邮件等渠道 阈值告警 环⽐比告警
  • 20. 告警配置 阈值告警 环⽐比告警 告警时间
  • 21. ⽇日志平台 移动⽇日志 APP 设备查询 … 业务⽅方 回捞⼊入⼝口 SDK 后端服务 公共服务 ⽇日志库 ⻓长连接库 信息聚合 监控告警平台 设备信息库 回捞管理理 消息平台 筛选⼊入⼝口 ⽇日志管理理 底层服务 … Mysql
  • 22. 信息聚合
  • 23. 快速定位
  • 24. 快速定位
  • 25. ⽇日志平台 移动⽇日志 APP 设备查询 … 业务⽅方 回捞⼊入⼝口 SDK 后端服务 公共服务 ⽇日志库 ⻓长连接库 信息聚合 监控告警平台 设备信息库 回捞管理理 消息平台 筛选⼊入⼝口 ⽇日志管理理 底层服务 … Mysql
  • 26.
  • 27. 上传⽅方式 ⾃自建的 socket通道 APP APP⽇日志 ⻓长连接 ⽇日志后台 其他⽂文件 备份 压缩 ⽇日志中⼼心
  • 28.
  • 29. 上传⽅方式 APP 数据库⽂文件、 配置⽂文件等 APP⽇日志 ⻓长连接 ⽇日志后台 其他⽂文件 备份 压缩 ⽇日志中⼼心
  • 30. 消息格式
  • 31. 商家反馈APP频繁登出 少量量沟通 商家 包含店铺ID、⽤用户ID、APP版 本、系统版本、设备型号、最近 使⽤用时间等 单次沟通 客满 开发 根据⼿手机号或店铺名等信息 检索商家设备 客满⼯工作台 ⽇日志信息表
  • 32. 商家反馈APP频繁登出 服务 上传⽇日志 包括商家操作轨迹、⽹网络 请求等等,还原现场 少量量沟通 商家 单次沟通 开发 客满 ⽇日志回捞
  • 33. 有赞移动日志平台 有赞移动CI/CD
  • 34. 有赞移动 CI/CD • 有赞移动 CI/CD 过去式 • 有赞移动持续集成系统 - MBD • 有赞移动持续部署系统 - Apub
  • 35. 有赞移动 CI/CD 过去式 对于测试、运营等⻆角⾊色⻔门槛较⾼高 打包机任务繁重,经常内存爆表 产物管理理混乱
  • 36. 有赞移动 CI/CD • 有赞移动 CI/CD 过去式 • 有赞移动持续集成系统 - MBD (Mobile Build) • 有赞移动持续部署系统 - Apub
  • 37. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
  • 38. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
  • 39. 热修复 正式构建 测试构建 测试构建 测试构建 测试构建
  • 40.
  • 41.
  • 42.
  • 43. 创建集成 测试构建 正式构建 分发平台 测试包分发 测试构建 正式包分发 测试构建 测试构建 热修复分发 热修复
  • 44. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
  • 45. 前端 构建 集成 任务 后端服务 任务调度系统 任务 统计 热修复 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
  • 46. GitLab Runner what? • 脚本解释器器,通过 Http 与上层 CI 通信 why? • 开源 • ⽀支持 Docker、BashShell、VirtualBox • Go 编写,跨平台 • ⼆二进制⽂文件,⽆无外部依赖,部署⽅方便便
  • 47. 前端 集成 构建 热修复 任务 后端服务 任务调度系统 任务 统计 ⽇日志 任务 ⽇日志存储系统 ⽇日志 构建管理理 结果 Gitlab Runner 集群 持续集成系统 - MBD ……
  • 48. 为什什么要任务调度? 任务队列列 Runner1 Task Runner2 Task Task Task Task Task Task Runner3 有些运⾏行行了了很多任务 有些没有运⾏行行任务
  • 49. Runner 动态评分 任务队列列 Runner1 Task Task Task Runner2 Task Runner3 Task Task Task 初始分 100 任务数量量:3 Cpu 占有率:90% 初始分 90 任务数量量:1 Cpu 占有率:80% 初始分 100 任务数量量:0 Cpu 占有率:10%
  • 50. 分数 = 初始分 - 任务数 * 30 - CPU 占有率 * 100 任务队列列 Runner1 Task Task Task Runner2 Task Runner3 Task Task Task 初始分 100 任务数量量:3 Cpu 占有率:90% 初始分 90 任务数量量:1 Cpu 占有率:80% 初始分 100 任务数量量:0 Cpu 占有率:10%
  • 51. 分数 = 初始分 - 任务数 * 30 - CPU 占有率 * 100 任务队列列 Runner1 Task Task Task Runner2 Task Runner3 Task Task Task 初始分 100 任务数量量:3 Cpu 占有率:90% -80 初始分 90 任务数量量:1 Cpu 占有率:80% -20 初始分 100 任务数量量:0 Cpu 占有率:10% 90
  • 52. 前端 集成 构建 热修复 统计 ⽇日志 组件并发构建会有问题吗? 任务 后端服务 任务 任务调度系统 ⽇日志存储系统 结果 ⽇日志 任务 构建管理理 Gitlab Runner 集群 Runner Task Task Task Task ……
  • 53. 组件隔离 代码区 • 同⼀一组件并发构建的时候,会使⽤用不不同的⼯工作区 缓存区
  • 54. 创建集成 测试构建 正式构建 分发平台 测试包分发 测试构建 正式包分发 测试构建 测试构建 热修复分发 热修复
  • 55. 有赞移动 CI/CD • 有赞移动 CI/CD 过去式 • 有赞移动持续集成系统 - MBD • 有赞移动持续部署系统 - Apub (App Publish) 分发平台 测试包分发 正式包分发 热修复分发
  • 56. .apk .patch Apub MBD .ipa 符号表⽂文件
  • 57. 测试包分发 Apub 分发系统 正式包分发
  • 58. 测试包列列表 PC 测试包分发 App 测试包详情⻚页
  • 59. 包详情⻚页 PC
  • 60. 包分业务线管理理 PC
  • 61. PC 每个 App 的所有包
  • 62. App
  • 63. 测试包分发 MBD Apub 正式包分发
  • 64. 灰度 条件 正式包分发 全量量
  • 65. 灰度 条件 正式包分发 全量量
  • 66. DeviceToken hashcode ( devicetoken ) 灰度 30% hashcode % 100 70%
  • 67. 灰度 条件 正式包分发 全量量
  • 68. 客户端上传条件 服务端 启动 JS 引擎,注⼊入变量量 area area: “杭州” scriptEngine.put(area, “杭州”) 条件 发版⼈人写好条件表达式 执⾏行行表达式 scriptEngine.eval (…….) true false
  • 69.
  • 70.
  • 71. 测试包分发 业务异常 ⽇日志平台 消息格式 MBD 条件下发 线上告警 Gitlab-Runner App集成⽣生命周期 设备信息聚合 Q & A Apub Runner 调度策略略 开发回捞⽇日志 Runner 组件隔离 ⽇日志加密 ⽇日志C++库 ⽇日志分级 灰度下发
  • 72.