马云爸爸曾说过,正是因为自己不懂技术,所以阿里的技术才强,因为我不懂,我才会好奇敬仰地看着他们说,他们怎么说就怎么做。
据说淘宝最早的版本,就是阿里小二拿了马爸爸的一张信用卡去加拿大买了一个开源的系统,当时的淘宝还只是个社区。
不过,马云说的很轻巧,背后的程序猿却着实不轻松。罗马不是一日建成的,无论是每年挖空用户心思、伤透技术脑筋的双 11大考,还是淘宝从 pC 向移动端的转型,对于程序猿们都是极大的考验。
阿里巴巴集团无线技术资深总监庄卓然(花名:南天)告诉钛媒体,他自 2009 年加入阿里,在阿里的将近 8 年时间里,从一线工程师,到带领整个技术团队,再到做产品、做业务,他成长的每一个节点都与阿里技术的进化史有着很大关联,拿他的话说就是临危受命。
南天几天前做了一场有趣的分享,聊了聊八年救火史里那些有趣的幕后故事:
程序猿的阿里八年
阿里巴巴集团无线技术资深总监庄卓然(花名:南天)
南天最初是在淘宝负责技术架构,2011 年,三淘分拆(淘宝分拆成一淘、淘宝和天猫),他被调到了天猫,负责带领天猫的产品技术团队。
2013 年是阿里一个重要节点全面转向无线。当年,无线业务被寄予了很大期望,阿里从各个 BU 里抽调精兵强将组建成无线事业部,南天也是在那一年被调到无线事业部,开始负责手淘的技术。
去年,阿里合并了手淘和淘宝,之所以做这样一个举动,南天也道出了其中的缘由。13 年向移动化转型的淘宝,其实是处于一个非常被动的局面下,当时很多的小的移动电商规模已经做到了百万量级,当时淘宝想的是先快速的把业务搬到移动端上,至于移动化的电商到底是什么,当时并不明确。
后来,随着淘宝 DAU 的不断攀升,移动端的成交量已经占到了 60% 至 70%,所以单独一批人来做 pC 的意义就不是很大了,所以阿里决定不再区分 pC 和无线,将二者合并。目前包括闲鱼在内的很多阿里系 App,移动基础设施都是由南天的所在的团队提供的。
2016 年,南天又兼起了优酷团队的技术平台负责人。在他看来,淘宝和优酷的业务类型是非常像的,本质上都是通过做内容的分发,来撮合供需关系,只不过分发的内容会有所不同。
淘宝的技术演化之路
淘宝技术演化之路,放到整个互联网领域去看,是很具有代表性的。目前整个阿里底层的计算、存储等基础设施,都是从淘宝这个体系中慢慢演化出来的。
2003 年,阿里开始做淘宝的第一个版本,南天听说,当时就是阿里小二拿了马云的一张信用卡去加拿大买了一个开源的系统,这时候的淘宝还只是一个社区,就只有一个十几个人的团队围绕着这个开源系统做开发。
随着业务规模的快速扩大,出现了很多平台都面临过的问题,存储、IO 环节的难题。为了更好地去管理 IO、存储和网络,阿里做了一个大的底层的架构的改造把淘宝迁移到 JAVA,在南天看来,很多技术架构上的调整都是围绕着两件事情:
第一,当业务的规模大到不能通过简单的加机器的方式去做调整的时候,通常就需要去做架构的改造。第二,当开发的规模大到所有人在一起开发一个东西时,会互相影响的时候,也需要去做架构的改造。南天在 2009 年加入淘宝的时候,整个淘宝的系统服务器做了第一次深化。按照他的回忆,800 多人的技术团队,分不同的研发小组,有做交易的、做会员的、做商品的,由于有很多相互叠加的功能,一旦哪一个应用出现了问题,就会对所有的模块产生影响。
正是因此,当时的淘宝进行了 SOA 改造。SOA 的核心,就是把所有业务做分层,进行垂直的和水平的切分,也是到那一年,才有了淘宝的第一个雏形。
到了 2014 年,云时代开启。在技术团队的工作中有一项重要任务,即每年双十一的零点,都会为了支撑峰值去加大机器资源,来保证在零点能够抗起一个比较高的交易量,比如,今年的交易速度就达到了 17.5 万每秒。
实际上,在零点之外的时间,尤其是下午的时候,并没有很多的人流量,这就是造成大量机器被闲置,产生资源浪费的情况。
为了解决这个问题,阿里开始采取混合云的部署方式,用自己电商集群里的所有资源去抗起交易量。南天举例说,设定一个几万每秒的基本成交量,剩下的通过云计算的方式弹性的去做资源的补充,这样,峰值以外的时间,机器的资源还可以拿去做其它的事。
从黑色五分钟到 1207 亿的背后
南天说,2011 年到 2013 年在天猫的这三年,是幸运又悲催的三年;同时,每年的双十一都是一次考验,而每一次大的改造,都是技术能力上的一次提升。
2009 年双十一出现的那一年,还没引起太多人注意,2010 年就发生了很大的变化。这一年,整个淘系面临的全线资源枯竭,双十一当天整个带宽无法支持正常运作,当时技术团队都考虑是不是要关掉一些省份的访问,或是把彩色图片变成黑白图片。最终还是采取了折衷的办法,把大图变成小图,以支撑能够让更多人访问。
2011 年,可能是双十一最混乱的一年,还出现了著名的黑色 5 分钟。
每年双十一,技术团队都会做一个系统的流量预估(系统要抗住每秒多少的成交的能力),比如过了 11 万笔/秒,系统如果抗不住,就要做一个自我保护,让超出 11 万笔/秒的那些用户去排队。南天说,双十一的技术核心,就是对系统里每一个应用的服务能力做一个精确的评估,要有一个很精确的保障机制。
2009 年、2010 年被消费者广为诟病的就是,商家都是把价格抬高后再打折,所以 2011 年双十一想要解决的就是价格的确定性问题。
所以那年双十一就变成,商家告诉平台要打几折,平台根据原先的价格数据来帮商家修改价格。但是,在零点刚开始售卖的时候,技术团队发现,管理优化定价的系统挂掉了。
这也是我们双 11 每年说的,没有经过双 11 考验的系统在我们眼中都是不稳定的系统,都会出问题,那是那个系统第一年的亮相,果然不出所料的挂掉了,任何一个你担心,你没有去验证的一个地方往往就会出问题。南天笑着说。
所以技术团队当即做了一个决定,逐个把价格刷新到商品库里去。但是,预案的那一行代码又出现了问题上。
你把一个数据读进来做修改,再更新回去,在更新的过程中,那行对应的接口的就会有一个问题,没有设置的值默认为空。
这就导致了,价格改对了,但是商品的颜色、尺码却不匹配了。
于是那一年的双十一就出现了著名的黑色五分钟,一方面价格一片糟,有的对有的错;另一方面,有的价格好不容易改对,东西也卖出去了,结果商家这边却看不到卖出去的东西是几码、什么颜色。
当时有人就提出,打开商家修改后台的系统。让商家能够自行更改价格,但南天当即反对。因为解决A问题犯了一个B的错误,现在我如果为了解决B的错误,再把A的问题拿回来,等于今年什么也没做。在南天的坚持下,差不多在早晨七点左右的时间,终于恢复了所有的信息。
那一年还有很多有意思的关键词出现爆仓、自燃,2011 年的时候很多商家打印出货单,打印机就自燃起来了,好几个商家发生这样的事情。
2012 年,吸取教训的天猫,开始从每年 5 月 31 号就正式立项,做双十一的准备,在每年的业务突破方向上设立产品,做针对性的系统架构的升级、改造优化。
有一个直观的数据,比如说 2011 年的时候,整个公司准备双 11 的预案,一共只有 20 个,预案代表什么呢,当出现A情况,要做什么事情,当出现B情况我要做什么事情。但是到 2012 年的时候,整个公司 800 个预案,系统整个的精细度已经做得非常深了。
可是,2012 年的双十一又出了问题,阿里内部称之为最长的 180 分钟。这一年,商品的数据库的网卡超出了上限,爆掉了。那一年已经代表了阿里在交易系统上稳定性达到一定水准了,但问题依然来了。那真是非常长的 180 分钟,180 分钟振荡的过程中产生了一系列的问题。
伴随着问题的不断显现,预案也逐年增多,2011 年 20 个,2012 年 800 个,2013 年到了 2300 个。
这其实是一个很恐怖的数字,因为它不是要保证 2300 条的准确性,是要保证 2300 条的排列组合,不是要测 2300 次,是要测 2300 个排列组合。
为了应对这个问题,技术团队想出了一个办法,是不是能够真正的去模拟一下消费者在双十一的那一刻?
于是,那一年技术团队花了很多的精力去做全链路压测,模拟所有用户行为和访问数据,然后把这个数据打到系统上,去模拟双十一那一刻。然后在里面看这个预案生不生效,能不能抗得住,这个系统挂了,那个系统有没有问题,整个的链路就有办法能够还原和测试。
全链路压测做的事情,对阿里有着里程碑的意义的一面,意味着我们不再按照说这个事情会不会出问题、那个事情会不会出问题,去一点点评估。而是我们直接模拟那一刻,去看到底哪里出问题,我们再去修改,这样的逻辑顺了很多。
在经历了几年双十一的南天看来,双十一对于阿里来说就是解决两件事:第一个,系统的伸缩性有没有上限,是不是能通过快速的加机器或者扩容,去解决系统容量问题;第二个,所有为系统可能会发生的情况做的准备,是不是都能落实到确定性的层面上。
但对于接近上万人的团队,要在每个点上都保证不出问题是很难的,所以全链路的压测是一个标志性事件,对于上述两个问题有了解。
pC 到移动端,技术思路怎么变?
从 pC 时代一路走来的淘宝,曾面临过各种的不适应。三个要命的问题:第一个是网络带宽的问题;第二个,在大规模的业务迁移中所涉及到的架构上的改造,第三个,架构灵活性上不足。
当时,南天面临的挑战是,pC 时代的阿里最核心的技术竞争力体现在研发效率上;但移动时代速度上的优势变的不奏效了,App 必须先要搞定用户安装。
南天和他的团队把客户端版本手机淘宝分为两个时代:App 1.0 和 App 2.0。
App1.0 时期解决的是便捷性问题,当时的版本除了搜索下单,什么都没有。pC 时代一个生态属性的电商平台,退化成了一个工具,南天这样说。这让阿里的很多业务都无法得到很好的体现,所以产品升级就变的势在必行。
跟 pC 时代不同,App 的孤岛效应非常明显,这是阿里的技术团队把所有功能都聚集在一个 App 中的出发点。
电商相比社交还是低频的,所以需要把所有跟生活消费有关的东西,放到一个 App 里去,让它能够产生更多的业务上的协同效应,通过更多的低频的业务的组合去打造一个高频的入口,这就有了手淘的 2.0 版本。
过去电商讲究的是效率,这是淘宝早些年一直在追求的。但是平台规模上升到超过 4 亿月活跃用户的时候,留存就变的更为重要。淘宝的思路变成了从 save time 到 kill time,用内容去拉动销售。
大批垂直电商平台的出现,也在不断蚕食淘宝的领土,所以,淘宝也在尝试去做大平台上的小而美。比如,淘宝让个人商家可以在自己私域空间来去运营自己粉丝,提供给他们不同的工具,来帮助商家建立起与粉丝的连接,最终拉动销售。
而做社区的逻辑是,在移动场景下,用户可以随时在线,这意味着,可以通过增加一些人和人之间的弱连接,来使得场景中人和人之间的连接属性增强,最终的目的也是为了让用户 kill time。
移动场景带来的另一个变化是,屏幕越来越小。在移动场景下,屏幕变小,人工能够运营的东西十分有限,而机器学习和人工智能就成了唯一出路。
人工智能在淘宝上有两个典型的应用场景。
第一个是搜索和推荐。比如手淘上的有好货,达人和买手挑选他们认为好的东西,放到这个商品库里,再根据用户的兴趣图谱做推荐。这个模块的入口图,每个用户看到的都不一样,用户看到的图片都是有好货里跟自己相关度最高的商品。
第二个,就是问大家很多用户都用过这一功能。提一个问题给买过这个商品的人,谁能收到,谁收不到,都是通过算法去完成,让问题可以给到一个既乐意回答、又没有被过度骚扰的买家。问大家还会通过机器学习的方式,把大致相同的问题进行归类,来降低提问量。
在南天看来,只要是做分发的 App,都会经历内容化、社区化和智能化这三种形态。而从 pC 到互联网,从图文再到视频,每一次用户触点技术发生变革的背后,本质都在于信息组织和分发的方式发生了变化。
在南天看来,这个过程和媒体变化的过程类似,从最早的文本到图片到视频,到今年火爆的直播,是很明显的一个演变,也就是从一维到二维,未来一定会进入到三维的时代。
但未来的内容形态到底是不是 VR?需要一个很长的时间周期验证,而阿里的技术团队正在尝试通过 Buy+ 产品去验证。
本文首发钛媒体,编辑/谢康玉
济宁IT新闻