这个部分主要讲一下汽车之家电商系统的架构发展历程,每个阶段的业务状况、技术挑战和技术体系的应对策略。
互联网大环境在 2011~2013 年经过千团大战、电商大战 [1] 之后,电商业务已经成了互联网流量变现除广告模式外的另外一块战略高地。在 2013 年“双十一”期间,汽车之家推出购车服务,将交易环节作为一个重要发展方向 [2]。
在业务起步阶段对技术的要求就是快速迭代上线,验证产品可行性。在满足业务日常需求的同时,技术架构上的思考也未停止过。考虑到未来电商系统的可扩展性,参考业界阿里巴巴的技术体系,2014 年开始研发技术栈也逐步从 .NET 体系变成 Java 体系,并与 2015 年 5 月 30 日完成所有的应用切换,上线完整的在线网上购车平台车商城。
随着电商业务迅猛发展,技术人员的增加,到 2016 年技术团队已经有了上百人。单体架构之痛迎面扑来,就以一个前台的商城 git 项目而言,就几乎近 30 个 Maven 的子项目,遇上需求并行开发,经常出现代码的合并冲突、需求上线等待、线上慢 SQL 等问题,整个系统的开发效率和系统稳定性都变差了。
这个时候的系统支撑面临巨大的挑战,系统架构必须升级进化。我们开始做分布式战略,把原来的单一系统拆分成多个高内聚,低耦合的中心化系统。也就是现在的用户中心、商品中心、订单中心、促销中心、优惠券中心、商家中心,每个独立的系统可以独立设计、独立接需求、独立发布,整个研发效率和系统稳定性都上了一个台阶。
在这个阶段我们在技术上完成支撑汽车电商百万级商品系统 [3]、订单系统 [4]、优惠券系统 [5] 构建,并完成了应用的全部上云 [6]、自动化测试平台构建 [7]。
同时在业务上探索了自营整车电商模式 、开放平台模式、B2B2C 模式、报价单模式、顾问模式、TPCC 模式、平行进口车售卖等各种经营模式。
电商发展的速度实在太快了,到了 2019 年公司内已经有了多种在线交易模式,比如旅游类、车品与后市场服务类、积分兑换类等。公司基于发展战略决定搭建电商中台,一方面为了集中公司优质的产品资源、运营资源,打造具有影响力的垂直类电商交易平台,另一方面也是为了合理管控技术资源,实现电商系统的统一。在此背景之下,我所在的团队承担起了搭建电商中台的任务,由于各个系统间的业务形态、技术架构差异很大,所以我们面临的第一个问题就是用什么方式能够实现交易类系统的整合。
为此我们一方面开始熟悉不同业务场景下的交易系统的现状,另一方面也在技术方案上进行着思考和讨论。最终我们选择了“以数据归一为基础,提供标准化中台服务,从下层向上层逐个系统整合”的方案。
综上所述,电商业务中台在建设过程中抽象业务线的共性能力以及共性能力的复用性设计与实现尤其重要,业务中台要做到能力复用和灵活多变才能让中台建设在企业的发展过程中起到降本增效的效果。系统架构必须升级,这就进入了平台化架构阶段。
什么是平台化架构?就是要把基础能力跟每个业务方的特性业务拆分,要把业务和业务之间的逻辑进行隔离。平台化最核心的是业务抽象建模和系统架构的开放性,业务抽象解决共性的 80% 问题,系统架构开放性解决 20% 的个性化问题。
在参考 Thoughtworks 给出的《现代企业架构白皮书》的方案 [10] 以及业界的互联网公司美团 [11]、有赞 [12] 的中台解决方案,我们给出了适合之家电商平台的解决方案:通过领域驱动建模抽象出电商业务中台多业务线的共性能力并预留扩展点,然后利用服务编排对共性能力进行组合。其原理如图所示:
每一个在电商业务中台运行的业务可以理解为:业务身份 + 业务流程 + 规则,业务流程通过流程服务编排来实现,扩展点通过扩展点机制来实现。在整个交易流程中 B 端的商家入驻、商品发布相对通用,不同的业务的主要流程差别体现在订单收单前以及支付后的订单履约,这些流程往往都是需要定制化开发,为此整个解决方案核心在于订单平台化的架构设计。
如图所示:
整个订单平台化架构分为四层,从下往上依次是:
基础设施层:提供存储、消息、RPC 等中间件。
基础服务层:按域组织的基础服务、域服务内针对不同业务的差异提供扩展点。
业务能力层:串联不同域服务形成可供外部使用的业务能力,比如下单、支付等。
业务流程层:对业务能力进行编排、形成订单交易流程、完成订单交易过程。
业务层:制定业务身份、扩展点实现以及业务流程配置等,实现不同业务差异。
整个订单平台化架构升级实践过程,总结为以下几点:
业务身份的概念最早由阿里巴巴提出,业务平台在对各业务同时提供服务时,需要能区分每一次业务服务请求的业务身份要素,以便提供差异化个性化的服务;因此需要对企业各业务的身份和特征进行建模和区分,其产出即为业务身份。业务身份具有唯一性,业务身份类似于身份证号码一样,需要保证在整个业务中台上必须是唯一的。
有了业务身份业务中台就可以针对抽象这个业务流程和业务规则,并基于业务身份实现服务路由、业务监控。其次业务身份就类似 SaaS 系统中的租户的概念,不同的业务方在中台通过业务身份进行数据权限隔离,这样能保证各业务的运营只能看见自己业务部分的数据。
比如在汽车电商领域,业务身份我们通过人、货、场三个维度进行抽象。人的维度有是否开通会员、是否是认证车主、开通了哪些增值服务等;货的维度有商品类型(整车、实物商品、虚拟商品等),交付方式(核销、兑换、4S 店交付)等;场的维度有线上下单、线下下单、在哪个线上商城下单,在哪个交付店下单、商品投放渠道来源等。根据这些维度确定了唯一的业务身份后,每笔交易的业务流程就确定下来了。
电商业务中台整体采用微服务架构、将整个电商系统拆分为商家中心、用户中心、商品中心、促销中心、交易中心、履约中心、售后中心。每个中心在逻辑上分成了带有业务属性的能力和不带业务属性的基础能力两层。基础能力层关注领域模型的实体属性、行为、事件,不会随着业务的需求调整而发生变化,聚焦于行业共性行为、收敛业务模型,保障基础服务的稳定性。带有业务属性的能力是在基础能力层之上通过服务组合、流程编排之类的技术手段,构成面向业务的解决方案,完成业务共性到个性化的转变。有两种常见的做法如下:
其一是使用硬编码来实现。随着不同业务线的逻辑不断增加,各个业务能力调用的基础能力会变得盘根错节,很难做到可配置、灵活化。当发生需求变更的时候,测试人员很难评估修改的影响范围,回归测试的成本周期长,这样很难真正做到敏捷开发、快速响应业务。
其二是使用服务编排。通过服务编排现有微服务进行服务组合服务,然后一次性的返回前台需要的信息。不同业务线的能力执行不同的流程,通过图形化、XML、JSON 的编排框架,即可以让流程清晰,也可以屏蔽代码细节。
服务拆分的好处无需赘述,但是要实现业务价值,不是看单个服务的能力,而是要协调所有服务保证企业端到端业务流程的成功。业务中台是企业业务的集成平台,集成技术必须松散地耦合组成流程的应用程序和资源,否则流程的逻辑将被硬编码到特定的技术平台中,更改可能代价高昂,从而违背业务流程复用的整个目标。
在平台化架构实践中我们将那些影响业务流转的核心配置统一提取出来,并按照业务身份进行属性值的配置,确保整个交易流程链路的标准统一,减少对交易核心链路代码的频繁修改,不同业务根据不同的属性值在相同的交易流程中的不同节点进行灵活切换。
比如:商品是否自动推送到资源池、下单是否需要填写身份证、支付成功是否推送线索、超过 N 天未确认收货是否自动确认收货完成等等,所有配置项均通过配置管理后台进行统一维护。此外,对于电商中台中包括业务身份在内的所有元数据,我们也通过配置管理后台进行了统一的管理并提供统一的 API 对外提供查询服务。
从业务和技术的多维度出发,针对日常工作中出现的常见业务问题或者技术问题,研发出各类实用便捷的小工具,实现工作效率的提升、问题的快速定位等效果,比如:消息分发、检索工具;商品优惠价格速算工具;商品展示价格比对监控工具;缓存管理工具;一键降级工具等等。随着大家工具化意识的不断提升,这类小工具不断的出现并汇集在一起,就构成了研发人员必不可少的工具箱。
电商系统的性能指标、资源利用率指标、调用量等系统维度的指标通过公司云平台能够实现统一的监控,对于业务数据同理,我们需要提供统一的业务数据可视化工具,为业务方提供做相关决策的参照依据。
为此,我们采用实时 + 离线的方式开发了订单可视化大屏系统,通过这个系统能够按照业务线、订单状态、区域等多个维度实时监控订单量的变化情况。如果固定时间段内的订单量波动超过了我们事先配置的阈值,还会发送钉钉消息及时通知业务方关注。
此外,对于离线数据,我们也是按照日、周、月从多个维度进行数据统计分析,最终会以邮件和办公 App 消息的形式发送给业务方,这些手段的目的都是为了实现电商数据的可视化管理,为业务使用方提供更多便捷的工具对电商业务进行全方位的管控。
我所在的这个团队在公司内部的电商领域是一个专业的团队,多年来积累了很多技术以及产品运营层面的经验。在整个电商中台的建设过程中,我们也是将这些经验以及日常问题的解决办法,作为一种财富不断的沉淀,以往都是采用 wiki 这种文档管理工具进行汇总。
为了能够让这些知识产生价值,我们也开始搭建自己的电商知识库系统,将所有能够作为知识沉淀的内容,按照不同的领域分类录入到知识库系统内,整套知识库对外提供了快速检索和定位的功能,能够服务于技术人员、产品运营人员,进一步培养大家知识积累的意识,提升大家的工作效率。
二十年前,互联网刚开始在中国流行,信息都是通过资讯的方式展示,几乎没有在线交易;十年前,互联网经过快速发展,消费者可以在淘宝、天猫、京东为代表的在线商城上购买自己需要或喜欢的商品进行在线交易;而如今各种电商形态不断涌现,已成百花齐放的趋势,比如内容电商小红书、兴趣电商抖音快手,社交电商微商、拼多多等,会员电商天猫 88vip、京东 plus 等。这些在线交易形态充分证明了电商在互联网领域流量变现的重要一环,已经成为互联网企业基础设施的水电煤。
电商中台的建设不光是一个技术体系的搭建,也是一个组织结构重新塑造的过程。但是随着时间的推移,中台其价值的增长空间会愈发狭窄,这就需要有意识的寻找创新点,突破现有系统的边界,跨界思考,于是我们也开始与前台业务走的更近,积极开展对新业务探索和技术架构升级。
在过往探索汽车电商的业务模式,我们发现核心痛点在无法绕过 4S 店提供服务。近年来特斯拉和国内造车新势力的异军突起,新兴的直销模式一举打破传统车企 4S 经销体系的生态;国内购车群体也日益年轻化让我们看到了线上订车 + 线下交付的新零售模式正在变成可能。
通过升级电商系统的现有能力,商品支持了 SKU 选配,订单支持大小定金组合支付、退款,新增交付系统,为工业协会定制车业务、汽车新零售线下店的业务提供了业务支持。未来还会继续打造业界对齐的新能源选配价格浮动模式以及商品可选配套的服务包模式。
在原有的电商交易下单流程中,设计对外的服务都是颗粒度比较小的原子化服务,这就导致了业务方接入成本比较高,用户体验也不太好。未来我们将会通过增加 BFF 层、精简调用链、电商接入脚手架等技术手段提升业务的产品力以及运营效率。
[1] 盘点:2010-2020 年互联网的十大战役
http://www.knowledgeatwharton.com.cn/article/7795/
[2] 汽车之家:从“吸引眼球”向“电商平台”拓展
http://www.knowledgeatwharton.com.cn/article/7795/
[3] 之家学宫: 汽车电商商品系统构建实践
https://atu.corpautohome.com/course/detail/?bs=list&id=130
[4] 之家学宫: 百万级汽车电商交易系统构建之路
https://atu.corpautohome.com/course/detail/?bs=list&id=122
[5] 之家技术: 高可用红包系统构建实战
https://mp.weixin.qq.com/s/aEjpokspkkA861PHoNB6fw
[6] 之家技术: 电商技术团队云原生实践
https://mp.weixin.qq.com/s/9U7OViprl7CjrsYnaNUXEA
[7] 之家技术: 新车电商测试数据自动化实践
https://mp.weixin.qq.com/s/IfgRtG1TAEQ0NbwvlnKfEA
[8] 之家技术: 电商秒杀系统的系统架构
https://mp.weixin.qq.com/s/YpqoWmsbBUYF84wOU74_wA
[9] 之家技术: 汽车之家发票总库 DDD 实践
https://mp.weixin.qq.com/s/8nSxM5lDOzexFBNErdbjWg
[10] ThoughtWorks: 现代企业架构白皮书
https://www.sohu.com/a/537498545_407401
[11] 美团: 业务中台之订单平台化建设实践
https://mp.weixin.qq.com/s/PhBUz0_OuCR6fEAcMh0Hyg
[12] 有赞: 中台如何助力标准化业务
https://mp.weixin.qq.com/s/ELofl-1gffA3XeFGBBC2Pw
[13] 吴润. 基于 API 网关的微服务组合策略研究 [J]. 数码世界,2019(03):84-86.
[14] 辛园园, 李俊晖, 李阵. 微服务组合方法研究进展 [J]. 无线通信技术,2018,27(03):42-46.
[15] 杨光.Activiti 工作流框架在 OA 系统中的应用 [J]. 电子设计工程,2021,29(11):65-69.
[16] Conductor 官方网站. Conductor 官方文档 [EB/OL].
https://netflix.github.io/conductor/.
[17] Zeebe. Zeebe 源码 [EB/OL].
https://github.com/camunda-cloud/zeebe
[18] Apache Camel 官方网站. Apache Camel 官方文档 [EB/OL].
https://camel.apache.org/docs/.
[19] Amaral C J , Bernardes S P , M Conceição, et al. Finding new routes for integrating Multi-Agent Systems using Apache Camel. 2019.
[20] COLA 应用架构的最佳实践
https://blog.csdn.net/significantfrank/article/details/110934799
方利 汽车之家高级研发工程师
2016 年加入汽车之家,先后负责过电商 ERP 系统、商家系统、线索系统、订单中心、AIDCC 的研发和架构,现主要负责电商交易系统的整体技术架构升级和业务处理等工作。