AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

怎么走着走着就变“烟囱”了呢?丨建设数据中台系列(二)

  • 2020-08-06
  • 本文字数:3987 字

    阅读完需:约 13 分钟

怎么走着走着就变“烟囱”了呢?丨建设数据中台系列(二)

这两年,随着中台概念的兴起,一种 IT 过去的常态,现在的明星反面教材——“烟囱式架构”被反复提及并为大家所熟知。作为中台的对立面,烟囱式架构不幸地成为了业界合力吐槽的“倒霉孩子”,那些对比中台理念审视过自身 IT 系统的传统企业都不禁心虚地喃喃自语道:“嗯,我有病,得治!”


开个玩笑,其实我们并不打算在这篇文章里对烟囱架构进行批判,“家家有本难念的经”,企业形成今天的烟囱式架构是由很多现实问题导致的,并不是什么管理或决策上的疏失,如果说烟囱式架构就是一种“病”,那么可以说“雪崩来的时候,没有一片雪花是无辜的”。


本文我们真正想做的是带着读者从一个生动而现实的案例中观察并思考烟囱式架构的产生背景,演化过程以及它所造就的 IT 生态给企业带来的影响。所谓“知己知彼,百战不殆”,不管企业要不要上中台,探究形成企业现有 IT 格局的真正动因,透彻理解烟囱生态的现实处境,对企业领导者和 IT 团队都是非常重要的,这可以避免一些企业在中台热潮中盲目跟风,或者帮助决策者清晰地认识到在中台化进程中它们真正需要解决的生态顽疾到底是什么。本文引用的案例源于作者所著的《大数据平台架构与原型实现:数据中台建设实战》一书,全书对数据中台作了系统而详细的介绍。


那接下来,就让我们开始一趟名为“会员管理”的一日游吧,这是本文选取的一个极具代表性的案例,可能并非所有企业都经历过案例中的全部阶段,但我相信一定会有很多企业能从这个案例中找到自己的一些影子,这个案例可以让大家清晰地看到烟囱式生态系统是如何形成并蔓延的。


对于生产和销售面向 C 端产品的企业来说,如何建立并维持企业与终端消费者(也包括潜在消费者)之间的关系非常重要的,为此,企业都会建立自己的客户关系管理系统,即 CRM 系统来管理自己的消费者,构建会员体系,提高客户满意度和用户粘性。过去,线下零售是 C 端产品的主要销售渠道,因此 POS 系统就成为了会员注册的主要入口,很多 POS 系统都有会员管理功能,销售人员可以在 POS 机上为消费者完成会员注册、积分查询与兑礼等操作,这些功能一般放置在 POS 的“会员管理”模块:



图 1 阶段一:初期基于 POS 系统的会员管理


后来企业引入了 CRM 系统专门进行消费者信息的管理和会员体系的建设,POS 的会员管理功能将让位于更加专业和强大的 CRM 系统,因此,在 CRM 的建设过程中,POS 系统团队需要深度参与,配合 CRM 系统制定会员管理相关的数据交互协议与格式,由于项目只牵涉 POS 与 CRM 两个系统,接口方案很快可以就敲定并付诸实施,改造完成之后就形成了第二阶段的会员生态:



图 2 阶段二:引入 CRM 系统后的会员系统生态


再后来,企业又引入了客服系统,消费者除了可以在门店查询和行使会员权益,还可以通过电话向客服中心查询和修改个人信息,但是客服系统围绕会员相关的功能需求与 POS 系统会有所不同,例如客服系统需要记录用户对产品的反馈以及收集消费者调查问卷,这些需求在之前设计 POS 与 CRM 对接时是不可能考虑到的,如果现在要实现客服系统与 CRM 的对接就需要对 CRM 系统的会员接口做出调整,为了避免改造对 POS 系统造成影响,CRM 团队决定面向客服系统单独开发一套 API,于是第三阶段的会员生态就是下面的样子:



图 3 阶段三:引入客服系统后的会员系统生态


在这张图中,我们使用了梯形接口来特别表示这是有别于原来面向 POS 的另外一套 API。


很多企业早期的会员生态大多如此,从中我们已看到了一些“烟囱”的端倪,如果放在早期的传统销售模式下看,这一生态并没有大问题,但是后来随着电子商务和移动互联网的兴起,商品的销售渠道变得越来越多,越来越复杂,这些新兴的销售渠道包括:


  • 官方电商平台

  • 第三方电子商务平台(天猫/淘宝/京东等)

  • 品牌自有的移动端 APP

  • 微信小程序

  • 门店导购系统


这些系统都直接与终端消费者进行交互,是会员招募的重要入口,理所当然地要提供会员注册、信息查询、权益行使等会员服务。当第一个线上系统——官方电商平台准备上线时,企业就遇到了很多困难,这些困难大多与周边系统集成有关,继续以“会员管理”这个模块为例,由于早期 CRM 的会员服务/API 是面向传统线下业务场景开发的,当面对电子商务和新零售业务时它们已经不能服务于这些新业务了,于是导致新的业务系统无法融入老的会员体系:



图 4 阶段四:引入官方电商平台时由于接口的复杂性和兼容性导致集成出现问题


在这个阶段,企业有两个选择:


  • 对 CRM 系统进行大幅度地改造,使之能同时支撑线上和线下的会员管理,但是建设周期长,风险大,CRM 团队无力也不愿意承担这个风险

  • 让官方电商平台独立开发自己的会员管理模块,首先满足自己的会员管理需求,然后与 CRM 系统对接,同步会员数据,但不使用 CRM 的会员服务


很多企业都曾经走到过类似的岔路口,可能业务背景各不相同,但都是企业 IT 生态演化路径上的关键节点,大多数的企业为了让新业务尽快上线,规避风险,都无可奈何地选择了后者,于是会员生态进入到了第五个阶段:



图 5 阶段五:经过妥协之后形成的会员系统生态


这是一阶段的演变非常值得玩味,从架构上讲,这是出现我们所说的“坏味道”的开始,相信读者会有对这一阶段产生很多疑问:


疑问一:为什么没有向着 SOA 的方向进化,或许在 SOA 架构下这个问题会不会比较容易处理?


首先,我们可以看到很多企业并没有经历当年的 SOA 浪潮,或者曾经尝试过,但最后失败了。其次,某种程度上这是一个伪命题,因为即使企业实施了 SOA 改造,但是在面对新业务对会员管理提出的要求时,依然要冒方案一的风险,因为对于会员服务的提炼和改造归根结底是要由 CRM 系统负责的,与 SOA 架构无关,SOA 架构成功的前提就是服务本身的设计要足够好并且能不断地迭代和演化以适应新的需求,所以问题不在于系统间如何集成,而是 CRM 作为一个独立的系统,现在要求它承载的却是企业全部业务线上的会员管理,回到前面给出的解释,CRM 团队的首要任务是保证系统的稳定运行,无力应对这种格局对 CRM 的冲击。


疑问二:即使没有引入 SOA,也不至于退化成基于文件的交互方式,是否是技术管理上的疏失?


首先,文件传输是批量的,比 API 实时交互实现起来要简单的多,但更重要的原因在于通过文件传输数据时,关联数据一般会被“压平”(即将 join 后的结果集作为输出格式),以非常粗的粒度送出,这实际上相当于通过一个粗粒度的 API 传输类似宽表的数据,但是实际的 API 是不可能被设计为这么粗的粒度的,这样的 API 是不能支持实时交互的。说到低,通过文件传输扁平的粗粒度数据是最容易实现的方案,相应的实现的风险也是最小的,所以在权衡利弊之后,很多系统间的集成最后都选择了这一方案。


一旦企业度过了第五阶段,后续所有的系统都会效仿这一模式集成到 IT 生态里,形成如下的状态:



图 6 最终成形的会员系统生态


可以说此时的 IT 生态已经彻底降级了,这种降级是伴随着不断增加的系统集成复杂度与无法提供足够有效的接口两者之间的矛盾而导致的,降级之后的 IT 生态将不可避免的存在这样一些问题:


  • 会员数据将不可避免的分布于多套系统中,需要频繁和复杂的数据同步

  • 由于数据同步方式是批量的,会导致在某些时间段内用户在不同渠道查询到的个人数据(例如积分)是不一致的,这会影响用户体验,更严重的是积分数据的不一致可以让“羊毛党”多次重复兑换积分,给企业带来经济损失

  • 多个业务系统中开发了会员管理模块,虽然部分功能有所不同,但核心功能是一致的,这是严重的重复建设


现在我们来重新梳理一下这个案例中“会员管理生态”的演化历程:


  1. 早期通过 POS 系统实现会员管理

  2. 后来引入了专业的 CRM 系统,关闭 POS 系统的会员管理,转而与 CRM 对接,完全通过 CRM 来管理会员

  3. 出现了第二个需要获取和修改会员信息的系统:客服系统,但原有面向 POS 设计的 API 并不能很好的满足客服系统的需求,于是又协调 CRM 团队修改或开发了部分的 API,形成了面向客服系统的会员 API

  4. 再后来,随着电子商务的兴起,官方的电商平台上线,也需要与 CRM 对接实现会员注册,积分查询和管理等功能,作为新的线上渠道,会员信息、会员交易行为与线下渠道会有明显的差别,对会员积分、等级的计算规则也产生了直接的影响,这些因素导致 CRM 团队无力在保持现有业务不变的情况下再开发兼用电商平台的 API 接口了,折中的方案就是:在官方的电商平台上开发本地的会员管理模块,在本地实现会员注册、信息维护、积分计算等功能,然后周期性的和 CRM 系统进行数据同步

  5. 之后,更多的新系统都仿照了这一模式,各自在本地系统实现会员管理,然后与 CRM 进行数据同步,以便从其他渠道注册的会员同样可在该渠道上行使会员权利


在这个演变的过程中有一个重要的节点:第 4 步,这是整个生态系统演变的一个转折点,在这个转折点之前,整个 IT 生态还比较简单的,点对点式的对接完全可以解决问题,当 IT 生态变复杂时,麻烦就会逐渐突显出来了:早期面向单一业务场景设计的服务/接口无法满足来后来新生业务系统的需求,导致外围系统不得不在本地自建相关模块,为了确保全局数据一致,再通过文件进行数据同步。

作者介绍

耿立超,架构师,14 年 IT 系统开发和架构经验,对大数据、企业级应用架构、SaaS、分布式存储和领域驱动设计有丰富的实践经验,热衷函数式编程。目前负责企业数据中台的架构设计和开发工作,对 Hadoop/Spark 生态系统有深入和广泛的了解,参与过 Hadoop 商业发行版的开发,曾带领团队建设过数个完备的企业数据平台,个人技术博客:https://laurence.blog.csdn.net/ ,著有《大数据平台架构与原型实现:数据中台建设实战》

建设数据中台系列

企业数据能力测评:认清现状,布局未来丨建设数据中台系列(一)


SOA 为什么不“香”了?丨建设数据中台系列(三)


中台架构详解(上)丨建设数据中台系列(四)


中台架构详解(下)丨建设数据中台系列(五)


“数据中台”有何不同?丨建设数据中台系列(六)


“数据中台”怎么建?丨建设数据中台系列(七)


2020-08-06 10:286605

评论

发布
暂无评论
发现更多内容

数据湖(十三):Spark与Iceberg整合DDL操作

Lansonli

数据湖 10月月更

java之反射机制与国际化、网络编程、数据库编程、不可变对象

Andy

java之类集框架

Andy

JUC 浅析(二)

Andy

极客时间运维进阶训练营第二周作业

9527

vue3 name 属性的使用技巧

new_cheng

Vue 前端 Vue3 VUE 3.0 源码

java之理论问题集合

Andy

JUC浅析(一)

Andy

京东云开发者|京东云RDS数据迁移常见场景攻略

京东科技开发者

MySQL 数据同步 数据迁移 云迁移 数据订阅

JUC面试题

Andy

String源码分析(二)

知识浅谈

String类 10月月更

从“汽车制造”生活案例到软件的建造者模式

宇宙之一粟

设计模式 建造者模式 Go 语言 10月月更

java之流

Andy

java之类库

Andy

Java面向对象

Andy

【一Go到底】第二十八天---数组实际案例与复杂应用

指剑

Go golang 10月月更

立即可用的实战源码(springboot+redis+mybatis+restTemplate)

程序员欣宸

Java springboot 10月月更

Spark On Kubernetes 的 Web UI 访问实践

移动云大数据

如何在C#或VB.NET程序中为幻灯片添加或删除批注

Geek_249eec

C# PPT VB.NET

Spark on k8s在阿里云EMR的优化实践

阿里云大数据AI技术

大数据 spark 企业号十月PK榜

zTree

Andy

java之新特性

Andy

鸿蒙开发实例 | 鸿蒙操作系统的前世今生

TiAmo

华为 鸿蒙 10月月更

java之扩展概念

Andy

java之线程

Andy

极客时间运维进阶训练营第二周作业

忙着长大#

极客时间

AR人体姿态识别,实现无边界的人机交互

HarmonyOS SDK

AR

2022最新CSS高频面试题指南

CoderBin

CSS 前端 面试题 秋招 10月月更

jdk11之Idea使用问题

Andy

27位技术实战派负责人齐聚 深聊降本增效 你一定不想错过!

阿里技术

云计算 云原生 云栖大会 降本增效

推广TrustAI可信分析:通过提升数据质量来增强在ERNIE模型下性能

汀丶人工智能

nlp

怎么走着走着就变“烟囱”了呢?丨建设数据中台系列(二)_大数据_耿立超_InfoQ精选文章