小团队也能做DDD-上篇(1)

简介: 小团队也能做DDD-上篇(1)

作者简介:胡正军,御家汇架构团队负责人,坐标湖南长沙。开发,运维,测试,大数据均有负责,杂而不精。乐于复杂系统重构,拥抱DDD


image.png


上一篇文章说了小团队也能做中台,里面提到我们用了领域驱动设计(DDD)这个方法论来开发中台,本文对我们为什么使用DDD做一个分享,下一篇再讲我们怎么实践的DDD


image.png


DDD出现得很早,2004Eric Evans写了《领域驱动设计:软件核心复杂性应对之道》,但使用并不广泛,拿长沙这边来说,使用的企业可以说是寥寥无几。



image.png


最近几年DDD随着微服务反而火了一把,各种技术群里一言不合就DDD,也有一些在线培训和书籍出版,比如人保的架构师欧创新就在极客时间开了专栏,预计本月还会出版一本书籍。然而大家虽然谈论得多,真正落地的少。


我认为原因有:

< 1 >系统不复杂,没必要用DDD;

< 2 > DDD概念多,理解难,懒得去学;

< 3 > 就算一个人学了也没用,需要团队都用起来,由于人性本懒惰,DDD对业务和开发都要求有点高,所以不想做,还是CRUD爽点。



image.png


DDD是为了解决复杂业务系统构建的一套方法论,有战略设计和战术设计两大块。战略设计的核心是统一语言和限界上下文,战术设计的核心是独立领域逻辑层。
复杂业务系统为什么要用DDD,可以从3个维度来说明。3个维度分别是软件开发过程复杂系统设计模块编码
可以看到这3个维度是一级一级降低维度的,软件开发过程涉及多个岗位(产品经理,开发,测试,业务运维),属于开发流程这个维度,复杂系统设计涉及的岗位是架构师或者高级开发,属于架构设计这个维度,模块编码涉及的岗位主要是开发了,属于代码编写这个维度。我们先分析这3个维度上有什么问题,再看DDD都能提供什么指导。


一、软件开发过程


image.png


一个简单系统的开发是不需要分这么多岗位的,大学期间做的一些兼职小项目就是一个人把需求,开发,测试,运维全做了,效率很高,如果说搞多个岗位多个人来做,反而效率很低。
不过这种情况随着项目复杂度上升就不一样了,一个人是没法搞定所有事情的,于是我们设立了各种岗位,通过团队分工让专业的人做专业的事情。
拿开发这个岗位来说还分了前端和后台开发,也是因为技术复杂性的要求,必须分工。一个理论是建立知识壁垒并能有效交换能提高效率,这个方面详细的论述可以看下八叉说的视频。通过专业分工来提升效率在生活中有很多地方都有体现,比如流水线作业什么的,这在国富论和科学管理中也有提到,这个方面详细的论述可以看下八叉说的视频。


image.png

相关文章
|
6月前
|
存储 消息中间件 JSON
|
6月前
|
缓存 架构师 中间件
成为工程师 - 如何做DDD领域驱动设计?
成为工程师 - 如何做DDD领域驱动设计?
|
7月前
|
中间件 BI 测试技术
【实践篇】领域驱动设计:DDD工程参考架构
领域驱动设计(DDD)参考架构旨在为团队提供DDD实践的起点,强调业务与技术的分离,考虑多种架构风格如分层、六边形等。它包括多限界上下文结构,每个上下文内有应用层(不含领域逻辑)、领域层(含领域模型和事件)和网关层。接入层负责外部请求的处理,业务层协调不同上下文。组件包括Start(启动)、Common(通用)、API、Facade、Application Service、External API、Query、Domain和Gateway,各组件有明确的职责和依赖关系,如Gateway处理技术细节并作为系统与外部的接口。架构设计是多因素权衡,适应实际工程需求。
327 0
|
前端开发 架构师 Java
领域驱动设计DDD从入门到代码实践
在本文中,作者将借鉴《实现领域驱动设计》的做法,介绍领域驱动设计的基本概念的同时,用一个虚拟的公司和一个虚拟的项目,把领域驱动设计进行落地实践。
13905 10
领域驱动设计DDD从入门到代码实践
|
架构师 算法 测试技术
小团队也能做DDD-中篇
小团队也能做DDD-中篇
251 0
|
前端开发 JavaScript NoSQL
DDD实战之二:看看代码结构长啥样
DDD实战之二:看看代码结构长啥样
DDD实战之二:看看代码结构长啥样
|
存储 Java 数据建模
DDD的精髓(3)
DDD的精髓(3)
319 0
DDD的精髓(3)
|
自然语言处理 安全 架构师
DDD开篇总结
之前写了两篇《DDD开篇》[1]与《DDD应对复杂》[2],是时候总结一下了 对于DDD的启蒙,不管是国内还是国外思维逻辑都是一样的。或者说如果你想写本关于DDD的书,大纲似乎是一样的 首先DDD是什么?给出定义,定义有些抽象,难以一次性接受,那就通过以往问题引出DDD,这时模型、复杂度、开发流程都是自然附带出的概念,再后面就是DDD的知识结构是什么,最后就是讲解一个实例,也有些会把实例穿插到各个篇章中
230 0
|
设计模式 SQL 开发框架
DDD开篇
从知道DDD到现在已经很多年了,看了不少理论知识,在项目中也使用了DDD,碰到些问题,也有些思考,整理一下,上升一下,形成一种适合自身的方法论 在回顾过程中,首先追根溯源,什么是DDD?为什么要使用DDD?如何给别人阐述这些最基本的概念与理念,真是个难题
254 0
|
算法 数据挖掘 程序员
小团队也能做DDD-上篇(2)
小团队也能做DDD-上篇(2)
162 0
小团队也能做DDD-上篇(2)