[Android][应用架构] [手机淘宝的架构演进-总结]

手机淘宝的架构演进-总结

一、架构需求

整体的架构需求
隔离性:
传统的移动 App 的开发和集成方式并不适合企业级开发。一个具备很好隔离性的模块化架构是大规模并行开发的基础。

动态性:
互联网追求唯快不破,从架构上将我们希望能够在富客户端时代同样也能保留 web 的轻盈和灵活。动态性是很重要的前提。

极致的网络体验:
全双工的接入平台保障了接入层的伸缩性和稳定体验,不管用户在何种网络环境下都能拥有顺畅的体验。

1.1 网络模块

为移动环境下的网络做针对性的解决方案。

  • 移动网络特点
    基础网络性能差,各种原因导致丢包严重,速度低,安全性差
  • 移动网络引发的架构需求特性
    减少网络交互:使用更高效的通讯传输技术,提高了连接复用,减少 roundtrip 次数;
    降低流量:通过更高效的压缩技术和同步技术减少了网络的流量;
    更安全:在不降低体验的基础上通过对 tls1.3 的优化提高数据的安全性;
    更稳定:更灵活的调度系统实现异地多活,缩短故障切换的时间。

1.2 大型团队的并行开发需求 - 插件式开发

客户端容器架构设计的原则是“everything is a component”,在 Android 平台上,基于我们的隔离化容器架构设计,我们既可以提高在集成期的多团队协作效率,又收获了在运行时的灵活部署。通过把庞大的工程拆分成一系列的独立服务,以及我们具备的容器自升级能力,就不需要同时编译和集成所有的功能模块。一旦一个模块完成了测试,我们就可以按需对他进行升级。

1.3 动态性 - C/S架构与B/S架构并行,相互补充

Weex, hotfix热更新

1.4 跨平台APP

weex

二、研发运维支撑体系

支撑体系
完备的支撑体系。如果没有的话,在线上运行的情况是不可感知的。手淘在不同的维度也做了很多支撑的工具。

1.研发支撑
像传统的Reivew代码,统一的UI库,设计模板,日常预发、线上染色等等。

2.测试支撑
除了比较常规的单元功能测试,还有稳定性跟性能,以及自动化。像手机淘宝差不多是一个月左右的时间可能会迭代一个版本。
智能化测试,自动化的调用回归,伪造数据进行业务测试,静态代码扫描。

3.运维支撑
常见的性能跟稳定性分析,还有针对App的业务监控跟舆情监控。
舆情监控这个应该是移动App所特有的环节

客户端监控
可以在分钟级别确定用户调用某个操作的成功次数、失败次数和失败率,实现对业务可用性的监控。

舆情平台
舆情平台是移动App所独有的。要获取信息,会从用户手机淘宝自己填的反馈,利用市场和微博,实时抓取,然后把内容聚合起来,进行热门词归类,筛选出一些热门的标签话题做一些智能分类,分类之后大致知道到底是支付、详情、退款出现了什么问题,确定问题的重点之后,可以直接联系用户,甚至去跟踪用户,根据这些问题去修复线上的紧急问题或者是改善产品,这就是在线上实际使用的舆情平台。通过热门词的分类排名,就可以知道某一个版本在某一个阶段最重要的问题是什么,还扩展了用户集中反馈。

4.发布支撑
灵活发布,快速,局部,覆盖广,及时修复问题或业务上线
weex, bundle, hotfix

参考文章

QCon 旧金山演讲总结:阿里无线技术架构演进
https://www.infoq.cn/article/alibaba-mobile-infrastructure

手机淘宝构架演化实践
https://www.infoq.cn/article/2014/12/taobao-app-evolution

猜你喜欢

转载自blog.csdn.net/Hendy_Raw/article/details/88966269