bounded-context-canvas

bounded-context-canvas

可视化微服务边界的领域驱动设计协作工具

Bounded Context Canvas是一个用于设计和记录限界上下文的协作工具。它通过结构化框架引导团队考虑设计的关键要素,包括命名、职责、接口和依赖关系等。该工具有助于清晰定义微服务边界,促进领域驱动设计实践。Canvas涵盖战略分类、领域角色和通信方式等方面,为微服务架构设计提供全面指导。

Bounded Context Canvas领域驱动设计业务模型系统设计协作工具Github开源项目

限界上下文画布

限界上下文画布是一种协作工具,用于设计和记录单个限界上下文的设计。

如果你不确定什么是限界上下文,可以查看Eric Evans的DDD参考Martin Fowler的文章

画布通过要求你考虑并选择其设计的关键元素,从命名到职责,再到公共接口和依赖关系,引导你完成限界上下文的设计过程。

替代文本

下载空白画布模板

摘要

如何使用

要快速开始使用限界上下文画布,请按照章节定义中呈现的顺序完成画布 首先填写画布的名称和描述,用一两句话阐明其存在的理由和主要职责。然后你可以按任意顺序填写画布的其他部分。你可以从外向内设计,从入站通信开始;或从内向外设计,从业务规则和领域语言开始。 你可能没有足够的信息来完成画布的某些部分。在这种情况下,你需要使用其他建模技术来找到所需的信息。

替代格式

上面展示的默认限界上下文画布格式并不是唯一的格式,以下是其他格式。也欢迎你尝试新的和创新的格式。

  • 用例泳道:这种风格将通信部分组织成泳道,以以下格式显示交互发生的顺序:输入消息 -> 做出决策 -> 输出消息

板块定义

以下是画布各个板块的简要说明。

名称

命名很难。写下你的上下文名称并在团队中达成一致,将为你设计上下文提供框架。

目的

用几句话描述上下文的原因和内容,使用商业语言。这里不涉及技术细节。 写下目的迫使你清晰地表达模糊的想法,并确保团队中的每个人都达成共识。 从商业角度描述目的,你也可以列出这个限界上下文为谁提供价值的关键角色。

战略分类

这个上下文对你组织的成功有多重要?:

  • 核心领域:关键战略举措
  • 支持领域:必要但不是差异化因素
  • 通用领域:许多领域中常见的能力

这个上下文在你的商业模式中扮演什么角色:

  • 收入生成器:人们直接为此付费
  • 参与度创造者:用户喜欢但不为此付费
  • 合规执行者:保护你的业务声誉和存续

这个概念的演进程度如何(参见Wardley Maps):

  • 创生期:新的未探索领域
  • 定制构建:公司正在构建自己的版本
  • 产品:存在具有差异化的现成版本
  • 商品:存在高度标准化的版本

关于创生期、定制构建、产品和商品的详细描述,请参见Wardley Maps演进定义。 填写画布的这一部分时,可参考核心领域图表

领域角色

如何描述这个限界上下文的行为?它是接收大量数据并将其转化为洞见的分析上下文吗?还是执行工作流的执行上下文?识别上下文扮演的不同角色可以帮助避免职责耦合。

查看Alberto Brandolini的限界上下文原型和Rebecca Wirfs-Brock的对象角色原型以深入分析这个领域。模型特征工作表包含社区生成的角色示例(模型特征是领域角色的前身)。

入站通信

入站通信代表由其他协作者发起的协作。

消息

消息是一个协作者发送给另一个协作者的信息。限界上下文之间可以发生三种类型的对话:执行某事的请求(命令)、请求某些信息(查询)或通知某事已发生(事件)。

这里的"消息"一词是泛指,不局限于任何特定实现。不一定要求使用消息总线或异步工作流。例如,命令可以简单地通过HTTP POST方法提交HTML表单数据。

协作者

协作者是向此上下文发送消息的其他系统或子系统。它们可以是其他限界上下文、前端(网页或移动端)或其他内容。

如果限界上下文拥有用户界面(例如微前端),那么协作者类型就是直接用户交互。

协作者类型

关系类型

两个限界上下文之间的关系类型表明模型和团队如何相互影响。参见上下文映射了解关系类型。

组织为泳道

协作者可以被组织成水平泳道,显示他们发送的消息。

协作者示例

出站通信

出站通信代表由该上下文发起的、与其他协作者互动的协作。适用与入站通信相同的消息类型和表示法。

通用语言

这个上下文中存在哪些关键领域术语,它们的含义是什么?

业务决策

这个上下文中的关键业务规则和政策是什么?

假设

你在设计决策时永远不可能对领域中的一切都了如指掌。大多数设计都是基于假设进行的,强烈建议将这些假设明确化。可以在限界上下文设计画布的这个部分做到这一点。

验证指标

领域驱动设计是一种基于持续学习的迭代建模和设计方法。指标可以帮助你收集有价值的学习输入(想想构建-测量-学习循环)。考虑你和你的团队可以定义哪些指标,以了解所选择的限界上下文边界是否合适。

你可以从以下来源收集这些指标:

  • 你的CI / CD环境
  • 像JIRA这样的工具
  • 从你的线上系统

开放问题

如果在进行研讨会时有一些问题房间里没人能回答,你可以将它们输入画布的这个部分。这样可以确保不遗漏任何开放问题,同时也可以直观地了解团队对给定限界上下文设计的确定程度。大量问题表明存在高度不确定性。

示例

以下是一个填写完整的限界上下文画布。 BCExample

工具

以下是一些可以帮助你使用限界上下文画布的工具。

HTML版本

一个画布的HTML版本,你可以在浏览器中编辑,并与你的代码一起在源代码控制中进行版本管理。由Nelson da Costa贡献。

Miro版本

一个免费的MiroHQ模板,用于限界上下文画布。

目前在Miroverse上的模板版本是v4。同时,你可以从本仓库下载Miro板的备份。

draw.io版本

一个draw.io画布模板,包含限界上下文画布作为模板。

Excalidraw版本

一个Excalidraw画布模板,包含限界上下文画布作为模板。

设计技巧

通过在画布上展示限界上下文设计的重要元素,你可以更容易地质疑和改进设计。以下是一些帮助你质疑和改进设计的技巧。

欢迎通过创建拉取请求分享你的技巧。

通用技巧

  1. 尝试将画布上的某些内容移到另一个上下文中。这会如何影响设计?

接口设计技巧

限界上下文的公共接口是它与系统其他部分的契约。契约对协作者有重大影响,且难以更改,因此良好的设计至关重要。以下是一些帮助你评判限界上下文接口设计的技巧。

  1. 消息的命名是否与彼此以及上下文的描述保持一致?
  2. 每种消息类型是否最优(例如,命令是否应该是事件)?
  3. 接口是否过大(过多独特的消息类型)?
  4. 上下文是否暴露了过多内部细节?
  5. 是否有任何消息看起来应该属于其他地方?

额外资源

翻译

所有资源均有法语版葡萄牙语版可供使用。

贡献者

感谢所有现有和未来的贡献者,以及以下为限界上下文画布做出贡献的个人:

贡献和反馈

您可以免费使用有界上下文画布。此外,我们欢迎您提供反馈和想法,以改进画布或创建新版本。

欢迎您也向我们发送包含您的示例或新翻译的拉取请求。

CC BY 4.0

本作品采用知识共享署名 4.0 国际许可协议进行许可。

CC BY 4.0

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多