小团队也能做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

相关文章
|
测试技术 领域建模 定位技术
基于事件风暴的需求分析 | 方法案例一
事件风暴(Event Storming)源自领域驱动设计社区,由 Alberto Brandolini 在2012 年发明[1]。 事件风暴最早的名字是基于事件的建模(Event-Based Modeling),正如这个名字所暗示的,事件风暴在发明之初的核心目的是领域建模,在今天的大多数文献和实践中,事件风暴的核心关注点都是领域模型和软件架构。
4768 2
基于事件风暴的需求分析 | 方法案例一
|
安全 开发工具 Android开发
说一说你对移动应用中的社交分享功能的实现。
【4月更文挑战第1天】移动应用通过集成社交媒体SDK,如微信的,实现分享功能,增强互动性与传播。用户授权后,应用可定制分享内容,如图文,选择适合的平台如抖音。分享统计用于分析效果,优化用户体验,同时遵守法规,确保隐私安全。全面测试保证功能稳定,助力应用增长。
295 0
|
算法 Shell Linux
【Shell 命令集合 文件管理】Linux diff 命令使用教程
【Shell 命令集合 文件管理】Linux diff 命令使用教程
417 0
|
弹性计算 运维 数据挖掘
DDD与微服务架构浅析
主要介绍DDD,微服务架构,以及两者之间的关系
DDD与微服务架构浅析
|
4月前
|
存储 人工智能 自动驾驶
云栖重磅合集 | 吴泳铭:超级人工智能之路
吴泳铭在云栖大会发表演讲,指出AGI已成必然,终极目标是超级人工智能ASI。阿里云发布通义千问7款新模型,升级全栈AI体系,推出磐久128超节点、HPN 8.0网络等基础设施,全力推进AI技术发展。
云栖重磅合集 | 吴泳铭:超级人工智能之路
|
5月前
|
存储 设计模式 NoSQL
ddd领域驱动设计
领域驱动设计(DDD)是一种应对复杂软件系统的思维革命与系统方法。它通过“通用语言”统一团队认知,运用“限界上下文”划分业务边界,结合“聚合”“领域事件”等战术模式,精准构建业务模型。DDD不仅提升软件对业务的映射能力,更为微服务架构提供科学的边界划分依据,是打造高内聚、低耦合系统的核心方法论。
|
设计模式 架构师 Java
一文详谈领域驱动设计实践
本文作者结合在团队的实践过程,分享了自己对领域驱动设计的一些思考。
769 8
|
数据采集 自然语言处理 大数据
​「Python大数据」LDA主题分析模型
使用Python进行文本聚类,流程包括读取VOC数据、jieba分词、去除停用词,应用LDA模型(n_components=5)进行主题分析,并通过pyLDAvis生成可视化HTML。关键代码涉及数据预处理、CountVectorizer、LatentDirichletAllocation以及HTML文件的本地化处理。停用词和业务术语列表用于优化分词效果。
933 0
​「Python大数据」LDA主题分析模型
|
数据采集 自然语言处理 算法
淘宝评论的 API 接口获取:技术探索与应用
这篇文稿探讨了淘宝评论API在数据驱动的商业环境中的重要性。API接口使得高效、精准地获取淘宝评论成为可能,帮助企业分析消费者反馈、优化产品和服务,以及训练智能算法。通过API,商家能实时监控评论以快速响应市场变化,同时确保数据合规性和安全性。然而,获取和使用数据涉及复杂的接口调用、数据清洗、反爬虫机制应对等挑战。通过实际案例,展示了API如何促进产品优化、市场研究和智能客服改进。随着技术发展,未来将有更多创新应用,但也需面对更严格的法规监管。
|
算法 数据可视化 数据处理
YOLOv5实现图片内目标检测
本文介绍了如何配置yolov5的运行环境、如何进行数据标注、如何通过yolov5训练数据集实现图片的目标检测。目标检测在计算机视觉领域中具有重要意义,yolov5(You Only Look One-level)是目标检测算法中的一种代表性方法,以其高效性和准确性备受关注,并且在各种目标检测任务中都表现出卓越的性能。
1303 1
YOLOv5实现图片内目标检测