把开发者、产品经理和领域专家聚在一起,用彩色便利贴拼出一个系统的完整真相。Event Storming 发现的不是代码,而是团队共同误解了多少年的隐性假设。
工程团队壮大之后,一个奇怪的现象开始出现:每个人都有一张自己脑子里的系统地图,但没有人的地图和别人的完全一样。前端工程师理解的「订单」,和后端工程师理解的「订单」,有着细微但关键的不同。产品经理描述的「取消流程」,在工程实现里分裂成了三个不同的代码路径。
传统的需求文档无法解决这个问题——文档是静态的,系统是动态的,而人们对系统的理解是碎片化的。架构评审会上,大家讨论的往往不是系统真正是什么,而是各自脑子里那个不同版本的系统。
Event Storming 用一种激进的方式解决这个问题:把所有人聚在同一面墙前,用过去时描述系统里发生的事情(「订单已创建」),强迫每个人把隐性知识变成可见的便利贴。当矛盾出现在墙上,它就不再是「我的理解」和「你的理解」的分歧,而是一个必须解决的设计问题。
Event Storming 用颜色编码区分不同类型的领域概念。每种颜色代表一个特定的角色,所有颜色共同构成一个完整的领域模型。
以下是一个电商结账流程的简化 Event Storm 示例,展示从浏览到库存更新的完整链条:
每个虚线框代表一个「有界上下文」(Bounded Context)——系统的自然边界,也是未来微服务拆分的候选单元。
Event Storming 在复杂度高、跨团队协作密集的场景下价值最大。它不适合小型功能迭代,但对系统性问题几乎不可替代。
2019 年,Miro(协作白板工具)的工程团队面临一个经典的快速增长困境:团队从 5 人扩张到 50+ 人,但代码库依然是一个巨大的单体架构。不同团队修改同一个模块时会互相阻塞,部署风险越来越高,新功能的开发速度也随团队扩张反而下降。
更深层的问题是:没有人能说清楚系统的边界在哪里。工程师们各自理解一片代码,没有人对整体有清晰的认知。架构讨论往往陷入「我以为是这样的」与「我以为是那样的」的口角。
Event Storming 是一个高度物理化的工作坊——它需要真实的空间、真实的便利贴、和真实的人。以下是完整的引导手册,适用于 4–8 人的工作坊。
事件风暴(EventStorming)由意大利软件设计师阿尔贝托·布兰多里尼(Alberto Brandolini)于 2012 年前后创造,脱胎于领域驱动设计(DDD)社区,是一种高度协作的业务流程建模工作坊形式。它将技术人员和业务人员拉到同一张白纸前,用橙色便利贴代表「领域事件」,快速对齐系统边界和业务规则,在微服务架构设计中尤其受到欢迎。