说服您的CTO使用事件溯源 -Event Store Blog

banq


事件溯源 是一个简单但功能强大的概念,它允许将应用程序的状态表示为事件序列,而不是当前状态的快照。换句话说,可以随时从表示已影响系统的每个更改的有序事实列表中推断当前状态。

1.免费审核跟踪
我们不仅通过应用所发生的每个事件来达到相同的结果,而且我们还记录了对状态产生影响的每个步骤,其中包括对开发人员和企业有用的信息。随着事件的溯源,我们能够知道如何系统除了取得了一定的状态什么是状态。
事件在发生时以有序的方式存储在事件存储或事件日志中,并按与生成事件的原因相关的流进行逻辑分组。为了更好地探索和关联这些事件,可以再次读取它们以提取其信息并将其投影为适合需要的形状。
想象一下一个传统的系统,它在应用程序崩溃的情况下发生了令人不快的情况,但是由于开发人员忘记添加一些跟踪信息,我们无法重现以前发生的情况。

2.更轻松的测试
自动化测试是必须的。当在代码中重构,维护或添加更多功能时,它为开发人员提供了安全性;它有助于整体上使软件更加可靠;并且,它是有关当前系统功能的可靠且最新的文档。
为了测试功能性,我们采用了一种给定的 方法,即准备场景,执行功能并对结果进行断言,以确保其达到了预期的目的,并且没有达到预期的目的。
使用事件源时,这些方案变得更易于准备和更具可读性,因为可以以自描述的方式从一组事件中构建系统的前提条件。请记住,系统中所有可能的变异都由一个事实表示。
此外,重播所有事件直到特定的时间点,将为我们提供与当时相同的系统状态,从而使我们基本上可以按时旅行。

3.零数据丢失
谁敢说某些交易或信息是无关紧要的?我们可能不会想到某些数据的当前用法,但这并不意味着以后这些数据将不再有价值。事件数据源 具有零数据丢失的特性,因此对于企业而言可能是非常有价值的。
一些企业承认信息是要收集和保护的最重要的事物之一,但是已经实施了解决方案,其中可变性可能意味着数据丢失。对于传统的CRUD系统,每次执行写操作以更新或删除记录时,都会丢失数据,除非可以恢复突变之前的先前状态。但是,如前所述,如果无法从其日志中重建系统的状态,则无法保证实际发生的情况。

4.报告就像恢复到以前一样
假设您是一家在线服装店的软件工程师,客户可以在其中浏览文章,选择尺寸和颜色,添加配件等。当用户对购物篮中的内容感到满意时,他们可以继续结帐并输入付款明细。相当熟悉的场景,不是吗?
有一次会议讨论更好的分析客户行为的方法:营销部门的一位成员建议,一个在结帐之前从购物车中删除一些物品的顾客可能是这些物品潜在的客户。
与会人员认为该想法很有潜力,因此决定在他们的网站上开始跟踪这种情况,他们将创建一个包含这些情况的详细信息的报告,管理人员迫不及待地想看到报告中显示的数据。但是该报告尚未显示任何信息,因为自新版本发布以来尚未进行任何结帐。他们必须等待更长的时间才能看到第一个数据。
由于采用了事件溯源,您可以将此报告创建为新的阅读模型,从头开始重播所有事件以创建新的预测,然后重放完成的时间,可以查看报告中的所有数据,而不必等待新的购买,就好像报告从第一天开始就一直在那儿一样!