有幸参加ArchSummit2016全球架构师峰会,作为一名移动端开发人员,比较关注移动端架构相关主题,可惜的是此次会议关于移动端主题太少了,很多都停留在技术表面泛泛而谈,不够深入。除了移动端主题外,还关注了一下新技术方向主题:微服务架构,移动直播,区块链。阿里的技术专场场面火爆,反响不错,本文暂不讨论,主要就集团外几个印象深刻的移动相关技术主题聊聊自己的一些感受,比较杂。
移动架构设计变化
随着前端技术的渗入,原来只能应用到浏览器上的技术,现在纷纷出现在原生应用的开发阵营。另外一个就是后端一些模式和概念(或其变形)渗入到应用前端开发过程中。这种前端后端技术的互相渗透,一定程度上模糊了客户端和后端的技术边界。
- 容器化
随着动态部署容器化技术发展,大型应用模块化部署越来越便捷。 - 模块化
越来越多的APP逐步成长为大而全的航母应用,无论是从研发效率,还是架构扩展性来说,功能和业务模块化显得尤为重要。 - 动态化
除H5外,ReactNative和WeeX的出现也提供了另一种动态化方式,客户端提供渲染引擎,服务端提供页面下发、更新、个性化的能力; - 智能化
客户端采集更丰富的数据,服务端依托大数据和算法提供更加个性和智能的服务。 - app云端一体化
各种云端基础设施完善,服务端专注于提供稳定、可靠的基础服务以及基础服务端组合编排的能力,客户端更灵活的编排这些服务实现功能;
从分享内容主题来看,仍然是大型互联网公司在这些新技术方向走的更远,创业公司还处在野蛮生长时期,没有太大能力去挖掘新技术。
移动端性能优化
移动端极其讲究用户真实体验,要真正站在用户角度去思考产品。(据说源自张小龙)用户体验三原则:
- 别让我等
应用的启动要快,页面渲染要快,滑动要流畅,页面切换快 - 别让我想
页面布局清晰,交互遵循用户习惯,简单直观 -
别让我烦
功能不可用,稳定性差,强制推送消息体验为中心的性能优化关键法则:
- 真实全面准确收集用户体验数据
如QQ音乐:收集外网数据而非测试数据;收集高采样率数据;抓包分析保证准确。 - 根据数据分析用户痛点
如QQ音乐:听歌等待时间长,听歌卡,听不了歌,下载慢。
如QQ空间直播:进入房间慢,画面模糊,直播不同步。
- 用户痛点转化为指标
以用户的感知为标准定义指标
如QQ音乐播放: 首次缓冲时间的定义----从点击播放到听见声音的时间
- 将指标量化,赋予权重,计算得分
可参照腾讯管家和360安全助手的思路,计算得分让优化成绩更易于可视化,便于对比,持续优化。 - 服务端到客户端协同优化,形成完整方案
如:QQ音乐流媒体播放客户端策略有预取和缓存,服务端有多CDN竞速接入,多级缓存,异地多机房部署。
如:手机QQ从服务端,客户端,前端三个层次配合分别做了优化,形成一个比较好的hybird动态缓存机制架构
移动直播
直播是当前一个很火热的产品形态,此处简要梳理一下直播架构设计。
- 直播当前的热度
- 直播模块设计
主播端,音视频后台,业务后台,观看端各个模块划分与交互。一个典型设计:
- 模块解耦
直播内部业务复杂,为了扩展性和稳定性,各个模块解耦显得尤为重要。从功能维度划分,主要是:
- 直播高级玩法:
各大直播平台新颖玩法都比较类似,但用户体验上层次不齐,技术层面需要攻克的难关也不少。
研发体系
这块内容主要由中小型创业公司的管理者根据亲身经历,聊聊技术研发的一些经验,听起来比较有意思。以下总结几点印象深刻的:
- 不同规模的技术团队,技术特点差异性
小团队:人员单点,能力,单兵作战。沟通高效。
中型团队:团队协同,作坊式作战。
大团队:跨团队合作,技术重复建设,共建。
- 关于旧系统改造
何时改造?---选择合适时机
重构 or 改进? ---选择合适方式
投入资源和时间多少? ---评估投入成本
- 关于新技术引入
技术是否成熟? ---新技术预研
是否有相应技术储备? ---技术梯队建设
新技术存在哪些风险?--- 风险评估
带来多少回报? ---价值评估
- 关于技术人员建议
具备产品和用户思维;
降低技术理想的纯度,最小代价实现;
杜绝技术新奇症,稳定高效优先。
结语
分享比较杂,接触和学习到一些新的东西还是蛮有意义的。送大家一句名言,共勉之:
“怕什么真理⽆穷,进⼀⼨有⼀⼨的欢喜。” —— 胡适