重复造轮子是不好,但是适合自己的轮子才是最好的。
携程开发总监 刘李丰如是说。
《携程无线技术平台化研发实践》的学习笔记。
持续交付平台 - MCD
- MCD之前
- 专人打包
- 最多2-3个包 per day
- 开发测试流程完成通过人工协调
- 发版时迟迟不能定版
- 最和新问题:没有版本信息,包名相同,自动化测试不清楚验证包信息
- MCD 1.0
- 解放生产力,随时打包
- 自动化流程,打包流程由环境演变成pipeline
- CI/CD
- 定时打包
- 代码扫描
- 自动化验证包 - 白屏检测
- 持续继承 + 冒烟测试
- 代码扫描 infer & sonar
- 冒烟测试
- 多机型兼容测试
- 页面内容长度 + 图像比对
- 超级App改造
- 同一个代码库
- 基于源码打包,编译错误阻塞打包
- 打包时间仍然过长,8分钟
- 超级App改造 - MCD 2.0
- 重新定义MCD
- 集成
- 测试
- 发布
- 运营
- 基于Bundle打包
- 引入Bundle发布状态(L,RC)
- 进一步优化流程
- 从项目创建覆盖到定版
- 急速出包
- 2-3分钟
- 重新定义MCD
- 发布升级
- 发布对象
- hotfix
- Bundle
- Hybrid/RN
- 升级之路
- 存储云化
- 灰度发布
- 白名单/百分比
- 差分
- 全量
- 文本
- 二进制
- 动态差分
- 实时查看
- 基于设备ID查看
- 整体趋势
- 配置中心
- 移动端配置中心化
- 支持平台,版本,渠道下发
- 支持分流,AB
- App启动全量拉取
- 移动端配置中心化
- 崩溃收集
- Bugly很专业,无法定制
- 基于代码打标签,MCD无缝对接
- 实时报警
- 多维度搜索
- 各种样式Dashboard
- App Size管理
- 基于业务线模块进行统计
- 和历史版本比较
- 各自比较
- 刨除法计算
- 基于业务线模块进行统计
- MCD Arch
- Not Just Jenkins
- MQ 解决 Jenkins Cluster
- 支撑数量
- 打包:10000+ 每年
- 发布:10000+ 每年
- Not Just Jenkins
- 发布对象
性能监控平台 - APM
- APM背景
- 缺乏质量大盘
- 缺乏精细化运营数据
- 缺乏多维度查看数据
- Hive拉取数据过漫
- APM质量大盘
- 网络性能
- 网络成功率
- 崩溃率
- 启动时间
- 定位成功率
- APM多维度分析
- 热门地区
- 运营商
- 网络
- APM服务大盘
- 成功率
- 耗时
- 请求大小
- 报文大小
- Error code占比
- APM报警
- 设定阈值
- 与上周数据比较
- 有问题数据进行冒烟
- 精细化运营 - Server IP下发
- 背景
- 运营商 网络质量存在差异
- 方案
- 海外:国家
- 国内:城市
- 目标
- 下发高质量的IP列表
- 测试结果
- 成功率1个点提升
- 背景
- 踩过的坑
- 噪音数据过滤
- 数据处理性能,延迟监控
- 埋点监控
- 数据处理的准确性
- Hive数据比对
- 数据Trade off
- 无线请求可以花粉为App版本、平台、网络类型、国家、城市等
- 维度降低
- 设计细节
- Metric 100+
- 日处理数据量 100亿+
- 写入数据量 100GB+
- 处理流程:
- app采集数据 -> Storm数据清洗聚合 -> DownSample数据归集 -> ES数据存储 -> Dashboard数据展示
- Down sample设计
- 多级聚合
- 错误监听
- 状态监听
日志排障平台 - MTS
- MTS背景
- 全链路打通
- Native App TCP服务调用
- Hybrid/H5 调用
- Base Page请求
- 图片请求
- 用户轨迹流,崩溃路径
- 用户服务访问流程,各自的报文
无线技术平台 - MTP
-
无线平台建设背景
- 缺乏Meta信息维护
- 重复造轮子,质量不高
- 研发效率不高,App代码导出拷贝
- 缺乏通用解决方案
-
移动技术产品
- Platform
- Communication
- Framework
- Business
-
通用技术方案
- MTP 注册应用,组件,开发控制台
- MCD 集成,测试,发布
- APM 运营,监控
- MTS 排障
-
MTP控制台
-
平台治理
-
开放
- 注册服务,注册回调
-
排障
- 查询数据及调用链
-
熔断
- 服务请求过载
-
报告
- 查看调用
-
未来方向
- 打造无线中台
- 大数据赋能