WOT2016王庆友:听首席构架师论大型APP服务端架构
WOT2016移动互联网技术峰会即将于2016年8月26-27日在北京粤财JW万豪酒店隆重召开。本次大会将围绕应用架构、平台技术、性能优化、创新技术、VR技术、前端技术、APP大赛、运维与安全、数据分析、直播技术等话题展开讨论,为广大移动互联网技术从业人士指点迷津。
【讲师简介】
王庆友 2003年毕业于浙江大学,计算机硕士。前1号店首席架构师,先后就职于ebay、腾讯、1号店等大型互联网公司。精通电商业务,擅长复杂系统业务建模和架构分析,尤其在大规模分布式系统的SOA/微服务改造方面有很深入的理论和实践。
APP服务端架构变迁及发展历史
据王庆友老师介绍,APP是最近3-5年兴起的,其服务端架构大致经历了三个阶段:
1. APP刚刚诞生时,其功能非常简单,无线team负责服务端建设,通过直接访问各个业务系统库表数据或调用接口,简单封装后,提供给APP使用。
2. 随着APP的功能逐渐丰富,APP服务端架构开始全面拷贝web端的功能,服务端分散化,由各个业务系统直接对外提供。
3.之后,APP针对无线的特点独立发展,由独立的网关提供服务端服务,无线team提供网关基础设施和系统级功能,业务系统team提供业务功能,两者无缝衔接,统分结合,支持APP高效扩展。
如何分析APP系统级功能需求和结构?
APP一般需要通信、协议数据封装、信息上报(性能监控和行为监控),本地数据存储,Native模块和H5通信等功能。在结构上,通信和协议数据封装属于底层,对业务系统透明,其它属于公共模块,业务模块可以直接调用。
何为架构的本质?
一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。
在首席架构师眼里,架构的本质是“拆”和“合”。拆是把系统拆分为各个子系统/模块/组件,拆的时候,首先要解决每个组件的定位问题,然后才能划分彼此的边界,实现合理的拆分。合就是根据最终要求,把各个分离的组件有机整合在一起,相对来说,第一步的拆分更难。
拆分的结果使开发人员能够做到业务聚焦、技能聚焦,实现开发敏捷,合的结果是系统变得柔性,可以因需而变,实现业务敏捷。
架构师应该具有的能力
王庆友老师表示,对架构师能力要求比较全面,具体来说,需要以下能力:
1. 首先他必须是一个出色的程序员,对代码和系统有很好的驾驽能力。
2. 要有技术的广度(多领域知识),还要有深度(技术前瞻),对主流公司的系统设计非常了解,知道优劣长短,碰到实际问题,很快有多种方案可供评估。
3. 抽象思维是架构师最重要的能力,架构师要善于把实物概念化并归类。
4. 透过问题看本质则是由虚到实,往深层次地挖掘,快速识别木桶的短板并解决。
5. 要有良好的沟通能力,确保各方对架构达成共识,愿意采取行动;
6. 要有良好的平衡取舍能力,确保架构在现有资源约束下是最合理的,理想最终照进现实。
作为电商,App服务端架构有哪些特点?
1. 内部功能的共性和个性
电商一般会同时有APP和WEB端,它们内部共用一套服务。作为APP服务端,首先要统一对接内部服务,然后针对APP特点做适配,比如数据格式转换,聚合内部多个服务以提升传输效率等。
2. 统分结合,多团队合作
电商APP服务端的功能很多,单独的一个团队(team)不可能包揽所有,一般会采用多团队合作的模式,无线团队负责系统级的功能(如通信协议/数据封装、安全、监控等),业务系统团队负责具体业务功能。
3. 故障隔离,高可用性
电商APP服务端接口由多个后端team提供支持,并且在大促的情况下,某些接口调用量急剧变大,服务端架构必须支持接口资源的相互隔离,避免一个接口出问题,影响APP全部功能。