1.3 数据在架构中的重要性

数据很珍贵,它比系统本身存在得更久。

——Tim Berners-Lee

对于架构来说,数据就是一切。每一家企业打造的任何系统都必须和数据打交道,因为数据往往比系统和架构存在得更久,需要下功夫去思考和设计。然而,在现代分布式架构中,很多数据架构师下意识地构建出紧密耦合的系统,从而激发了矛盾。例如,架构师和DBA必须保证业务型数据能够在单体系统解构后存活,无论架构如何变更,业务人员应该能持续从数据中获益。

都说数据是一家公司最重要的资产。业务人员想要从数据中提取价值,寻找各种新的方式来让数据参与决策。现在企业的各个部门都是数据驱动的,从服务已有客户,到获取新客户、增加客户留存率、优化产品、预测销量,以及分析各种趋势。这种对数据的依赖也意味着软件架构实际上是为数据服务的,保证正确无误的数据可以被企业的各个部门获取并加以利用。

本书的作者在几十年前分布式系统刚开始流行的时候就搭建过很多此类系统。然而我们想知道为什么在现代微服务架构中,做决策似乎变得更难了。最终我们意识到,在早期的分布式架构中,数据基本还是放在一个大型关系型数据库里。然而,在微服务以及领域驱动设计(https://oreil.ly/bW8CH)中限界上下文的理念坚持下,数据变成了一种架构考量,作为限制实现细节耦合的一种方式,和事务性一样。很多现代架构中的难题都源自数据和架构考量之间的拉锯,我们将在第一部分和第二部分中一一厘清。

在随后的很多章节中都涉及一个重要的概念区分:业务型数据和分析型数据。

业务型数据(operational data)

支撑业务运营的数据,包括销售数据、交易数据、库存数据等。这类数据支撑着公司的正常运转,被定义为联机事务处理(OLTP),通常包括对数据库中的数据进行增、改、删。

分析型数据(analytical data)

分析型数据指数据科学家和其他业务分析师用来做预测、趋势分析等商业智能活动的数据。这类数据通常既不是事务性的也不是关系型的——与它原始的事务性形态不同,它可以保存在图数据库中,也可以是另一种格式的快照。这类数据对日常运营来说并不是至关重要的,但对长远的战略方向和决策来说却十分关键。

我们会在整本书中讲解业务数据和分析数据带来的影响。