EventStorming; 超越软件建模的持续发现


我们看到许多公司正朝着微服务架构迈进。微服务架构的一大缺陷是专注于技术,微服务需要多大,代码行数,我们在微服务中放置什么实体,以及使用休息作为它们之间的通信。
但要取得成功,我们需要关注问题空间,通过掌握领域知识并进行领域建模。EventStorming非常适合域建模,几乎所有微服务领导者似乎都同意。甚至ThoughtWorks也最终将EventStorming用于他们最近的技术雷达演示中的“采用”。但是,EventStorming已不仅仅是一个用于域建模的工具,而且要成功创建自主团队。

事件风暴EventStorming
我的第一次EventStorming体验是四年多前在Mathias Verraes的领域驱动设计研讨会上进行的。从那时起,我开始使用EventStorming对我的软件进行建模。EventStorming是根据  Alberto Brandolini的网站,他的网站  是一个灵活的工作室格式,用于协作探索复杂的业务领域。EventStorming是一种使用可视化技术通过在不同学科之间进行有意识的协作学习来最小化假设的技术。EventStorming有助于以最有效的方式解决复杂的业务问题,超越孤岛或专业边界。
EventStorming必不可少的是创建所需的建模空间,这意味着找到一个至少6米长的墙来打开纸张。我们需要足够的移动空间,这意味着大多数会议室将桌椅移到一边(特别是在公司)。邀请具备所需知识的合适人员(您的领域专家)并为每个人提供一个标记。我们通过编写域事件,发生的事情,橙色粘性并将其放在时间轴上来专注于视觉叙事。它不一定是橙色,但必须保持一致。使用图例将其显式化。

征服和分裂
EventStorming的第一部分,即领域事件的风暴,是至关重要的。每个人都有他们对现实的看法; 每个人都有自己特定的模型。我们试图实现的是让人们通过域事件使该模型明确。这意味着一个启发式的启发式是让每个人都为他们的感知写下域事件并将其放在时间线上。“征服与分裂”是阿尔贝托在他的书中所写的这种模式。这本书中记载了很多这些模式。本书还介绍了三种类型的EventStorming; 软件建模,流程建模和大图。为了使现有流程中使用过的系统显式化,我们使用流程建模EventStorming。当您想要将当前的巨石或泥球系统的大球转向更微观的服务架构时,这是一个很好的起点。

盲人和大象
在我看来,最关键和最令人兴奋的EventStorming类型是全局。特别是在大图片中征服和划分至关重要。您邀请来自组织中所有孤岛的20多人一起进行EventStorming。你需要至少一个出色的辅导员和一个观察者来解决这个问题,但这将有助于对抗盲人和大象的: 比喻每个筒仓(内部组织,井底之蛙)都认为他们拥有绝对真理。大图片EventStorm为组织提供了公司目标的清晰愿景,并明确了瓶颈和竞争目标。它还会开始向您显示多个上下文,以创建组织的上下文映射。如果您尝试使用微服务架构向更自治的团队迈进,Big Picture EventStorming将帮助您的团队分享知识,调整目标并专注于共同愿景。

超越大局,流程和软件建模
如您所见,我们需要做的不仅仅是使用EventStorming进行软件建模。要使用微服务架构创建自治团队,我们需要持续深思熟虑的协作学习才能获得成功。我们需要从Big Picture EventStorming转移,找到上下文和瓶颈,转向EventStorming流程建模。流程模型将为您提供开始查找有界上下文以转向EventStorming软件建模所需的所有详细信息。
您可以将EventStorming用于超过这三种类型。此外,我使用EventStorming来模拟团队的开发流程,正如Paul Rayner在他的演讲 “打击无形的敌人”中所描述的那样。您可以使用它来绘制您的客户旅程,价值流图,威胁建模,人种学研究,验尸,甚至回顾。对于具有时间轴的所有内容,讲述故事EventStorming是我的首选工具。但是不要认为EventStorming是银弹,它有它的盲点。我通常从EventStorming开始,并尝试将其与例如示例映射域故事讲述相结合,影响映射用户素材映射启发式映射。这一切都归结为使用可视化工具进行连续,深思熟虑的协作发现。