
DDD
文章平均质量分 90
领域驱动设计全面介绍
方丈的寺院
个人网站@ stone-fang.cn
公众号@方丈的寺院
展开
-
微服务如何划分
摘要作为团队架构师/技术负责人你该如何进行微服务的划分呢?在以前的文章中讨论过这个话题,可落地的DDD(4)-如何利用DDD进行微服务的划分(2),最近结合在不同的开发团队实践,又有了新的思考,相比较之前的基于DDD会更加全面,也欢迎大家留言讨论。为何要划分微服务微服务架构被广泛用于互联网公司,其优势在于每个服务足够小,相互之间具备隔离性。配合一些基础设施,能够使得需求快速迭代上线。但是每个服务的粒度应该多大呢,服务之间的关系应该是怎样的呢?首先我们来探讨一下微服务划分的目标。微服务划分涉及到两个对原创 2022-03-06 11:27:30 · 12201 阅读 · 2 评论 -
可落地的DDD(7)-战术设计上的一些误区
几年前我总结过DDD战术设计的一些可落地的经验,现在回过头来发现,当初对这些概念的理解还是没有到位。比如战术设计的各个模块是如协作的。哪些是问题空间问题,哪些是解方案空间问题这篇文章重新阐述下。......原创 2022-07-15 10:55:39 · 835 阅读 · 6 评论 -
可落地的DDD(6)-工程结构
几年前我在可落地的DDD的(2)-为什么说MVC工程架构已经过时总结了基于DDD的微服务工程结构是怎么样的。那篇文章重点阐述了与MVC架构的区别。导致一些细节没有讲清楚,本文结合最近两年的实践,再详细阐述下。...原创 2022-06-26 11:46:34 · 1270 阅读 · 2 评论 -
可落地的DDD(4)-如何利用DDD进行微服务的划分(2)
摘要在前面一篇介绍了如何通过DDD的思想,来调整单体服务内的工程结构,为微服务的拆分做准备。同时介绍了我们在进行微服务拆分的时候踩过的一些坑。这篇介绍下我们最终的方案,不一定对,欢迎留言讨论。微服务划分问题分析上篇介绍过我们一开始的服务划分标准一个领域一个服务的规则去拆分,同时为了保证领域的纯洁性,我们区分了领域服务,和前台服务。领域服务就是领域逻辑,不直接对前端暴露。前台服务组...原创 2019-06-02 12:38:55 · 4707 阅读 · 2 评论 -
可落地的DDD(5)-战术设计
摘要本篇是DDD的战术篇,也就是关于领域事件、领域对象、聚合根、实体、值对象的讨论。也是DDD系列的完结篇。这一部分在我们团队争论最多的,也有很多月经贴,比如对资源库的操作应该放在领域服务还是领域对象中。聚合根应不应该暴露给外部,还是要转成DTO。这些问题我们讨论了大半年,最后大家基本达成了共识,在当前的业务规模下,这些问题没那么重要,可东可西。不会对代码的质量有啥大的影响。关于DDD的实...原创 2019-06-23 13:27:51 · 3714 阅读 · 1 评论 -
可落地的DDD(3)-如何利用DDD进行微服务的划分
摘要前面两篇介绍了DDD的目标管理、DDD的工程结构调整。这篇讨论微服务的划分。微服务是目前后端比较流行的架构体系了,那么如何做好一个微服务的划分?一个微服务的粒度应该是多大呢?这篇主要介绍如何结合DDD进行领域划分。工程结构代码上篇介绍了可落地的DDD的(2)-为什么说MVC工程架构已经过时很多朋友留言说,有没有sample code,要不然太湿了,不是很明白。这里写了个sample。...原创 2019-05-30 23:11:53 · 3821 阅读 · 3 评论 -
可落地的DDD的(2)-为什么说MVC工程架构已经过时
摘要mcv是一种软件设计模式,最早由Trygve Reenskaug在1978年提出,他有效的解决了表示层,控制器层,逻辑层的代码混合在一起的问题,很好的做到了职责分离。但是在实际的编码实践过程中,你会发现这个模式随着服务的扩展,mvc的问题通常一个前后端分离的系统,后端工程系统结构图通常下面这样 1. 四层 controller/service/manager/mapper 2...原创 2019-05-21 22:36:17 · 2364 阅读 · 4 评论 -
我们团队是如何落地DDD的(1)
最近发现文章老是被窃取,有些平台举报了还没有用。请识别我的id方丈的寺院。摘要DDD领域驱动设计,起源于2004年著名建模专家Eric Evans发表的他最具影响力的著名书籍:Domain-Driven Design –Tackling Complexity in the Heart of Software(中文译名:领域驱动设计,之后进行了很多迭代和演化,不过大多没有脱离这本书讨论的范围。因...原创 2019-05-19 11:20:50 · 3348 阅读 · 4 评论 -
代码重构-业务中台化
摘要本文主要介绍当随着业务的不断发展,原本一个服务的内容需要抽象出另外的服务,作为中台服务,提供给各个业务前台,提高前台业务开发效率。业务架构随着业务的扩展,一个服务的代码越来越多,启动越来越慢,开发的人数越来越多,不得不进行代码拆分,早期有些拆分是按分层拆分,将data,dao层拆分成公共jar,然后很多服务调用,结果导致的就是后期无法维护,业务增长了,分属于不同的开发组了,本来每个...原创 2018-07-08 17:45:01 · 8737 阅读 · 0 评论 -
领域模型驱动开发(1)
摘要习惯了MVC模式,习惯了敏捷开发,习惯了了小步快跑,还适合谈论领域驱动开发吗。领域开发是否就是慢节奏的开发, 本文结合自己的开发经历,和大家聊聊这个话题。一.业务代码是如何写烂的java web开发通常都是mvc模式,从早期的ssh主键到Spring+ Mybatis。所以通常一个工程的项目结构图就是controllerservicemanagerdao问题1:...原创 2018-06-17 20:47:18 · 2632 阅读 · 0 评论 -
领域模型驱动开发(2)-工程结构的调整
一. 背景目前很多的业务代码存在以下问题bean的创建太随意,基本就是一个需求一些对应的dto,vo,query bean。不同开发者对于同一个领域的东西有不同的bean,同一个开发者对于相同逻辑的bean,在经过2月+的时间,自己又定义出了一个差不多的bean -> 职责分散 不同开发者对于某块相同业务的逻辑校验放在了不同的service中 ->代码逻辑重复不同的后...原创 2018-08-04 20:35:16 · 3910 阅读 · 2 评论 -
DDD-领域对象与领域服务
问题什么是领域对象什么是领域服务领域对象的行为,与领域服务的行为区别原因为什么把这么小的点拿出来讲,最开始在讨论中领域对象与领域服务时,觉得行为放在service/entity中区别不大,只是一个放置位置的问题,并不影响到代码的抽象和复用,所以没有实行。但是最近在推动产品进行DDD业务建模,发现这个问题非常重要,关系到代码是否清晰表达了业务,这个也是我们进行DDD的初衷。定义领域...原创 2019-02-20 21:31:05 · 9451 阅读 · 0 评论 -
DDD-CQRS能解什么问题
背景在DDD代码实践过程出现一些看起来很别扭的实现为了查询,领域聚合根无限扩大如商品详情页聚合根public class BrandAggr { /** * 唯一标识 */ private Long id; /** * 商品简介 */ private ItemInfoVal brandInfoVa...原创 2019-03-13 21:37:15 · 4523 阅读 · 0 评论