时间:2016年12月13日下午
地点:北京中关村创业大街言几又书店二层
主题:“阿里科技下午茶”
主讲人:庄卓然,花名南天,阿里资深技术总监,曾负责淘宝移动平台、天猫双11,现负责淘宝本地生活、阿里百川、优酷产品技术平台
上部:淘宝从PC到移动技术的变革之路
南天:各位老师下午好。
[我的阿里八年]
我来阿里到现在为止快8年了,从2009年3月份加入公司,最开始是在淘宝负责技术架构,负责底层技术重构。2011年对于阿里来说,发生一个比较大的事就是“三淘分拆”,拆成了一淘、淘宝和天猫。
分开来看,其实当时马老师有一个比喻,叫做淘宝是“延安大本营”,继续在大本营里不断地去孵化创新的业务、技术和产品。一淘是“东三省”,因为一淘整合了雅虎的搜索团队,俯瞰全中国的电子商务市场,所以当时一淘不是只做淘系的搜索团队.
大家可能听出来了,如果有一淘就不需要有天猫。如果你想做全中国所有人的搜索市场,其实就代表了自己做B2C。而如果你要想全心全意做B2C,可能未来就不会有一淘这样的一个垂直电商搜索,因为你自己就已经很强。到今天来看,我们很幸运,天猫长起来了,一淘在整个战略布局上推起来了。
从2010年天猫成立开始,我就调到了天猫,带天猫的产品技术团队。从2011年到2013年这三年的时间,很幸运也是很悲催的做了三年的双11天猫技术负责人。关于阿里技术的变革,其实双11是一个缩影,放到七年里去看的时候,每一次大的改造,其实双11都是一个契机。
2013年阿里又发生另外一个很重要的事情,就是all in 无线。那年我们从各个BU里抽调了很多人进来,我也是在那一年被调到无线事业部。当时从各个BU里抽调精兵强将重组这个部门,希望在无线的战场上能够把新的产品和业务模式摸索出来。
2013年11月12日做完2013年的双11,我到无线事业部报到,开始负责手淘的技术。到去年我们把手淘和淘宝合并掉。为什么做这个事呢?是因为刚开始2013年的时期,那时候很多的小型移动电商规模已经到了500万、800万的百万量级,淘宝面临一个非常被动的局面。
当时的想法是怎么样能够快速把业务搬迁到移动端。也没有想过怎么去定义移动、移动化的电商是什么,就先做了一个电商的移动化工作。这是2013年主要的工作。到2015年的时候我们整个团队通过大量技术创新和产品创新,很快把DAU提升了。所以选择在这个时候,其实也不需要区分PC和无线了,因为整个成交60%到70%都已经在无线上发生了。如果还有一群人单独做PC端,必要性已经不大了,所以就把这两个合并掉了。
我们看闲鱼、天猫APP等其它阿里系的APP,很多移动基础上的设施都是在我们这个团队的工作上完成。
到2015年,我们又同时开始了两件事情,就是把移动的开放平台,阿里百川的业务并到我们这个团队,现在百川整个移动开放平台团队,同时本地生活、淘宝的一些创新业务,也是在我这里。
到2016年,双11前的一个礼拜,刚刚宣布的一个变化。因为其实淘宝和优酷整个业务类型其实是非常像的,本质上是在做内容分发的方式、撮合供需关系。业务定位上来讲,这两个平台是非常相似的,所以我现在同时兼任优酷的技术平台负责人,只不过分发的内容会不同,内容的组织方式其实都是相似的。
这是我在阿里大概的八年的历程:从一线的工程师开始,再到团队的管理,技术团队的管理,再到做产品、做业务,这是八年的经历。
[淘宝的技术演化之路]
对于阿里而言,整个在底层的计算和存储的基础设施,其实是从淘宝这个基础体系中慢慢演化出来的。
今天我们在云计算里看到的很多核心的中间件,是从淘宝开始的起步。2003年最开始做的淘宝的第一个版本(这个我也没有经历过),当时是阿里小二拿了马老师一张信用卡去加拿大买了一个开源系统,这是淘宝的第一个版本,其实就是一个社区版本。在最开始的淘宝搭建过程中,有十几个人的团队围绕着这个开源系统做开发。随着业务规模的快速扩大,在存储、IO、网络等环节出现问题了。
为了更好地去管理IO、存储和网络,开始把它迁到JAVA。差不多在2004年2005年左右的时间,很快就做了这样的一个选择。这时候就到了做整个大的底层架构的改造,所有的技战基本都会围绕着两件事情:
第一个事情,当业务的规模大到不能通过简单加机器的方式去做调整的时候,这个时候通常要做架构改造。第二个事情,开发的规模大到所有人在一起开发会互相影响的时候,也同样要做架构的改造。
在2008年左右的时候,出现了第一次整个淘宝系统架构优化的过程,我那个时候加入了淘宝。
当时是有800多人的团队,分不同的研发小组,有做交易的、会员的、商品的团队,每个人要在叠加功能的时候,都会抢一个发布的窗口。今天发布的窗口被这个团队抢走了,明天另外一个团队做修改的时候,就只能去改,否则测试的时候代码纠缠在一起,根本不知道问题在哪儿,当时的架构不能解决运营开发的问题。
假如哪一个应用有问题,会对所有的模块产生影响,所以是对整个系统稳定性的挑战。当时做SOA的改造核心,就是把整个的业务做分层,做垂直和水平的切分。那个时候有了淘宝的第一个雏形,其实到现在大的雏形也没有变过,商品中心、交易中心、会员中心等,把这些基础服务脱离出来,每个中心单独去运作,然后每个团队围绕着自己的应用集群做开发。在上层里我们再去切分不同的搜索、推荐、详情,这个都是上层的APP的应用。
这个时候我们做了第一代的SOA架构,在这里面也呈现出了大的中间件,比如说远程通讯的中间件、服务治理的中间件、消息传递的中间件,用中间件对这样庞大的集群、上下的耦合关系做管理。这是2008、2009年整个淘宝非常重要的一个环节。
再到2014年的时候,我们就进入到云的时代。首先其实电商本质上是一个云。在双11的挑战下,经常会看到一个什么样的情况呢,零点的时候为了支撑很大的峰值会加大机器资源,抗到一个比较高的“水位”,比如今年17.5万每秒的交易速度。实际上,在平时的时间,尤其是下午场的时间,没有那么多人来,机器摆在那没有用,冲17万的峰值之后,在低谷的时候其实这些机器资源也没有用。所以我们开始用一个混合云的部署方式。
我们会用自己电商集群里的资源抗一个基本的量。比如说几万每秒的基本成交量,剩下的就通过云计算的方式弹性做资源补充。过了峰值以后,机器的资源还可以放到大盘子里做其它的事情。
这是整个淘宝在后端的基础架构演变过程,从最开始的PHP到后面的java应用,能够支持团队在不同的层面,无论在运营期还是开发期的伸缩性,再到今天进入到混合云部署的时代,更好的用到弹性云上的资源。
这是淘宝的演化之路。
[我经历的双11]
讲讲天猫双11的经历,其实现在有很多的人会去讲,可以讲讲我眼中的双11。
2009年是我们第一次双11,实际上那一年其实是一个误打误撞的情况。运营的团队希望在11月做一个促销的节日,但是11月又找不到一个很好的日子,突然有一个市场部的同事说11月11号是一个节日,逍遥子那时候是淘宝商城的总经理,问11月11号是什么节日。说是光棍节,挺好的,就选择这么一个日子。那时候是不知道这个促销的存在,所有人在零点过后看到逍遥子发的邮件,说淘宝当日的成交突破了多少,才知道有双11的节日。
这是双11的由来。到2010年的时候,就发生了很大的变化,2010年双11是整个淘系的全资源枯竭的一天。那天整个带宽都不能支持运作了,我们考虑是不是要关掉一些省份的访问,当然最终也没做这个决定。我们当时是把大图变成小图,甚至考虑是不是要把彩色的图片变成黑白的图片,以支撑流量让更多人去访问,所以那一年是全线的资源枯竭。
到2011年,是非常著名的黑色5分钟。我在阿里第一次负责双11,也是碰到这个事情。它的情况是什么呢,我不知道那一年有多少人参与了双11。你们知不知道2011年发生了什么,为什么叫做“黑色五分钟”?
2011年是这样的,其实双11做的事情要说复杂非常复杂,要说简单其实也非常简单。通常我们会做一个系统的流量预估要抗住每秒多少的成交的能力,比如11万笔/秒,如果我抗不住,系统要做一个自我的保护,把超出11万笔/秒的能力,让这些用户去排队,系统只接受11万每秒的能力。这实际上是对系统的一个保护,否则的话系统会崩溃。
双11的核心地方是对系统里每一个应用的服务能力,要做一个精确的评估,要有一个很精确的保障机制。从原理上可理解是一个水库,有一个上面的大闸放水下来,要保证自己的水库不要把自己淹掉,同时又要刚刚好,双11其实是这么一件事。
2011年的双11核心改变了一个什么事情,这一年要解决价格的确定性问题。为什么要提这么一句话,因为2009年被消费者诟病的,是“不是真便宜”,而是把价格抬高后再打5折。后来跟商家招商谈价格的时候是真便宜,但2009年、2010年改价格,是商家自己决定的,完全跟平台没关系。
2011年的时候,提前几个月开始招商,商家要告诉平台,双11要打几折,跟过去销售的价格做比较,确保是真便宜。我们希望把原来商家负责改价格,变成商家跟平台来共同完成,招商通过以后,平台来帮商家改价格,这是2011年一个很大的改变。
2011年的时候这个系统上线的时间就非常紧张。9月份确定这件事情,在11月的时候还在做大量的系统发布。那也是我们在最开始做双11的第三年,不像现在每一年都会沉淀、系统化,每一年前期的准备、组织机制等都更加完善。
那一年因为刚开始在零点刚开始卖的时候,很快发现管理优惠定价的系统挂掉了,挂掉了以后再也起不来。这也是每年双11说的,没有经过双11考验的系统都是不稳定的系统,都会出问题。那是那个系统第一年的亮相,果然不出所料的挂掉了,在这么短的时间里,当时做了一个决策,把这个价格赶紧刷新到商品库里去,能够让这个价格生效。
任何一个你担心,没有去验证的一个地方往往就会出问题,出问题的就在那一行预案的代码上。
把一个数据读进来做修改再更新回去,在更新的过程中,那行接口对应代码有一个问题,把没有设置的值都默认为空,最后造成一个什么情况呢,价格虽然改对了但是商品的颜色、尺码就不匹配了,所以那年的双11就非常混乱了。
一方面看起来价格一片糟,有的对了有的错了,整个好不容易都改对了,卖出去了很多东西,结果不知道用户买出去的鞋子是几码,卖出去的围巾是红色的还是黑色的,全都不知道,一片乱。所以2011年是双11历史上最混乱的五分钟。
当时的解决我觉得也很有意思。我在负责整理技术,还有一个人配合我负责产品。当时这个事发生了以后,把我们快速关在一个小的会议室,逍遥子都在门口等着,也不敢进来。他在门口眼巴巴的看着我们,我说老板你要不走吧,你待在这我压力很大,也不能解决什么问题。他就先走了,我们俩在会议室里把所有改了一遍,待了一个多小时,回来布置各个部门去解决今天的问题,整个过程一直到11号的凌晨7点!
记得那个时候我才敢下到运营的那一层,因为基本上所有的问题是在7点左右恢复的。我们只有一个很简单的目标,要在早高峰来临之前要把所有的问题解决掉,还好7点之前差不多把问题解决掉了。还没有完成解决的问题是搜索引擎的同步,因为需要一定的时间。
运营那一层同样也很乱,有另外一个研发的领导说要打开商家修改后台系统的接口,能够让商家自己把价格改对。我不同意,为什么?已经出问题了,出问题的原因是为了解决这个问题,但是因为解决A问题犯了一个B的错误,现在如果为了解决B的错误,再把A的问题拿回来,等于今年什么也没做。B这个问题已经被解决掉了,就不要再把商家的权限放开,会带来更大的麻烦。
那一年也比较幸运,整个的判断全是正确的,我们对系统了解的程度还不错。当时所有还剩下的问题,基本上跟搜索数据没有同步相关,到7点半左右的时间,所有的搜索同步就上来了。那一年我们做到了33.6亿,又是有一个很大的翻番,还是很有意思的一年。
我觉得一些很有代表性的关健词都是那一年产生的,比如说爆仓,那个词是在2011年里第一次出现;比如说自燃,我相信很多朋友没有听过,2011年的时候很多商家打印出货单,打印机就自燃起来了,好几个商家发生这样的事情。
2011年虽然出了问题,但是我觉得那一年代表了整个市场井喷的一年,无论是在商家端还是消费者,2011年都有很大的飞跃。到后面的系统非常稳定了以后反而感觉不那么热闹了。
那一年其实黑色五分钟,也发生了很多很有意思的事情。下一年的时候,从2011年吸取了很多的教训,2012年的时候开始我们差不多每年会从5月31号正式的立项准备双11,我们会从今年的业务突破方向上设立产品,做针对性的系统架构升级、改造优化,解决刚才说的伸缩性问题,解决整个性能和稳定性的挑战。
有一个直观的数据,比如说2011年的时候,整个公司准备双11的预案,一共只有20个预案。预案代表什么呢,当出现A情况要做什么事情,当出现B情况要做什么事情,一共有20个。但是到2012年的时候,整个公司有800个预案,系统的精细度已经做得非常深了。
但是2012年也不是没出问题,2012年被我们称之为最长的180分钟。怎么说这事,在2012年双11开始前一个礼拜,我们把所有能准备的、能想到的,当时又开了一个所有BU技术leader之间的会,讨论一件事,就是还有哪些事情发生了可能会让系统死掉,就是不顺着想而是反着想。
当时有两个点没有解。第一个网络挂掉了没有办法,比如说突然间光纤被挖掉了、突然间机房断电了。第二个没有办法的是商品,所有的用户出现问题可以快速的恢复、交易也有办法能够稳定下单,但是商品出了问题要检查库存商品的信息,每次支付成功以后要做一个正式的检查库存的动作。所以商品库如果出问题了,交易也会连带着受影响,系统就走不下去。
再一次验证了“墨菲定律”,2012年担心的两个点都发生了。商品库的网卡爆掉了,整个商品数据库的网卡超出了上限。那一年,刚开始的时候我们预估的数量每秒交易1万2笔,但是它始终在八千笔每秒的地方高速振荡。我觉得那一年已经代表着阿里在交易系统上的稳定性达到一定水准了,因为它不是某一个单点的问题直接就跌爆,而是在主库和备库间不停切换。
那一年其实是非常长的180分钟,180分钟振荡的过程中产生了一系列的问题。但是整个的交易系统看起来是非常稳定的,而不是一下子因为某一个小点的问题就跌到了低谷。
2012年看起来比2011年顺得多,但实际上也出了一些问题,但是整个系统的保护能力在2012年得到了验证。2013年觉得压力非常大, 2011年准备的预案是20个、2012年是800个、2013年是2300个,这其实是一个很恐怖的数字。因为它不是要保证2300条的准确性,不是要测2300次,是要保证2300条的排列组合,是要测2300个排列组合。
2013年从7月份的时候,这件事情就已经在纠结,到9月份的时候突然有一个想法,我们讨论了一下能够真正的去模拟消费者在双11的那一刻,如果真的能够模拟的话,当天会发生什么样的问题都可以走一遍。
所以那一年花了很多的精力做全面的压测,这个对阿里去应对双11的挑战是非常有里程碑的意义。那一年在模拟了所有用户行为的访问数据,然后把这个数据打到真实的生产系统上,去模拟双11那一刻整个用户峰值集结过来的访问场景,然后再看预案生不生效、能不能抗得住,这个系统挂了、那个系统有没有问题,整个链路就有办法还原和测试。
这是2013年全链路压测,这对阿里是非常有里程碑意义的,意味着不再一点点评估下来,而是直接模拟那一刻去看,到底哪里出问题后再去修改,这样的逻辑顺了很多。
这是从2011年到2013年,再到后面每年的双11都会花很长的时间,连续几周做压力的测试,实际上就是去解决整个的系统稳定性问题。双11对于阿里来说,核心的解决两个事:第一个,系统伸缩性有没有上线,是不是通过快速的加机器或者是快速的扩容,能够解决系统容量的问题。第二个,所有为系统可能会发生状况做的准备,是不是都能落实到确定性的层面上。
接近上万人的团队准备系统,每个点上的承诺都能做到,这还是一件比较难的事情,所以全链路的压测标志着有一个很好的检测手段和办法。
天猫这一段还有很多很有意思的事情,在初创期的时候做了很多很有价值的尝试。比如说在大规模的算法、个性化算法的应用上,手淘也会讲到,以后在移动端会变得更加的明显。
[阿里移动技术的三驾马车]
讲移动我觉得比较有意思,我觉得2013年实际上并不是代表着阿里的业务在移动技术的战场上出现什么问题。整个淘宝的业务非常健壮,只是在移动的时代里,无论是设计的思路、运营的思路,还是技术的平台,都出现了各种不适应。所以2013年的无线,首先解决的是这样的问题。
怎么去解决这些问题?移动技术本身是什么?这是要思考的问题。移动的技术本身是移动和互联网技术的结合,首先这里面会涉及到移动通讯技术,PC时代成功的团队到移动时代都会栽跟头。
在PC时代所有人没有关心带宽,但实际上移动时代则不是。大家用手机访问互联网,实际上要先进基站的一个信道,手机上不发数据包出去,这个信道就会被基站回收掉,每一秒操作都要做这个事情。这就导致在2G网的情况下,什么都不建,光建这样的网络连接一秒钟是开不起来的:上来体验特别差,打也打不开,各个页面要等很久,原因就在这里。在稳定性上、在时延上、在整个资源管理上,差别特别大。
我们经常讲一句话,叫做无线是有限的、有线是无限的。怎么讲呢,一个有线网络,它的网络资源是无限的,非常稳定、非常高效。在无线的时代,所有的资源都是有限的,非常宝贵。
所以从移动通讯技术来说,涉及到带宽,今天4G还好一点,2013年的时候还有很多的用户是2G和3G,都对原有的技术体系造成影响,这是第一个。
第二个,在大规模的业务迁移,又碰到了前面说的淘宝第一阶段面临的问题。在一个应用上开发,今天可能上千人都要在一个APP上开发,这个问题怎么解。一行代码写的有问题,对全部一千人写的版本都很难,这涉及到架构上的改造。
第三个,架构灵活性上的不足,我更愿意说这是研发效率的问题,它像是一个大的火车上面挤满了人,就很像当时的状况。
原来的阿里,整个最核心的技术竞争力体现在效率上,体现在研发速度上。因为互联网讲的一件事情就是唯快不破,就是将一个商业主意以最小的代价、快速的投入市场,在市场上不断的去试错。在移动的时代,发现天然做不到这一点,因为开发一个APP需要用户去安装,用户不安装,你也没有什么办法。
手淘经历了大概这样的几个时代,第一个版本的手淘是2009年的web版手淘。2010年的时候,开始做的第一个客户端版本。分为两个时代,第一个时代还是在做APP 1.0,即做工具,提供的核心功能是随时随地都能买、随时随地都能查和搜索、随时随地能够查物流,其实就是一个工具属性的APP。2009年再到2013年年初的时候,基本上都只解决一个便捷性的问题。
在这样的一个工具上,其实是没有产品,没有天猫、聚划算、爱逛街、淘抢购,就是一个简单的工具,完成搜索下单,甚至没有店铺。
所以就把整个电商的丰富性、生态属性的平台,退化成了一个工具。没有办法在那个时候把阿里的优势表现出来,所以产品上必须做升级,我们放弃了每一个独立客户端的发展方式,而是用一个独立客户端把所有内容放到手淘里。
为什么这么做?第一个思考点在于,其实移动时代跟PC时代有一个很大的不同,就是APP的孤岛效应变得非常明显了。如果说互联网是通过开放域名和开放HTML的方式快速做链接,非常开放、透明分享,通常定义为人类的原始社会;移动时代,我比喻进入到奴隶社会了,安卓一个阵营、iOS一个阵营,天然会有APP之间的隔离性,所有内容的分发、应用和应用之间的跳转等,通常情况下由安卓和iOS来决定这件事情,所以互跳成本变得更高,业务互相之间产生协同的机会变得很小。
电商相对来说比起社交是相对低频的应用,所以我们需要把所有跟生活消费有关的业务都放到一个APP里去,能够产生更多业务上的协同效应。通过更多的低频业务的组合,去打造一个高频的入口。所以这是当时在做手淘2.0版本产品背后的思考,把它变成现在雏形。
在这个过程中,其实技术做了很多事。介绍三个比较关键的核心技术,首先是Atlas即容器化的架构。通常的APP是两层架构,上面是业务板块,下面是基础中间件,负责网络、安全、渲染引擎等等。通常这样两层架构里,一行代码出问题了,互相都会受到影响,所以把它变成一个三层的架构,植入容器的概念!管理上层每个业务的生命周期和动态插拔,相当于把手淘变成一个插件平台,每一个业务模块都可以定位成一个独立的APP,包括天猫、聚划算等等,都可以变成一个独立的APP。
既可以独立的开发,也可以把它插到容器上,变成APP的一部分。从这样的角度去看,解决了几个问题:第一,当开发这个模块的时候,跟别人没有关系,可以独立开发一个APK。第二,当要集成的时候,不再是源代码的集成,会编成二进制的包,再放到容器里实现热插拔。第三,解决动态部署的问题,因为是热插拔的机制,不需要用户再去重新下载安装。
通过这个方式实现了几个好处,第一个并行开发,每个人往前跑,再聚到一个容器里。第二是动态发版的能力。这个架构出来以后,2013年我刚接收这个团队时盘点了整个一年的发展情况,一年发了42个版本,其实还是比较快的。就算一个平台21个版本,差不多会是两个礼拜到三个礼拜发一个版本,其实还是比较快的。但这个架构改造完成了以后,到2014年发了204个版本,2015年发了500个版本。500个版本什么概念呢,相当于365天每天有1.5个版本发布。这样真正意义上把快速开发迭代的能力,在移动这个时代又拿回来了。这让我们有一个想法,就能快速上线,用户反馈、快速更改。
可能会在明年的上半年,把ATLAS开源掉,现在也在做开源的过程中。中间的一些包括热修复的能力,已经开源了插件,反馈也非常好。
第二个ACCS,解决移动通讯的问题。我们从三个层面上来去思考这个点。首先在协议层面。基于Http的协议第一不安全、第二这个协议压根不是围绕着移动而设计的、第三传输效率极低。我们改造成什么呢,基于新的通讯协议做APP和后端之间的优化,今年又升级到http2.0,对整个头部包的压缩,在通讯的时候,数据的压缩和连通的稳定性都有很大的提升。
去年我们做了一个很大的改变,保证所有的通讯是加密传输。很多APP会出现流量劫持,访问了一个功能但结果跳到另一个网站,这样的事情在手淘上不太会出现,就是因为整个的通讯协议都是基于https来做的。本来这对性能会是一个非常大的伤害,因为会做密钥的交换,但我们想办法把很安全的协议做得不那么笨拙,对性能几乎无损。
第二个通讯层面来看,移动和PC有一个很大的不同,在于它是一个双向的通道,既可以下行消息,也可以上行消息。怎么去理解呢?我们今天所有的APP,其实都是可以收到它对你push的消息,不仅仅是打开APP然后浏览被动的消息,它也可以主动触达你。这样改造通讯的模型,能够实现有一部分消息,可以上行和下行支持不同的通讯方式。
第三点,怎么样能够让应用的接入和用户更近。其实国内运营商网络还是比较复杂的,北京移动的号出差到上海,接入网络是从上海移动互联网接入的,联通可能就真的把接入调度回北京接入互联网,用户整个访问的链路就会走很长。我们针对这个问题,做了很多的接入点,让用户接入机房的网络离用户更近,更加符合不同运营商的制式,构建了全球上千个接入集群,能够让用户最快的接入。
所以ACCS解决的是这三方面的事情。这三件事情做完了以后,希望在整个团队里实现一秒钟法则:在2G环境下一秒钟完成连接的创建,3G网络下一秒钟完成首包,4G网络下完成首页加载。这对基本性能就有一个很大的提升,所有的APP从移动网络再到我们自己机房的连通过程中,通过ACCS做调度。
第三个是weex。Atlas的出发点是怎么让大规模研发能够更加快速的构建,这样能解决一部分的效率问题,但是还会面临另一部分的效率问题,比如iOS开发和安卓开发需要写两个不同的版本,一定要写很多本地的代码。理论上讲HTML5是一个更好的选择,就像HTML一样开放、共享、共赢,但是今天所有的HTML5性能都是一个非常大的考验。
我们通过ACCS也做了很多的事情,让H5的网络变得更迅速,但是这些还不够。因为整个浏览器的渲染机制是在线上的,当有非常复杂的页面时,渲染的过程就会很久。所以怎么样有一个更好的方式,既能写一套代码就解决多端开发的问题,又能有很好的性能。这是我们希望核心突破的点,所以就有了weex。
为什么叫weex,当时项目的负责同学给我开玩笑,我当时跟他说这个项目大概的方案已经定好了,给团队的时间是在双11之前要上线,去年双11之前要上线还有几个星期的时间,于是我给了他weeks的time,他给了我weex的框架。
希望用这样的方式解决移动开发跨平台难、性能不高的问题。weex去年双11开始使用,到今年甚至整个阿里系移动端里涉及到HTML5的开发,甚至很多都是本地的开发,都是用weex做开发。
好消息是我们已经正式通过了Apache基金会的审核,把weex捐给Apache基金会作为回馈开源社区的项目,帮助更多的开发者在移动端更简单的开发移动应用。
我们也希望通过weex,能够成为未来一种更简单的移动端开发方式,用一个所有人都能够懂的HTML5方式,就能够写出一个原生一样效果的应用。这是我们希望通过weex去打造的一种新的开发方式。
下部:手淘背后的人工智能以及未来思考
[手淘背后的人工智能]
刚才讲的三个中间件技术(ATLAS、ACCS和WEEX),是在整个手淘的发展过程中非常重要的三个基础中间件。这三个中间件解决了构建的问题、通讯的问题和开发方式的问题,更重要的让我们真正意义上进入到了人工智能的方式。
为什么?刚才讲2012年的时候大量开始用机器学习去做推荐,希望它能改变整体的平台结构,但是其实很难,尤其是双11。比如双11需要整个生态圈跟平台一起努力,当跟商家说在什么样的时间点、什么样的位置做曝光,商家很开心的去备货。但是跟他讲,今天要做个性化了,不知道会什么时候、出现在什么位置、被什么人看到,都不知道了,商家就疯掉了,双11备这么多货卖不出去可能就会挂掉,这是现实的问题。
这件事情很难在双11这样的一个场景下被推广开。在移动这个场景下,真正出现了这样的一个机会,因为屏幕更小。在这么小的情况下,人工能够运营的东西太有限了,能够穿插的信息也太有限了,而机器学习和人工智能是唯一的有前景的路线。
有两个非常好的应用场景。第一个是搜索和推荐,这是一个完全的个性化的首页,当然还可以做得更好。实际上这里面也有很多有意思的点跟大家分享,比如说当时的手淘做了一个产品叫“有好货”,这个产品每天有超过两千万的人使用。这个机制跟下面的推荐还不一样,有一波达人和买手在这个平台挑选出来,把认为好的东西放到一个相当于精品的商品库,根据用户的知识图谱和兴趣图谱做推荐。
我当时看用户的反馈、APP的评价,会经常说有好货做得不错,但为什么不更新?其实我们每天都更新,因为算法每天都在算,后来我搞明白了,用户指的不更新是首页的入口图没换。然后我们每天入口图做一些更新,果然转化率就涨上来了。后来发现我们是不是再做一步,把入口图再进一步个性化,直接给用户看的入口图就是“有好货”里跟用户相关的商品。这个事情做完了以后发现点击率又提升了很多,用这样的方式把首页的所有元素都做了这样的处理。用户看到的图片跟别人是不一样的,虽然都是有好货、爱逛街,但是你的图是个性化的。
在每一个页面里的组合也是不一样的,大量的运用了千人千面的个性化的技术。在淘宝做这个事情是有天然的优势,整个算法经历了非常快速的变化,经历了很快的迭代过程。
2016年AlphaGo赢了李世石,把关于人工智能的应用推到了一个井喷的状态。为什么说阿里是一个非常好的做人工智能的地方?第一,所有的阿里数据都是结构化的,这是一个得天独厚的特点。举个例子,假如要判断一个剧好不好,有没有人去看、去买,通常的做法是用自然语言处理的方式,微博上去看一下,比如有一条这么写“人人都说《盗墓笔记》很好,剧情很好,演绎的很精彩,我看过后只能呵呵”,如果用自然语言抽取这样的数据,会抽取什么样的特征?“很好”,说明剧情很好,到了“呵呵”,这是什么鬼?机器很难判断。
但是电商不是这样,类、目、属性等都是非常结构化的。包括季节词的抽取、颜色词的抽取等,都有整套的机制保证数据的纯净性。所以基本的内容是非常结构化的,方便了建立知识图谱的便利性,这是第一个优势。
第二个优势,我们通过一个核心反馈系统做算法的训练,可以做这样的一个事情。举个例子,AlphaGo跟李世石下棋之前,就机器自己在这里面通过端到端的反馈系统学习,到最后能够打穿关。通常是这样的方式,今天实际上大量的调参工作可以让机器自己实现端到端的学习和优化,这是今年(2016)整个人工智能变化的很核心一个关节。
淘宝为什么合适做这件事呢?是因为搜索和推荐的反馈,很容易在用户的行为中得到反馈。通过这样的一个场景,又是大规模的数据和有限元解的反馈,使得这样的训练过程会变得非常简单。
这样去训练的模型,无论是知识图谱、兴趣图谱,应用的场景很多,还可以应用到新品发售、销量预测等等一系列的环节。所以这个里面就是有一个很好的人工智能和机器学习的应用场景。
第二个,另外举一个例子,这就是“问大家”了。我们在做社区化的尝试,希望通过解决用户的核心痛点问题,产生人和人的连接。今天所有人买东西的时候,都想看评价页面。那能不能再直接一点,通过算法可以提一个问题给买过的人,谁收到谁不收到,都通过算法去解决。
这样其实有几个好处。第一个原来的评价,很多都是默认好评,想得到更多的信息,但其实评价的人不会写上去。“问大家”这样的机制是算法去挑选分发的,会交给一个真实买过的人去回答问题。同样用机器学习、自然语言处理的方式,降低了提问的量,因为它可以找到原有的问题并归类过去,同时把这个问题提给一个既乐意回答这个问题、又没有被过度骚扰的买家,使得整个问和答的环节更加迅速。
这也是在淘宝,尤其到移动化时代以后,因为这两个特质——平面变小了、用户随时在线,使得机器学习和人工智能有大量应用的场景。
[移动端的创新互动]
这其实是想给大家看的第三个环节,原来看PC和互联网的时候,因为程序运营的载体是浏览器,而浏览器只给一个最基本的渲染能力。但移动客户端是一个富客户端,远远跳出PC互联网渲染能力,会基于GL、Web View等做出很好的内容,这对今天的年轻人是比较有吸引力的。
Poplayer,去年团队的创新大奖是发给了这个团队。他们做了这么一个Web View,能出现在任何一个页面上,还可以实现各种各样的效果,有很多的应用场景都是通过这样的方式去做的。去年(2015年)的密令红包背后也是靠这个技术去支撑,可以定义任意形状的Web View。
第二个大量尝试了Web 3D,典型的应用就是2016年的双11“捉猫猫”,必须找到不同的猫、必须抓它,通过摄像头可以实现更有意思的线上和线下的结合,也是大量的运用了Web 3D和LBS AR的技术。
接下来这个是一个预告,通过Web GL的图形库,我们会通过GS的方式快速做成不一样的体验和展示。所有的这些都可以通过GS调整,这个使得客户端开始变得生动起来了。
从2013年到2014年,整个无线团队做得核心的事情还是搬家。PC上什么样,至少能够在移动端实现,要把生态搬到移动上。但是2014年到2015年再到2016年,我们重新定义移动化的电商究竟是什么。这时候就不一样了,不再是PC往移动端搬迁的过程,而是重新定义移动电商究竟是什么。这是两个阶段,第一个是淘宝的无线化,第二个是无线化的淘宝。
无线化的淘宝,内容化、社区化、本地生活服务化。为什么做几个方面呢。有三个不同点,第一个随时在线,不像互联网时代坐到PC面前才可以上网。
第二个不同,LBS定位。因为手机随身携带,随时在定位用户的位置,所以这也是跟PC互联网很大的不同。
第三个点,在于更丰富的输入输出。所以这个时候去看,今天在移动互联网时代出来的新公司,每一家新公司基本上抓住了三个不同点中的某一个点,让它们有机会重塑一个行业。
我们定义移动化的电商是什么的时候,同样要从这三个维度来去思考问题。作为本质上的出发点,再结合现在的业务形态,去定义未来淘宝应该怎么走。这是年初时我跟逍遥子说的三个关键词。
内容化,我讲讲我的理解。过去的电商其实是一个追求效率的平台,在这上面所有的产品的塑造都是在追求购物的效率,搜索、推荐、营销,到详情页的页面,都是追求效率、满足信任感、快速成交、下单。店铺为什么这么设计,因为货架的成交效率更高。
过去整个淘宝的形态都是在以追求效率、成交效率为优先,但是当达到一个超过4亿的月活跃用户规模的时候,电商用户除了快速买到东西外,其实希望让用户更多的了解有什么东西可以买、有什么好商品可以发现,我觉得这是淘宝要解决的一个很核心的问题。因为它是全球最大的商品库之一,应该从节省时间的平台变成一个killing time的消费类平台。我们用不同的玩法,偏内容的方式拉动成交、拉动销售。
双12有很多网红直播,网红的直播在这个平台上构建了非常有意思的公域和私域的方式,真正变成了粉丝经济的消费方式。双11刚开始的时候,整个淘宝的服饰成交增速是非常快的。淘宝内容化之后,粉丝关系、网红的经营方式,使得很多网红今天已经变成一个品牌了,有很强的号召力。今天淘宝建立了很多通过粉丝运营的私域运营方式,个人商家自己的运营空间来运作自己粉丝的方式,使得成交变得非常有意思。
所以在内容化和社区化的过程中,我们思考的是怎么样实现淘宝做到小而美,小而美的方式应该通过产品的方式建立这样的一个运营自己粉丝的阵地,有不同的工具来建立自己和自己粉丝的连接,拉动最终的销售。所以内容化是媒体升级的第一步。
社区化是什么呢,淘宝过去来说是一个垂直领域的连接平台,它连接人和商品、人和店铺、人和品牌,但实际上在一些特殊的场景里,因为随时在线之后,可以增加人和人之间的弱连接,增加场景上人和人连接的属性,使得连接的属性增强。
其实我认为做分发类的APP,都会经历这样三种分发的形态,内容化、社区化和智能化。今天的淘宝不断改造内容属性的组织方式,每一代的用户触点技术发生变化的时候,从PC到互联网、从图文再到视频,每次变革的本质都在于信息组织和分发的方式,发生了变化。
第三,本地生活服务化。为什么做这件事情,我们看到今天电商的模型是一个中心化模式,它是一个非常经济的销售问题,可以全国销售。卖的人越多、成本越低、服务就越好,就可以卖更多,永远是这样的线性模型。在这样的模型下,其实不能改变太多,比如说时效性、物流成本。除了计划型的购买,每一个用户都还有很多及时性消费的需求,及时性的消费在这个平台里没有被满足。我们再做淘宝便利店、淘宝到家、淘宝外卖跟饿了么合作,其实都是为了满足周围三公里的及时性消费市场。
再看VR。我们从2016年初开始做“buy+”,buy+只是触达的方式,以及与用户沟通的方式。而我们想将全球最大的商品库从图文升级到3D,我们看媒体变化的过程从最早的文本到图片到视频,到今年火爆的直播,是很明显的演变。从一维到二维一定会进入到三维的时代,这是必然的发展的路径。
至于是不是VR还不好说,需要一个很长的时间周期验证,但是这里面一定会是说整个的表达方式从2D进入到3D。我们从年初开始做了很多的工作在降低建模的成本,能够让商家以简单的方式、最低的成本,得到效果非常好的3D模型。
第一种通过手机拍一圈,建一个3D模型的效果。第二个,就像这个展示的一样,实际上通过3D扫描仪,去扫描整个的商品内容。第三个是光场扫描。这三个方案从成本和精细度逐渐往上提升。手机的方案是零成本,3D扫描差不多在两百块钱左右,然后光场的就更贵了。
上图右侧是2016年五月份的时候做的VR全景直播的效果。
团队工作的核心还是希望聚焦在商品的3D建模,不断的降低建模成本。即使今天在手机上,其实大家去看这样的3D建模技术也会有很好的应用场景,展示也是一个很好的方式,无论是互动也好,还是更好的把它跟虚拟现实的结合,都有很多的应用空间。同样的一个包,可以投射到真实的空间里,可以看看这个包放在你身边是什么样的场景。
今年还有就是直播。直播我觉得是非常有意思的点,直播本身不是个业务,但是电商直播我觉得它是一个业务、秀场直播是一个业务,直播代表的是一种工具,甚至我觉得直播更重要的是一种思想。
怎么样在业务的过程中,跟用户有一个更简单、更实时的互动性?我们用这样的实时互动性去增加业务的黏性,去产生更大的价值。2016年开始淘宝直播,我们做了很多尝试,其实不是像映客做打赏,更多的是分量信息流、商品流,更多的互动因素到直播里,实现在直播的过程中买商品、发红包、跟主播互动。
淘宝变成了一个公域,而直播这样新的互动工具,进入到经营者和粉丝之间私域互动,这样一个经营的形态,我觉得是一个非常有意义的尝试。
这是本地生活里做的事情,就是外卖、到家、便利店,这一部分更多的是在业务和产品层面;它还能够赋能线下的商业经营者、便利超市等。通过今天的技术做物流规划,做线上的销售数据化运营,能够去服务周围三公里的消费者。在北京我们还没有完全开放便利店的服务,在杭州、上海,双11还有双12都创了新高,覆盖了整个的杭州城区和上海城区,每一个店会提供周围三公里的便利店外卖,这样一个及时送达服务。
前面介绍的都是在淘宝这几年做的一些尝试,核心来说其实是两部分:最开始是通过基础的移动的中间件实现了淘宝的无线化,“搬家”;第二个阶段针对无线的本质、特征,重新定义移动电商,尝试了几个比较有意义的方向,有两个已经成型和大规模的应用,包括机器学习和人工智能的应用和互动娱乐性的提升。有一些是现在正在做的,从业务和产品形态上的尝试,偏内容化、社区化和本地生活服务化等等。
[对未来的思考]
关于未来我们也有一些思考,今天实际上是一个非常有意思的时代,无论是从阿里巴巴1999年成立到现在,我觉得只经历过一次大的技术上的变革,就是从PC到移动。
这几年我们发现有很多这样的技术都具备这样的潜力,大概分为三种:一类叫新交互,从文本到图片,再到今天的视频,互联网的流量到2017年可能会有2/3到视频里。年轻人消费更多的是基于视频形态,2016年初的时候我也不能理解为什么直播这么火,为什么年轻人喜欢看直播,但它确确实实在发生,而且整个的媒体互动性要求可能会越来越多。
所以演进的途径,在2017年可能真会进入到一个视频互动的形态。再到五年之后可能真的进入VR和AR,一个更加3D的时代。我觉得在整个交互形态上,确实对整个技术和产品的构造会带来很大的影响,每一次技术上的变化其实带来的是本质上的变化。
我经常举的一个例子,当年看了一个视频,里面讲的是诺基亚、柯达很大的商业帝国一下子崩塌,都是这样的一个场景,每次的技术变化往往是从交互开始的。举一个例子,微软最早提出“云端”这个词,2004年就开始做,微软当时做了一个事情叫移动端的windows,它的设计还保留了原来PC时代的鼠标和双击,还有一个小的键,用大拇指可以操作,像鼠标这样移动,也可以双击。后来的结局大家知道,当苹果出来了以后,通过更平滑的人机交互方式,也就是触屏方式,基本上不会给上一种交互方式留下任何生存的空间。
当年在手淘移动化的时候也经常会讲的一件事情,究竟是做淘宝的移动化,还是做移动化的淘宝,这里面有很大的不同。每一次交互入口上的变化,都会带来未来很多产品设计、信息分发变化,交互在未来的一段时间里一定会带来这样的变化,无论是2017年的短视频,还是再未来的AR、VR等等,2D到3D一定是一个必经之路。
这里面无论是计算机视觉和计算机图形,可能在接下来地一段时间里都会是一个很大的应用场景和爆发点。
第二,在计算领域,假如今天进入到VR的时代,云计算对网络传输有更高的要求,对存储有高的要求,整个计算上也同样会产生更大的要求。未来随着人工智能的兴起,可能整个的走势会更加明确的一分为二,平台往下沉,提供从CPU到GPU甚至定制计算的硬件解决方案。
再到上面数据处理平台,这之上各个垂直领域的数据算法解决方案,人脸识别、语言识别等等一系列解决方案等。上面的应用可能真的就跟平台之间的关系,因为能够端到端的训练,所以找一个场景,依托平台的方案,形成一个新的业务形态。CNN出来差不多十年到二十年的历史了,DNN是2013年还是2014年第一次看到这样的论文,再到RNN,算法的迭代也非常快。
我相信在未来的一段时间里,可能大的前景路径是三个创新:新的交互形态、新的内容和媒体的升级、新的计算方式,平台如何下沉,不断的从垂直领域再到数据计算平台,再到下面的芯片升级。
今天其实有很多深度学习的芯片,都是把深度学习里面非常复杂的动作放在芯片上完成。即使做这一件事情,就使得深度学习的计算方式有一个很大提升,接下来可能还包括存储、网络升级等过程。所以这是我认为可能在接下来的十年里很有可能发生的事情,VR、AR这个事情会持续发展一段时间,但是至少今天人工智能的大规模应用很快就能看到。
技术的进步永远会超出我们的想象。2013的时候,我带阿里无线事业部,年初的时候我们定了一个目标,到年底要实现移动化35%的成交额、手淘上要完成35%,结果这个目标刚定完就实现了。每次技术上的变化都会超出我们的想象。
Q&A:
Q:怎么看“语音购物”?
南天:语音是一种输入方式,很早在淘宝上就有语音搜索。其实语音这件事情要看消费场景,假如说现在要买一件衣服的话,绝对不会用语音来消费,但是其它的场景会有可能,比如说开车的过程。
Q:与微信小程序的区别?怎么看Amazon Go的线下体验?
南天:我们跟微信还是有很多本质上的不同,阿里所有的应用是互联网的终点应用,而微信包括百度扮演的是互联网的起点应用。当你想到用手机上网的时候,可能第一时间想的是搜索和通讯的需求。阿里的淘宝是一个垂直领域的起点,想到电商的时候会想到打开淘宝。所以起点的应用和终点的应用是有很多不同的。
起点应用的用户规模是很大的,但是终点应用的价值更大。阿里的应用跟终点更近,比如说担保的交易、运营的规则,在阿里上买东西会更放心,因为电商的本质就是在解决信任问题。解决信任问题无非这两种方式:要不然是B2C做规则,把规则做到极致就是一个B2C的方式;要不然就是社群,通过社区化的方式。
小程序今天不可能在这些点上去解决你的问题,它其实是连接和分发的平台,还是顺应着这个起点在合作,所以我觉得本质上非常不同。从2013年的时候,那时候微信已经很大了,而且确实也在做一些跟电商看起来很相关的东西。比如说微店,还有公众号有一些很相关的东西,到2013年左右的时候已经非常清楚,哪些是微信不能做的,哪些东西是我们不能做的。因为从整个业务的定位,就决定了很多往外的延展没有像想象中的那么容易。比如阿里打假跑掉的店都去做了微商,还有就是食品等等这类型的需求。
其实产品都是有边界的,这个边界是不是能够把握得住,这是很重要的一点。所以在这个点上我觉得其实我们相当于都是在结合自己的优势,不断的能够提供更便捷的服务给用户,但实际上方式和方法不太一样。
第二个问题,Amazon go的话题,其实大家对未来的思考,我觉得路径上是有一点不同的。今天并不是说要单纯的去改造一个线下的销售体验,像支付也不需要去排队了。今天阿里思考的事情,是怎么样把线下的销售和线上的销售能够更好的整合。
今天讲到家、便利店,它是一个初级的形态,既可以在线上买也可以在线下买,怎么样把线上和线下的库存打通、把线上和线下的会员打通、把线上和下的服务打通,还是要通过技术赋能合作伙伴。原来是综合成本经营最低吸引了商家,现在用户也越来越多,这是一个良性地循环。
今天提供的工具不再仅仅覆盖线上的渠道,不仅仅在销售环节、会员管理环节、品销一体化环节,怎么样来做这个事情。马总讲新零售和新制造是一个更大的话题,需要花很长的时间来去做,但是也代表着今天我们去看待这一件事情,并不是在一个点上去改变。
Q:怎么看电视?
南天:有一个观念我是认同的,未来互联网的入口可能会别不同的硬件入口所分化掉,但是会不会是电视,这个现在还没有结论。现在其实电视的打开率非常低,而且人群基本上是两类,一类是孩子,一类是老人。绝大多数互联网的核心使用群体,即使在家里的情况下,也更习惯用pad、手机来去访问互联网。
未来一定会出现IOT对整个互联网入口的分化,智能硬件我觉得是一个很好的场景,电视还不好说。今天我们在尝试IOT布局,这个产业还早。
Q:安卓低端机的用户体验?
南天:首先说整个的程序设计并不是以市场上的最高配置去做设计,这是第一个出发点。我们在看性能极限的评测,是拿整个市场的平均水平甚至稍微低一点。比如说更多的去选红米或者是小米4这样的机型,来去作为安卓的极限设计。
我们确实会面对很多的挑战。大家也都知道,所有的安卓手机厂商都在做很多的定制,兼容性有非常多的问题。刚才讲到VR,我们今天做buy+也同样面对这样的问题。CPU够了可以跑4K的视频,但是屏幕又不够。等屏幕是可以跑,时延变小了,但是CPU又不够,又不能跑高清的视频,这确实是今天面对的很多移动客户端的挑战。
我们的处理方式还是要分级。高性能的设备,会是什么样子的。中间的设备,去看它的核数、内存。有一些功能确实在某些手机上跑不了,那就算了。但是确实每一个开发,也不是说要把整个软件都耗尽。
从另外一个方面讲,每一年都会有硬件的能力被软件耗尽,从而进入到下一级硬件的升级。我觉得到现在为止还是会不断面临的话题,会持久通过升级去解决软件耗尽的问题。我们的设计不会以一个最高的硬件标准去做整个设计的标准,也不会去把所有的机器看成一样的情况,而是会做分级的处理,但是客观的规律确实会持续进入到不断换机迭代的过程。双11之后我们也跟腾讯、百度、华为等做一个绿色联盟,看是不是能够把安卓的指标量化,帮助我们开发性能和体验更好的APP,这个需要整个产业链一起做。