【ATF】庄卓然(南天):掌上精彩-连接过去与未来

简介: 在清华大学的ATF电商分论坛上,庄卓然(花名:南天)做了主题为《掌上精彩-连接过去与未来》的演讲,分享了他亲身经历的阿里移动技术的演进之路。

2016 ATF阿里技术论坛于4月15日在清华大学举办,主旨是阐述阿里对世界创新做出的贡献。阿里巴巴集团技术委员会主席王坚,阿里巴巴集团首席技术官(CTO)张建锋(花名:行癫),阿里巴巴集团首席风险官(CRO)刘振飞(花名:振飞),蚂蚁金服首席技术官(CTO)程立(花名:鲁肃)以及来自阿里巴巴集团各部门多位技术大咖齐聚一堂,与莘莘学子分享阿里的技术梦想。


在下午的电商分论坛中,庄卓然(花名:南天)做了主题为《掌上精彩-连接过去与未来》的演讲,分享了他亲身经历的阿里移动技术的演进之路,风趣的演讲让现场同学们不时会心一笑。

 



阿里上个财年中国电商平台零售额突破3万亿元人民币并超过沃尔玛,成为世界上最大的零售平台。在这3万亿的背后最根本的力量就是阿里巴巴整个电子商务及互联网技术在过去10年快速的发展。但是,3万亿只占到整个中国社会零售总额的10%,因此整个电子商务和电子商务技术还有非常巨大的发展空间,移动领域更是如此。手机淘宝在海量业务背景增长的情况下,经历了从工具到APP,从平台到生态的发展历程。技术架构也几经创新突破。未来几年将在视频直播,VR/AR领域有所突破。非常期待在座的学子和我们一起去开创新时代。

 

演讲实录:

大家下午好,我叫南天,很高兴今天来这里跟大家分享。今天我们看移动互联网,最早要追溯到将近20年前,那时候访问移动互联网还要通过移动梦网接入,当时硬件、软件技术各方面都不成熟。真正意义上的移动互联网要从2010年说起,这几年我们都经历了移动互联网的崛起。今天就是和大家分享在阿里三万亿的背后,移动上都有哪些技术实力。



海量业务挑战


先从整体的业务看,截止今年全中国能通过手机访问移动互联网的用户已经9亿人了,移动电商用户超过5亿人,其中手机淘宝和天猫等阿里巴巴的客户端总用户量超过4亿,根据第三方的数据阿里移动电商占了全中国移动电商的81%,所以我们说阿里巴巴是连接互联网和商业的第一品牌,在移动领域更是当之无愧的第一品牌。除了规模还有技术上的挑战。比如说多端,我们的手机终端就有iOS\Android\winphone及浏览器;比如说跨团队协作,912亿背后有无数的团队,有无数的开发工程师,在阿里仅端侧的移动开发工程师就有近两千名,涉及数十个部门。还有各种各样的模块、插件、中间件的协同。这是一个非常复杂的工程体系。




这样海量的规模下,在用户体验、开发效率、安全稳定和规模上都催生了革命性的变化。


第一、用户体验:每一次技术上的突破都是由用户的使用习惯来驱动,互联网是典型的用户体验驱动的产业。传统PC时代我们用QQ聊天、淘宝买东西、百度搜索,这个本质就是体验驱动,哪个产品体验好就会选择谁。今天在移动领域,这个规律非但没有改变反而会变本加厉。移动端的体验已不仅仅是产品的体验、基础技术的体验,还有很多其他的如能耗、包大小,都可能成为用户体验的新挑战。

第二、开发效率:我们从开放透明的web生态回归到客户端形态,对效率会产生非常大的影响。而互联网很重要的就是“快”,唯快不破,怎样在客户端的时代,还能保证非常高的研发效率和迭代速度?

第三、安全稳定:因为手机随身携带,从某种意义上来讲,它是我们人体器官的延伸,它掌握了大量的个人数据,怎样保证这些数据的安全性?这对用户来说是非常重要事。

第四、规模:阿里巴巴从某种程度上讲是一个商业的生态,这样的规模我们怎样保证它的研发体系是有序、有标准、有效率的,并且我们每年会有非常严酷的挑战“双十一”,在阿里有句话,没有经历过“双十一”技术人员是不完整的。但“双十一”每年只有一次机会,你必须要保证它绝对的成功,所以在这样的规模下,你用什么样的方式来保证?

 

技术改变世界


规模催生革命




移动研发效率之殇:随着团队规模越大,业务体系变的越来越复杂,整个工程体系要保证我们的研发速度迭代速度能不断的加速。这是非常有挑战的事情。可以给大家分享一组数据,手机淘宝客户端迭代次数:2013年客户端发布了42次,2014年200次,2015年发布了500次。


打磨极致体验之旅:无论是从crash率、启动的时间、网络的开销还是在滑屏的帧率上,这些相对于web来说提出更高的要求,在过去的几年里,我们取得了一些非常有效的成果,我们有专门关注用户反馈的平台,在过去的一年里,我们发现用户关于闪退、性能类的反馈从8%降到3%。


守卫信任使命之战:我们评估了APPStore里18个行业Top10的APP,平均能扫描出的安全漏洞是87个,而今天在手机淘宝客户端里面,我们基本每个版本都能够控制在个位数。

 

黑五&感恩节大促  VS  双11购物狂欢节

我们用“黑色星期五”和“网购星期一”两天全美国的电子商务网站、APP等加一起的数据跟阿里巴巴“双十一”这一天的数据对比。成交金额上我们是美国的3.2倍。黑五在移动端的成交占比仅在34%,而“双十一”在阿里移动端占比高达68%。可见不仅是成交额的赶超,我们在移动电商的普及上也是要超过美国一大截。




颠覆传统web的移动技术


传统的互联网技术跟PC时代一样是一个典型的BS的架构,在B的这一侧只是薄薄的一层的变现层,核心的工作是在做渲染。而所有的跟用户逻辑跟业务有关的东西全都在sever层。这个时代的前端工程师核心工作是解决不同浏览器的兼容性问题而不去处理太多后端的复杂业务逻辑。而我们所谈的架构、编程模型、伸缩性、扩展性、稳定性等技术都其实在谈服务端技术。但在2010年左右,随着计算机设备计算能力的提升,我们开始把一些业务逻辑前移,当时出现了一系列像AJAX这样的前端的框架,能够很好的利用起个人计算机的能力,但本质上云和端的分工是没有改变的。但是到了移动时代这一切发生了很大的变化。


首先移动设备的计算能力不输于PC,其次移动设备上提供了将近200多个传感器。而这些是PC不具备的。所以这时候我们就发现开发的分割线发生了很大的变化,前端不再仅仅是跑在浏览器里的展示层,而是可以利用传感器利用移动设备做更加复杂的逻辑处理。这样的分层变化,计算的前移,使得云和端之间的网络里发生了很大的变化。这时候我们再去看客户端,原来只在后端出现的性能、兼容性、扩展性等问题都成为了客户端架构领域需要去考虑的核心问题,它决定了我们怎么样打造一个让用户满意,又有高性能、强扩展性、安全、还能保持高速迭代的移动客户端。

 


这是这个时代非常不一样的挑战。所以我们简单来看看,随着这样的变化,回到富客户端的开发模型里面,可能在哪几个领域里面,会是我们需要重点攻克的课题。


第一、部署模式:PC时代,所有业务逻辑计算都是集中在服务端完成,即使是前端的js脚本也是部署在服务端可以快速下载,而客户端我们要通过发版安装在用户的手机上,每次更新都需要用户去下载,整个迭代速度、用户侧的更新速度都达不到要求,那我们怎样能在客户端的研发模型下具备很强的动态部署能力?能发现bug快速修复?怎样在富客户端里具备很强的动态性?

第二、编程模型:到了富客户端侧,我们编程模型会发生什么样的变化? 传统在服务端我们通常会去用的MVC编程模型,到今天或许因为绑定方式调动方式的不同,会进入MVVM或MVP的编程模型下。

第三、系统架构:整个移动的生态,它是有多个操作系统,拿Android操作系统来说,每个厂商都有自己的定制,这些严重碎片化的东西我们要去面对,安装包不能无限制的扩大。对于用户而言,好的体验一定是相对小的安装包,这部分又如何解决?

第四、体验度量:性能等等这一系列的问题,它不仅仅是看吞吐率这一个简单的指标,用户在看手机时会说这个软件有点卡,那卡的原因是什么?就体现在软件的刷新频率上,如果刷新频率跟不上,突然出现GC过多内存占用时可能就会丢帧,这一帧丢掉就会让用户感觉卡。




阿里演进之路


在阿里巴巴,手机淘宝走过的5个时代:2009年是最早的WAP版的手机淘宝;然后到了2010年的时候手机淘宝是一张披着Native外壳的Wap,外面的壳是Native,里面的核心技术还是大量使用webview的技术,通过h5去展现,通过JS去转码;2013年我们做了比较大的改版,整个集团里打造了航母战略,整个APP不仅仅是一个简单的工具,它是一个平台,它上面不仅有天猫、聚划算,还有口碑等,这里每个模块既可以单独的运行成为独立的客户端,也可以长在平台的APP上,所以在内部有很形象的比喻叫航母,这上面所有的模块称之为飞机,既可以在航母上降落,又可以独立起飞;而2015年—2016年阿里巴巴在移动布局进入生态时代,我们在打造一个电子商务的商业操作系统,那今天在移动端也一样,这里面包括很多核心的组件、基础设施可以在不同的APP中共享,去复用。同时不同App的内容既可以作为独立的App,也可以作为一个插件的形式存在,这就是整个阿里在技术演进的5个时期。




传统的服务端架构,我们通常喜欢增加一个层次来解决问题,比如为了提高性能需要增加缓存,可以通过增加一个分布式的访问层等去解决问题。那在服务端,因为所有的部署是在sever端,在我们自己维护的IDC里,我们可以把这个层次加的非常厚,而且非常稳定,一切可控。


进入移动端后,发生了巨大的变化:首先,上层还是很重的业务,除了iOS和Android这类移动os之外在上面有一个很重的标准App Framework,这时候对架构来说进入非常大的挑战期,有时架构会设计得对整个改动非常的大。很多时候你的设计都会白费;其次,你不可能无限制的增加你的层次,因为手机容量有限,安装包大小必然受限;再次,你要兼容OS,因为OS和App Framework变重了,架构的设计考量要面向整体用户体验,这都是在移动客户端整个架构上和PC非常不同的特征。 




平台级APP的客户端架构之道


我们应该都经历过这个阶段,就像赶火车一样,不同团队都想拼命的爬上这个火车,但是一个地方出bug整趟火车都开不了。一开始我们架构治理就面临这样的问题,在早期Android 2.4版本还有65535方法数的限制,阿里巴巴是除了Facebook之外第一个面对开发工程方法数超过这么多的公司,所以说要有平台级APP的客户端架构设计方式,才能够满足这么多的模块,这么多的用户,能够快速的迭代,且有很好的用户体验。


所以,2014年我们开发了容器架构,简单来说,过去客户端是两层的结构,下层是基础库,上层是业务逻辑。现在我们改成三层架构:最下层还会有一部分的基础库,主要是一些与业务无关的客户端中间件;中间层,我们增加了runtime运行时的容器来调动总线,其中总线又会分UI、服务、消息,它让不同的模块只去依赖Runtime容器,而不会形成互相的依赖;最上层,我们把每个可以部署的模块称之为一个bundle,每个bundle之间是没有关系的,既可以作为一个模块长在容器上,也可以独立出去打成一个完全独立的APK。我们可以把客户端看成一个完整的工程被拆分成了多个不同的小工程,在这个插件式的体系中,所有的模块可以动态的插拔在这个容器之上。既可以做到在开发时模块之间互不影响,也可以做到在运行时不需要打整包让用户去下载,而只要去下发一个独立bundle,用户在有Wi-Fi条件时自动下载及动态加载。通过这个机制我们可以实现所有模块的替换。这是2014年做的非常大的技术改进。




2014年8月份,我们第一次在行业里公布我们架构是容器化的,在ArchSummit上做了一次完整的演讲,所以很高兴看到2015年移动开发圈讨论最多的就是动态部署,插件化的架构、容器架构如何去运行,很多公司都加入这个阵容中。在2015年Android新版本发布时,他们也采用了这样的架构方式重新去设计AndroidAPP Framework。所以客户端的弹性架构上我们经历了这么几个不同的时代,有了这样的架构后,我们的从发布频次、打包效率、还是弹性发布、运维监控上都有很大的进步。

 

支撑上亿人同时在线的移动接入平台


我们在开发PC端软件或传统互联网web网页时,基本不会考虑带宽、时延。但在移动端是非常大的挑战。所有的无线都是有线的,所有有线都是无线的。因为所有的移动开发是通信和互联网的结合,所有的手机连到互联网是去和基站做连接。这使得移动端在2G网络下什么都没拿到,光建立连接就花了1S。这样的网络情况,我们根本谈不上用户体验。很多用户通常是在公交上、火车上、地铁里访问手机淘宝,那我们如何保证弱网环境下的用户体验?我们的方案是建立一个叫ACCS的网络接入平台,在架构上一方面做网络通讯协议的优化,另一方面灵活的调度,在全国有多个接入点,通过调度模块来选择最优的接入链路和最稳定的连接链路,同时在后端数据网络的模型上也不仅仅是传统web的Request、Response的R模型,它也支持消息下发的PUSH模型,也支持像sync这样同步的模型等等。这是过去两年里阿里做的非常核心的工作。




今天拿ACCS平台跟业界所有的移动加速网关做对比,我们都取得非常好的效果。这侧除了架构的设计,灵活的调度之外,同时很重要的是在协议这一块。今天传统的HTTP在移动端是非常低效的,所以在2014年我们开始尝试spdy,到2015年我们的基础协议全面升级到HTTP2.0,现在我们在花很多精力研究自己的应用协议,因为在应用侧两个端都在掌握在自己手上,我们没有必要去遵守一个低效的标准做事情。去年我们通过TLS1.3的协议改造,优化窗口时间等,成为全球唯一一家支持HTTPS的电子商务网站,大家都知道支撑HTTPS这在移动端是非常大的挑战。今天我们能支持10亿设备的管理能力,同时在线数超过2亿,在全国有多个接入点做到就快接入和连接管理以及数据转发。这些为未来视频、直播等网络上的升级做好了准备。


双十一背后的移动开发框架 Weex

我们再回到双十一的Case上,过去有很多人尝试用h5来做这个事。第一因为不用跨多端,ios、android都用一个语言来实现。第二动态性好,不需要发版本。虽然我们能做到动态下发bundle,还是要开发iOS、android两个bundle,绕不开跨平台开发的复杂度。那么H5可以做到,但为什么大家又不用?核心问题是性能。我们曾做过测试,将页面用户首屏打开时间从4秒优化到3秒,这仅仅节省1秒让用户的转发率提高了68%。“双十一”的时候面对很大挑战是会场,页面里面有大量的商品,完全是个性化的。它展现的形式是动态调整,如果是纯Native所有的便捷性就会失去,如果是纯h5,体验又无法保障,为此我们开发了非常重要的Weex框架,它本质上是一个性能更好的webview,可以让所有开发者用H5的语言,且在多个平台上达到近似Native的效果。




在过去我们常会拿基督教里的圣杯来比喻软件开发的银弹,比如说高速迭代和性能的完美平衡点,一次编译多次运行。我们提到一次编译多次运行会想到web、Java。今天Weex希望把整个移动开发生态通过H5取得更好的体验从“双十一”来看无论是首屏的加载时间、内存的消耗、CPU的消耗、帧率整体的流畅度,Weex都有非常好的展现效果,今年6月份我们会把这个框架开源出来,希望这一年Weex在行业内的推进能够减少移动端的的开发复杂度,提升开发效率和整体体验。 




展望未来


席卷全球的移动技术革命,极大程度推动了互联网的用户规模和触网深度的发展。智能手机APP对互联网的影响,不仅仅是又一个终端,更是人体身体器官的衍生。连接过去,畅想未来。阿里移动核心技术又将为我们开启怎样的明天,创造何等的惊喜?


未来移动端上依然有很多想象的空间。互联网这么些年里产生了媒体内容变化的趋势,最早是纯文本,然后是图片,阿里巴巴积累了非常多图片方面的技术,无论是图片内存的优化还是传输编码的成本都做了大量优化。到今天我们进入了视频、直播领域,随着技术的成熟和新的用户出现,很多人更加喜欢直播的产品体验。未来的3-5年我们还会进入到VR、AR和MR的时代,像VR的概念已经出现很久了,但是计算机视觉的时延问题一直没有解决,设备时延会超过100毫秒,而大脑的反应超过4毫秒就会眩晕。所以,虽然VR在20世纪60年代左右就有人提出,但是实际上在互联网高速发展20年过程中,这个领域并没有发生质的变化。但是到今年我们很高兴看到,随着硬件设备的发展,离理想值标准越来越接近,预计在未来的3-5年可能会出现更多的VR或AR的内容。这可能是互联网未来新的发展方向。所以在整个阿里巴巴移动端的技术演进过程中,我们花了很多精力在提升多媒体互动,无论是视频的同时在线的人数,还是整个视频量的转码技术降低成本,互动方面我们都已经有大量的积累。




通过下面这支小视频,让大家感受一下未来购物会是什么样子的:

http://v.youku.com/v_show/id_XMTUxODc0NzE2MA==.html?from=s1.8-1-1.2

关于VR和AR这个视频讲了很多东西,是我们期待的未来购物形态,我们相信这里面很多东西慢慢都会变成现实。对于一家技术互联网公司而言,改变我们上亿用户生活的,非常重要的是技术背后的想象力。所以我们沿着这条充满想象的道路上去摸索,一定能摸索出更好有意思的创新产品。

希望大家能够加入我们,让我们一起共创未来!

目录
相关文章
|
编解码 Android开发 iOS开发
HLS直播协议详解
HLS直播协议详解
3358 2
|
Android开发
教你在Android手机上使用全局代理!
前言:在Android上使用系统自带的代理,限制灰常大,仅支持系统自带的浏览器。这样像QQ、飞信、微博等这些单独的App都不能使用系统的代理。如何让所有软件都能正常代理呢?ProxyDroid这个软件能帮你解决!使用方法及步骤如下: 一、推荐从Google Play下载ProxyDroid,目前最新版本是v2.6.6。
17945 0
|
7月前
|
弹性计算 人工智能 数据库
2026年阿里云服务器试用与购买活动参考:免费试用、新购优惠、特价云服务器续费政策解析
2026年阿里云为新老用户推出多项优惠政策,涵盖免费试用、新购优惠及特价云服务器续费。用户可零成本体验高品质云服务,新购时享受轻量应用服务器及长效特惠云服务器的空前折扣。特价云服务器续费政策明确透明,99元和199元档位新购续费同价,提供长期成本可预测性。此外,用户可领取阿里云优惠券,在部分云服务器活动价格基础上再获减免。阿里云构建了对新手友好、对老用户忠诚的优惠体系,助力个人和企业无忧上云。
|
1月前
|
人工智能 自然语言处理 运维
AI实战见真章:2026大模型客服系统深度横评与实测
本文深度解析2026年大模型驱动的智能客服演进趋势,以阿里云瓴羊Quick Service为样本,指出行业正从“能否答对”转向“能否办完”。文章系统拆解其三层架构、AI Agent闭环执行、RAG知识增强、人机协同等核心能力,并通过长城汽车、申通快递等实测案例,验证其在任务完成率、满意度及降本增效上的显著成效。(239字)
|
2月前
|
人工智能 弹性计算 安全
从试点到规模化:2026企业级Agent解决方案落地路径全解析
2026年是企业级AI智能体规模化落地关键年。本文以瓴羊AgentOne为标杆,解析从PoC到生产的四大突破:长时任务、多Agent协同、弹性伸缩与全链路可观测,并提出“模型-技能-执行”三层解耦架构,强调场景优先、数据先行、安全内嵌、人机协同,助力企业真正实现AI增效。
|
8月前
|
存储 数据采集 人工智能
大模型微调常见术语解析:新手也能看懂的入门指南
本文通俗解析大模型微调核心术语:涵盖预训练模型、LoRA/QLoRA等轻量方法、学习率/批次大小等训练参数,以及过拟合、数据投毒等效果与安全要点,助新手快速入门并安全实践。(239字)
|
5月前
|
存储 小程序 安全
如何为APP构建一个安全可控的沙箱运行环境,让第三方合作伙伴的小程序能够安全可控的运行在自己的APP里
如何为自己的APP引入一个安全可控的沙箱运行环境,沙箱为每个小程序创建一个独立的运行环境,实现第三方服务商通过小程序接入宿主APP,代码在自己可控的沙箱内运行,宿主APP通过管控后台掌握最终的决定权。
438 2
如何为APP构建一个安全可控的沙箱运行环境,让第三方合作伙伴的小程序能够安全可控的运行在自己的APP里
|
SQL Java 关系型数据库
Spring事务传播机制:7种姿势教你玩转"事务接力赛"
事务传播机制是Spring框架中用于管理事务行为的重要概念,它决定了在方法调用时事务如何传递与执行。通过7种传播行为,开发者可以灵活控制事务边界,适应不同业务场景。例如:REQUIRED默认加入或新建事务,REQUIRES_NEW独立开启新事务,NESTED支持嵌套回滚等。合理使用传播机制不仅能保障数据一致性,还能提升系统性能与健壮性。掌握这“七种人格”,才能在复杂业务中游刃有余。
|
9月前
|
人工智能 JSON 网络协议
AI 大模型 LLM API 深入解析:Gemini 3.0 Pro 的 SSE 流式响应与大模型接口跨区域延迟优化实践
本文对比Google Vertex AI与OpenAI在SSE协议处理上的差异,针对跨洋网络高延迟问题,提出通过聚合层优化TTFT。结合GRPC与REST的适配挑战,引入协议转换网关,实测P99延迟降低75%,显著提升连接稳定性与首 token 速度。
710 2
|
敏捷开发 算法 测试技术
软考中级软件设计师专项-软件工程专题上篇
本篇章精讲软考中级软件设计师“软件工程”核心内容,涵盖CMM/CMMI成熟度模型、瀑布/螺旋/敏捷等开发模型、系统测试与维护策略及McCabe复杂度等考点,结合例题解析,助力构建全生命周期知识体系,精准突破考试重难点。
760 1
软考中级软件设计师专项-软件工程专题上篇