上图是一张普通地图,最刺眼的就是边界?

非常好奇地图绘制工程师是如何描绘如此弯曲多变的边界的?强制行政区域还是人群历史原因自然的人以群分?

我们再换个视角,对工程师或者架构师来说,微服务的边界如何划分呢?

基于DDD设计方法论中的概念 限界上下文 来划分微服务的边界;

背景

架构师小李正在团队推行DDD设计方法论,领域建模和系统建设过程中,很多岗位需要参加进来,比如产品经理,领域专家,项目经理,架构师,开发经理,测试经理。对同样的领域知识,不同的人可能有不同的认识,交流起来存在一定障碍。

假如你是小李,你会如何消除这种交流障碍呢?

答案是今天的主角:通用语言和限界上下文。

先简单的厘清这两个概念。

名词 概念
通用语言 定义上下文含义
限界上下文 定义领域的边界,确保每个上下文的语义(通用语言)在边界内的唯一性含义

下面,我们拿显微镜来看看到底什么是通用语言?限界上下文又是什么东西?

通用语言

通用语言:团队交流达成共识的能够明确简单清晰的描述业务规则和业务含义的语言就是通用语言。

用途:通用语言是团队的统一语言,在团队中不管你是什么角色,在同一领域的软件生命周期里都使用统一语言进行交流。

价值:

  1. 解决各岗位的沟通障碍问题,促进不同岗位的和合作,确保业务需求的正确表达。
  2. 通用语言贯穿于整个设计过程,基于通用语言可以开发出可读性更好的代码,能准确的把业务需求转化为代码。

类比: 义勇军对中国人来说就是通用语言,大家都知道这是我们的国歌,没有二义性;

通用语言的组成:

组成部分 说明 代码对应
术语 名词:给领域命名,比如订单,商品;动词:给命令和事件命名; 名词:对应实体动词:命令或者事件

DDD领域建模和系统落地过程:

既然是一种映射,那么可以整理成一张表格。

记录事件风暴中产生的领域对象的位置,属性和在代码模型中对应的代码对象的对应关系。

格式如下:

要点:DDD的设计和分析的过程中,要保证术语在限界上下文中的统一,并保证业务模型中的领域对象跟系统模型中的代码对象一一对应。从而保证业务模型跟代码模型的一致性。

限界上下文

定义:战略设计中确定语义所在的领域边界就是限界上下文。

为了好理解,这里对比一下中文和DDD:

对比项目 语言 语义环境
中文 汉语 语言环境
DDD 通用语言 限界上下文

限界:即边界上下文:即语义环境;

综合起来:即带边界的语义环境。

限界上下文是微服务拆分和设计的主要边界依据,当然微服务还有其他的划分边界依据,需要综合考虑;我们将限界上下文内的领域模型映射到微服务就完成了从问题域到软件的解决方案。

小结

问题?

为什么有限界上下文的概念,除了解决交流障碍,还有什么更具体的原因吗? 确定了领域的边界,是微服划分的主要依据 封装了领域模型 通用语言,确定了模型的边界哪些该做哪些不该做

限界上下文在微服务设计的作用和意义? 微服务边界划分的主要依据

最后小结汇总成一张图。

原创不易,关注诚可贵,转发价更高!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各种资源,关注公众号‘李福春持续输出’,发送'学习资料'分享给你!

DDD之5限界上下文-定义领域边界的利器的更多相关文章

  1. DDD - 概述 - 聚合 - 限界上下文 (四)

    最重要的一句话 DDD的所有有相关理论中,只有一句是至关重要的,但是也是最容易被忽略和最难做到的,抛弃传统的设计方式(思路)的思想,这句话起了决定性的作用,但是99%的人都忽略了或者在开始无法正视或理 ...

  2. 【DDD】领域驱动设计实践 —— 限界上下文识别

    本文从战略层面街上DDD中关于限界上下文的相关知识,并以ECO系统为例子,介绍如何识别上下文.限界上下文(Bounded Context)定义了每个模型的应用范围,在每个Bounded Context ...

  3. 从壹开始微服务 [ DDD ] 之三 ║ 简单说说:领域、子域、限界上下文

    前言 哈喽大家好,DDD领域驱动设计系列又开始了,前天周二的那篇入门文章中,也收到了一定的效果(写小说的除外),同时我也是倍感鸭梨,怎么说呢,DDD领域驱动设计已经有十年历史了,甚至更久,但是包括我在 ...

  4. IDDD 实现领域驱动设计-理解限界上下文

    上一篇:<IDDD 实现领域驱动设计-理解领域和子域> <实现领域驱动设计>前两章内容,基本上读完了,和<领域驱动设计>不同的是,它把很多的概念都放在前面进行讲述了 ...

  5. DDD中限界上下文与通用语言的作用

    什么是通用语言 通用语言, 最主要的目的就是减少交流中信息丢失, 在实际开发中, 可能关联很多人, 例如有业务层面的业务细节制定者.领域专家.产品经理.项目经理 .架构师.开发经理.测试经理等等, 即 ...

  6. DDD理论学习系列(3)-- 限界上下文

    1. 引言 限界上下文可以拆分为两个词,限界和上下文. 限界:是指一个界限,具体的某一个范围. 上下文:个人理解就是语境. 比如我们常说的段子: "我想静静." 这个句子一般是想表 ...

  7. 学习DDD的初步尝试,从最基础的开始,业务介绍,划分限界上下文 ,建立模型

    Conference业务简介 Conference是这样一个系统,它提供了一个在线创建会议以及预订会议座位的平台.这个系统的用户有两类: 1:客户,可以创建和管理会议. 2:会议座位预定者,可以预订会 ...

  8. DDD理论学习系列(2)-- 领域

    DDD理论学习系列目录 1. 引言 领域一词,主要有以下两个意思: 一国主权所达之地. 学术思想或社会活动的范围. 不管是指国家的主权范围也好还是学术活动范围,都是在讲一个范围,一个界限. 比如我们常 ...

  9. CQRS之旅——旅程3(订单和注册限界上下文)

    旅程3:订单和注册限界上下文 CQRS之旅的第一站 "寓言家和鳄鱼是一样的,只是名字不同" --约翰·劳森 描述: 订单和注册上下文有一部分职责在会议预订的过程中,在此上下文中,一 ...

随机推荐

  1. JavaWeb网上图书商城完整项目--day02-2.regist页面输入框得到焦点隐藏label

    实现当光标输入在输入输入框的时候,将后面的内容隐藏,例如在用户名称输入信息的时候,后面的用户名不能为空隐藏 我们来看看regist.js的代码: //该函数在html文档加载完成之后会调用 $(fun ...

  2. xutils工具上传日志文件

    首先下载xutils java包: 添加到项目的工程中: 第二在新建一个类继承application package logback.ecmapplication.cetcs.com.myapplic ...

  3. Netdiscover

    Netdiscover不仅支持主动arp检测,还支持被动的arp检测,即把网卡设置为混杂模式,收取所有局域网内的arp广播数据包,从而判断活着的ip. 主动发现命令格式:netdiscover  -i ...

  4. 寻找hive数据倾斜路

    前言 一直以来我都是从书上.博客上.别人口中听说数据倾斜,自己也从而指导一些解决数据倾斜的方式或者一些容易出现数据倾斜的场景.但是从来没有认真的去发现过,寻求过,研究过. 正文 我打开了hive官网  ...

  5. C# MVC LayUI实现下拉框二级联动

    一.layui.use 1.LayUI的官方使用文档:https://www.layui.com/doc/ 2.layui的内置模块不是默认就加载好的,必须要执行启动模块的这种方法后模块才会加载: 3 ...

  6. 入门大数据---MapReduce-API操作

    一.环境 Hadoop部署环境: Centos3.10.0-327.el7.x86_64 Hadoop2.6.5 Java1.8.0_221 代码运行环境: Windows 10 Hadoop 2.6 ...

  7. maven在windows10系统下安装配置和打包war

    maven下载地址:http://maven.apache.org/ 下载完成解压到 D盘 目录下D:\apache-maven-3.5.0\bin 配置maven环境变量: M2_HOME   D: ...

  8. Hystrix入门教程

    Hystrix入门教程 一·什么是Hystrix?Hystrix有什么作用?使用Hystrix有哪些适用场景 Hystrix是springCloud的组件之一,Hystrix 可以让我们在分布式系统中 ...

  9. HDU3686 Traffic Real Time Query【缩点+lca】

    题目 City C is really a nightmare of all drivers for its traffic jams. To solve the traffic problem, t ...

  10. Hive 报错SemanticException Error in parsing

    以下sql执行时报错SemanticException Error in parsing select clr.id,clr.customer_id,clr,contract_code,clr.cor ...