如何在您的公司中引入领域驱动设计? - Fabrizio


让我分享一下我尝试在大中型公司中引入它的经验。
有些你会看到的东西听起来很明显,但是这是我的经验,我想和你分享。
这些年来我学到的第一件事是:从小处着手!

从小事做起
这是什么意思?
这意味着,根据公司的规模,如果你从你的团队开始,如果你在其中一个团队中,或者是你自己的团队(团队组),会更好。

为什么?因为在大型组织中,由少数人处理事情更容易,所以更容易解释一个概念,主要是向在一起工作的一群人,而不是执行团队(首席执行官、首席技术官等)。

多年来我学到的另一件事是要有耐心。
人们不会从一天学到另一天。人们不会从一天变到另一天,像DDD这样的东西也不容易掌握。
我花了很多年才学会DDD概念,尤其是战略概念(我还在学习..有时我觉得自己像个新手), 所以我不能假装在一个月内“完全”完成DDD。从小事做起,要有耐心,也许几年后(取决于公司的规模),你会开始看到你的工作成果,我可以向你保证,它会带来回报,给你带来极大的满足感。

好的,但是,我应该从哪里开始呢?
在您的公司里,从DDD开始,您可以做很多事情。让我列出为我工作/正在为我工作的人。

是的,与你的同事在团队(或同一领域的团队)层面上建立一个读书俱乐部。我通常每周安排一个小时(周五),每次讨论一章。
从哪本书开始?取决于..
我最喜欢的开始是:

在团队层面准备并进行小型会谈或技术会谈。也许从您自己的团队(如果有的话)开始练习并获得反馈。然后把它交给一组团队,同一域中的其他团队,然后,如果可能的话,为所有对公司感兴趣的人组织一次会议。
从 DDD 中选择一些战略或战术模式,准备一些快速幻灯片并将其展示给您的同事。为了给出一些想法,我通常会做一组闲聊:

  1. DDD 快速概述:简要解释什么是 DDD 并展示战略和战术模式。只是一个快速的概述,不要深入每个模式的细节。
  2. 聚合:解释什么是聚合,实体和值对象有什么区别。
  3. DDD 中的服务:基础设施、域和应用程序服务之间的区别。

领域建模:EventStorming
这是一个有点高级的问题。作为一名DDD从业者,并不意味着你知道如何促进EventStorming。
我的建议是,你可以参加Avanscoperta(该公司由Alberto Brandolini所有,是研讨会的创建者)的EventStorming课程。
这完全值得花钱,它为你提供了武器,不仅可以在你的公司引入DDD,还可以帮助你的公司找到边界,定义泛在语言等等。
我的意思是,我不应该赞美EventStorming,因为现在它已经非常有名,是探索复杂商业领域的研讨会。另一个选择是购买这本书,尽管它还没有完成。

所以,一旦你知道如何促进EventStorming(另一种方法是你向敏捷教练寻求帮助,如果有的话),从一个小领域开始,也许是在团队层面,然后再扩大一点(更大的领域,一组团队等)。
在你开始主持之前,请向你的同事和领域专家解释参加这样一个大型研讨会的好处。根据我的经验,一开始人们会觉得他们会白白浪费掉很多宝贵的时间。
这就是为什么我会在开始之前解释预期的结果,为什么重要等等。

如果可能的话,在研讨会的前几天,尽量与每个领域的专家进行快速交谈,以解决对研讨会的疑虑。

奖励:通过大局战略观研讨会的结果,你也应该能够定义/重新定义/细化你的领域的边界。
不知道该怎么做?请阅读《领域驱动设计 前15年》一书中的 "用EventStorming发现有边界的上下文 "。
(整本书值得一读,有很多好东西)。

领域建模方法
这类似于 TDD Katas:定义一个问题,与您的同事一起探索它并提出一个模型。
一些说明:

  1. 定义域(例如电子商务应用程序)
  2. 定义角色:PM、销售、营销、BizDev、开发团队成员等。
  3. 为每个角色写下一些说明。

Kata之日:
  1. 概述 kata 和域。
  2. 为每个参与者分配角色并给他们指示。
  3. 他们需要一起探索该领域并提出一个模型,同时使用来自 DDD 的战术模式。

另一种方法是运行战略领域驱动设计模式:看看Nick Tune的这篇带有示例的精彩文章。

六边形结构
这可能有点争议。
免责声明:如果您使用的是端口和适配器(又名 Hexagonal),并不意味着您使用的是领域驱动设计。如果不特别使用战略模式,你就不是真正的领域驱动。但 Hexagonal 对此有所帮助,因为它是一种架构,它有利于牢记并放入应用程序的“核心”,在六边形的中间,最重要的东西:域。这就是为什么我认为解释和实现 Hexagonal 是一种慢慢开始引入 DDD 的方式。

一些资源:

结论
好吧,这是我用来做和工作得很好的事情的一小部分。