2015 年 3 月 21 日,在以《O2O 技术架构与实践》为题的第三期又拍云 Open Talk上,美团供应链平台系统负责人陈义宏、功夫熊 CTO 韩立新、58同城系统架构师孙玄向大家分享了自己对今后O2O 技术架构趋势的认识以及解决方案。美团技术专家、供应链平台系统负责人陈义宏在活动上作了题为《美团O2O供应链架构设计简介》的演讲,以下是分享实录:

1、供应链系统简介

大家知道,美团是以团购起家并作为核心业务。之后增加了一些支付、商家管理,包括验证、凭证方面还有其他的等业务。供应链系统主要负责商品的生产和商品的运营,其中的这个“商品“指的是我们本地的生活服务的各种套餐、代金券和其他的业务。

关注过团购领域的朋友们应该听说过“千团大战”,美团之所以能在这样的挑战中活下来,一个重要原因是我们的BD比较牛。这一块的工作流程是:在BD与商家谈妥之后,会给商家在美团建立一个帐号,签订合同。以便在之后把谈妥的这些东西变成大家在手机APP或者是网站上出售的东西,比如团购券。从BD谈妥单子,到消费者能从网页上买到商品,这中间的过程都是供应链完成的工作。

它的定位,是给美团是正在茁壮成长的业务提供支持,因此它的建设是一步步循序渐进的。

image.png

2、供应链系统的发展演进

美团的供应链系统的架构不是很复杂,它是随着公司创立到在现在的各个发展阶段而一步步建立起来的,架构有一个不断演进的过程。

2.1 手工阶段

系统初创是在2010年,当时我们是模仿美国的例子,一天一单,全靠手工。单子上传上去,七天之后才可以在网站上看见。流程上有编审的程序,不但要审核,还要专人进行编辑。这种情况延续到2011年,高层进行了一个星期的考量之后,决定一天要上多单。

2.2 从在线化到自动化

从这时起,我们要求每天上单量达到250,并相应安排了250个编辑。因此,公司开始建立一个合同和CMS,就是替换成编辑的手工工作。CMS是结构化,有三大块,原来一个人的工作分成三个人来做。做完这个之后一个人可以上11单。

image.png

和滴答团、拉手、糯米竞争时,美团并不占据很大优势。公司针对性地调整了策略,大幅度增加每天上单的数量,计划要一天上几千单。就一个单子和商家谈好之后,要尽快上线。

之后,公司基本上把整个关键系统重新写了,把每一个看见的元素都属性化。具体做法,就是在同一属性的情况下做了一个模板的概念,模板可以根据不同的品类具有不同的属性。

我们结合前端一起根据我们模板配置,根据配置自动输出目录界面的一套系统,就是动态表单。输出基本上每一个属性都有一个ID,有一个值。后来又节省了大量编辑或审核人员的工作,又裁掉了大部分的页面美化工序,效率得到了大大提升,做了非常多的自动化的工作,上单时间减少到2天。

这样,到2014年9月份,我们的上单量一天接近1.4万单/日。编辑数量也从最初的240人缩减到10人,上单时间一般都是在一天之内。这之后,美团奠定了团购领头羊的地位。

image.png

3、向多业务支撑化发展

3.1 平台+差异化

在如今,整个行业都处于不断的快速变化中。团购现在已经无法支撑一家比较大的公司了,我们很多的竞争对手都已经开始涉及新业务,比如点评投资饿了么,主打外卖。美团也要做同样的发展,所以就有了美团外卖和早餐的出现。此外还有一些新的品类垂直运营,像KTV、并作项目,现在有独立团队在运营;酒店和售票的领域也进行了拓展。现有业务都会在飞速发展中,包括一些新的形式,像到家服务,以及代替代金券的满减。

以上这些的新业务,给供应链系统提出了挑战——从单一的团购到解决多业务支撑,我们该怎么做?首先应该对它进行重新的梳理。对比有些在供应链系统上投入几十个人团队的企业,我们现在人员要少得多,2013年只有两个人,如今也只有11、12个人在做。因此现在需要改变之前这种粗犷的、不考虑系统内部设计的快速迭代发展方式。

因此,我们分析了美团内部的系统,比如我们的外卖、早餐、酒店,寻找它们上单的流程存在哪些共性和差异。差异基本上都体现在流程和展示方面,我们就对这些差异进行结构化的定义,对它们进行针对性的优化。

image.png

比如现在有闪电上单,BD上单,销售人员和商家谈妥了之后自行上单。另外我们还有商家自助上单。虽然它们的流程不一样,但是他们的底层相同的。我要做的就是这种统一平台+差异化流程的系统优化。

前面提到了动态表单,它其中的一个问题就是属性绑定。而当我们上单渠道多的时候,同一个属性在不同的上单渠道上显示的值的数量可能不同。现在的方法,就是把这些值剥离开来,变成一个AC(属性中心),和一个DF(动态表单)。我们会做各种上单录入的模板,每个渠道都不一样。而且会为每一个属性在不同的渠道定义不同的显示项,再根据显示项来产生组成我的模板,再把模板输出到具体的录入的过程当中。

同时,系统的CMS也是根据属性去生成页面。我们会在保持我们产品中心非常平台化的情况下,做一个差异化的适配。以做KTV的上单系统为例,因为商家可能比我们理解的更深入,因此就让他们定包厢、时间和酒水,而适配我们来做。在价格、结算和库存这块都有以产品为中心,输给我们的下游。通过我们系统屏蔽了各种不同商家渠道和不同业务的差异,脏活累活我们来做,给所有下游系统的工作提供了很大的便利。

3.2、产品中心的结构

这个是我们的产品中心,这是它内部的结构,我们会做一些抽象,比如说消费单元,一个人最终能够到商家那里去消费的东西。比如理发店,理发就是一个消费单元,理发的时候还给你掏一下耳朵,那也是一个小费单元。

image.png

至于销售单元,这个和用户最终享受到的服务有一定的关系,但定义的方向不同。从销售的概念来说,比如你买一台iPhone,销售单元就是iPhone+耳机+贴膜之类,而这其中的消费单元就是单独的手机/耳机/贴膜。销售单元就是一个打包,是消费单元在网站上售卖的不可分开购买的一个抽象。所以我们有了销售单元之后,我们的库存是做在销售单元之上。

团购是一个类型,套餐是另一个类型。KTV可能没有物流信息,但是他有预定信息,因此,我们可以在产品层次上根据不同的业务线做抽象。而产品作为我们最终出售的东西,它有一套销售规则:比如这个商品的开卖时间或者抢购时间;它的购买渠道,比如这个套餐只能在手机端购买在PC端不行;还有购买规则,比如一个手机号只能买一个,此外还有消费规则。这样,通过整个这一套体系,基本上能够在底层支撑我们现有旅游、外卖、酒店、物流的多元化业务,团购自然不在话下。

这就是我们现在支撑多业务的平台+差异化的基础,在此基础上是一些流程。每一个系统将来要接入一个新的业务的话,它只需要通过我们的AC+DF一个界面,经过我们的流程,再接入我们平台化的东西,这个业务就会得到系统的支持。