Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >DDD实施经验分享—价值导向、从上往下进行(圈内第一个吃螃蟹DDD实施方案)

DDD实施经验分享—价值导向、从上往下进行(圈内第一个吃螃蟹DDD实施方案)

作者头像
王清培
发布于 2018-01-05 10:06:57
发布于 2018-01-05 10:06:57
1.1K0
举报
文章被收录于专栏:王清培的专栏王清培的专栏

阅读目录:

  • 1.背景
  • 2.从业务开始
  • 3.从战略到战术
  • 4.借助外力推动研发(QA、领导、自动化测试)
  • 5.领域模型与SAAS平台的内核(价值最大化)
  • 6.最后

1.背景

DDD本身的技术就不介绍了,本篇文章要分享下我在推广DDD或者说实施DDD的过程中的心得和宝贵的经验。事实证明,这是可行的方案。用好DDD是一回事,推广DDD是另外一回事。也许已经有一套客观理性的推广技术的方案,但是我只能说DDD非常特殊。

我们都知道自己用好DDD问题不大,让一两个人用好DDD也问题不大。你也许代码控制能力很强,也或者你的组员对DDD都有兴趣,在你的领导下,你让他们编写DDD模式的代码,问题也不大。但是作为一名架构师我们的职责是要推广或引进适合本公司业务模式的某种技术或者最佳实践。你或许推广性能优化、界面设计等等,这都没问题。但是让你推广一些有着很强主观意识在里面的东西其实很难。因为每个人的思维模式不同,对问题的理解和抽象的方式也不同。那你如何让大家就DDD能达成一致的抽象理解呢。

你可能觉得我在吹牛B,你们公司能实施DDD。实话告诉你,我们实施了DDD了,而且效果很明显,非常成功,有图有真相。我用一种方式让我们的最高领导人都一致赞成这个价值。如果你推广DDD的角度是从技术出发,那么我可以很肯定的告诉你行不通,在任何一家公司实施都不可能成功,除非老板是你爸。要想成功,你得让不懂技术的领导者能感觉到它的价值,解决了某个痛点,这样你就成功了一半。

在强调下,作为架构师,在我们的脑子里每天装的不是具体的一个技术,而是全局。你要把控的是一个面,是需要全面考虑。你可以自己回去研究某个技术,就比如我自己最近在学习JAVA、GO。技术人员每天都要学习的,懂得越多发现要学的东西越多,这是合理正常的。但是你要知道作为架构师的职责是什么,要搞清楚你本职工作的的目标是什么,这是我现在的良师益友给我最多的提醒和指导(借此真心的感谢我的领导)。

所以,我文章的标题里有价值导向,这符合企业运营规则,也符合我们人的思考方式。技术导向,是技术人员的思考习惯。这没错,但是如果我们要影响别人就要跳出来思考问题。

第一版是我亲手设计的,感觉还不错。

2.从业务开始

实施DDD得有个前提,它是解决业务问题的,不是解决某个技术问题的。或者准确点讲,它是解决业务系统问题,不是解决非功能性技术问题的。这点要认识清楚。然后你要考虑你从哪个层面切入到整个研发流程中,让DDD的东西在某个环节发挥一定的作用,短期不要太急,不要一口气全部推广出去。这会让人觉得你是一个技术偏执人员,不是一个理性的架构师。切忌。

如何从业务开始就为其创造价值。这里有一个痛点就是业务术语、业务模型不统一,沟通成本太大。如果你能减少产品和技术的沟通成本,其实你就创造了价值,而且价值是巨大的。你可以引入DDD的知识来解决。有一个小窍门就是你刚开始不要提及什么DDD等一些专业的技术词汇,你要引导往这个方面去走。你可以说我们需要一个手册,里面包含了专业的业务术语解释,如果可以的话在包含点基本的业务结构。引导和合作的方式让产品整理出来,你在加以修改和整理,因为你是知道DDD的整个路径的。

这个时候其实你已经在实施DDD了,千万不要觉得DDD就是那些代码。

当业务手册逐渐成形,就会顺其自然的引导到技术人员那里。然后你在找个痛点将战术设计引入研发team中。还是那句话,不要太强调DDD的战术。从头到外如果你都不提DDD的概念让DDD落地才是最理想的。

慢慢的从OO的角度引入高内聚低耦合,然后通过DDD的战术帮助研发去理解。

3.从战略到战术

解决了业务问题,带来了价值。这是一个好的切入点,我们继续前行。慢慢开始引入DDD的战略概念,前提是你要得到大家的信任,要负责任。

引入战略设计模式,开始用专业的DDD战略术语进行交流和引导。当然如果你们的交流和讨论是敏捷的最好,借助白板快速达成一致。经过一段时间再通过现在正式的会议进行一个概念巩固。此阶段需要借助大量的分享和培训让这个氛围起来。先达成共识。

到目前为止我们已经全面开始DDD的推广,好几个研发部都看见了它的价值。好东西不要你多说,群众的眼睛是雪亮的。我们还实施了单元测试,这是何等的骄傲。核心的业务对象我们慢慢开始引入单元测试,手把手的教研发怎么写。

4. 借助外力推动研发(QA、领导、自动化测试)

有时候需要借助一些外力来帮助我们实施推广一些东西,这应该是通用的方式方法。那么DDD需要借助哪些力量来让推广更加的容易点。

可以借助QA来强调质量,比如引入codereview、同时把你的DDD包含在里面引入。要记住你的目标。

还可以借助你的领导来推广,当然有领导帮忙推广是幸福的,但是你要做好售前售后工作。别强推,适得其反。

还可以借助自动化测试的实施来推广你的领域模型提炼。通过单元测试让研发慢慢的重视领域模型的高内聚低耦合。

5.领域模型与SAAS平台的内核(价值最大化)

其实,到最后企业的SAAS平台创建首先需要的就是业务模型。你可以借助这个价值让DDD的价值最大化。而且事实也是确实如此。研究SAAS的人都了解,核心业务模型基本上是很少变化的。外围的个性化都是基于核心模型在扩展。

6.最后

其实仅凭一篇博文很难说清楚细节。我只是给热爱DDD的同志们分享点我自己的可行方案和心得。其实这里面还有很多宝贵的东西值得分享。

最后还想说一句,作为一名架构师要知道“价值导向”、“风险驱动”。要为企业创造价值,要为企业规避风险。你只要做好这两点就已经是相当的厉害了。要有耐性,要负责任,要做到良师益友,很多时候技术是要引导的,架构是在不断的演化中,所以不要急。目的是要做成,而不是我试过没成功。

本章内容我会在我的下本书中详细的总结出来(《B2B电商平台系统架构设计》,一本讲解B2B业务模式的系统架构设计,里面将包含DDD、SOA、SAAS、GRASP等重要的技术概念。在此先打个小广告推广下。)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DDD精粹速读(一)
DDD是一种软件设计和构建方法,其重点在于独立于数据持久化等技术问题,准确表达业务规则。
JavaEdge
2025/06/01
100
DDD精粹速读(一)
第二章、初识DDD
理论上DDD可以指导所有业务系统的分析设计与开发。但从实践经验角度来讲,并不适合不加区分的在所有团队和业务系统建设时实施DDD,尤其是DDD推荐的CQRS架构,原因大概有以下几点:
yd
2020/11/13
5220
第二章、初识DDD
DDD在大众点评交易系统演进中的应用
本文主要涉及境外出行、商场团购和内容商业化等三类交易业务场景。在大众点评App里,在境外城市站有美食、购物、商场、景点、门票、当地玩乐等频道入口,可以购买境外出行交易产品,在境内的逛街/商场频道可以找到商场团购优惠以及商场团购代金券。
美团技术团队
2024/05/15
2430
DDD在大众点评交易系统演进中的应用
7Fresh系统快速构建之路——DDD领域驱动设计实践
7Fresh是京东第一个线上线下融合落地的零售创新业务模式,店内有大量设备的集成,设备供应商达50多家,针对线下业务的特点,团队独立规划和设计POS收银系统、店内生产系统、加工系统、货架陈列系统、魔镜
京东技术
2018/06/20
1.5K0
React语境下前端DDD的长年探索经验
‍‍‍‍‍ 导语 | 腾讯前端工程师唐霜在React项目中,尝试使用DDD方法论为业务对象建模,其所在团队形成良好的业务沟通规范和业务逻辑沉淀流程,构建了更加稳固的业务系统。作者将多年的积累探索经验总结分享出来,从对业务的思考、react项目的特征出发,阐述在项目中进行的前端DDD探索。欢迎阅读和交流。 前言 我们所处的业务团队服务于腾讯某投资部门,系统涉及的投资相关业务在国内具有典型意义,是覆盖一级市场、二级市场、基金的多品类全流程的投资系统。其中包含了对投资项目本身的业务处理,也包含了投资流程的工
腾讯云开发者
2023/01/18
7370
React语境下前端DDD的长年探索经验
DDD战术篇:领域模型的应用
领域驱动设计DDD在战术建模(后文简称建模,除非特别说明)上提供了一个元模型体系(如下图),通过这个元模型我们会对战略建模过程中识别出来的问题子域进行抽象,而通过抽象来指导最后的落地实现。 (DDD构
ThoughtWorks
2018/04/17
1.2K0
DDD战术篇:领域模型的应用
坚定推动 DDD 一年后,去哪儿网如今怎么样了?
微服务盛行之后 DDD 又再次回到我们的视野之中,并一度成为各大公司竞相投入的重地。DDD 指的是领域驱动设计,是一种架构设计方法论,帮助我们拆解业务、划分业务、确定业务边界,继而可以更好地实现技术架构的演进。
深度学习与Python
2022/03/22
6060
坚定推动 DDD 一年后,去哪儿网如今怎么样了?
企业架构与领域驱动设计的融合
DDD的作用范围主要还是针对系统级的分析、架构与设计,在更高的层面上,即将问题空间扩大到超过系统范围,变成企业或组织范围之后,DDD的模式就显得捉襟见肘了。此时,可以考虑引入企业架构的思想,尤其是业务架构的内容,给了DDD很好的补充,又或者说,将企业架构与DDD融合起来,就能真正串联起战略和战术设计了。
张逸
2023/03/23
2750
企业架构与领域驱动设计的融合
怎么说服领导,能让我用DDD架构?
我也苦思冥想,怎么跟领导说咱们从 MVC 升级到 DDD 吧,因为 DDD 代码结构更加清晰、领域驱动比测试驱动开发更加先进、研发的兄弟们也更想用用新框架等。
小傅哥
2022/03/28
6500
怎么说服领导,能让我用DDD架构?
DDD精粹:运用子域进行战略设计
本文作者 VaughnVernon 一位经验丰富的软件工匠,也是追求简化软件设计和实现的思想领袖。他是畅销书《实现领域驱动设计》和《响应式架构:消息模式Actor实现与Scala,Akka应用集成》的
用户1682855
2018/06/08
1.1K0
重新理解微服务之终究绕不过这4个坎?(观点探讨)
  本文于 2022.6.29,首发于ITPUB 官方公众号,作者陈珙,未经授权禁止转载。如需转载,请联系 ITPUB 公众号。
陈珙
2022/06/30
3530
重新理解微服务之终究绕不过这4个坎?(观点探讨)
DDD领域驱动设计初探
我们怎么用一套系统化的方法,抽丝剥茧、一步一步地把需求落实到代码呢?咱们看看下面这张图,它表示了领域驱动设计中的主要流程。
燃192
2023/04/10
4840
DDD领域驱动设计初探
如何从0到1实践DDD
本文作者:bryanzhao,微信支付后台开发工程师 | 导语 随着业务的不断发展,我们发现自己的系统开始变得有点臃肿,为了减少复杂性,我们尝试借助DDD来改善我们的系统。本文记录了自己对DDD的理解和实践过程,欢迎大家一起探讨。见识所限,难免有理解不到位,希望路过的大佬不吝赐教。 一、为什么需要DDD 当朋友和你聊工作时,你能否一语中的,说清你在开发中的业务内容及其价值? 当产品和你聊需求时,你是否遇到过反复沟通之后才发现讲的不是同个东西的情况? 当你在做需求评估时,你是否经常发现一个小的需求改动,总
腾讯大讲堂
2021/11/10
7900
基于DDD的前端项目架构设计与实战
注意:本文极长,超过17000字,可能需要花30分钟以上才能阅读完,且内容要点密集,可能需要在读后花费比较多的精力和时间深入理解。
否子戈
2023/03/08
1.6K0
基于DDD的前端项目架构设计与实战
架构师如何看待统一语言
•技术人员使用业务人员的用语作为开发词汇•技术人员要将这些词汇映射到代码实现中•业务词汇整理出来,并随着项目发展一点点修正扩展
码农戏码
2022/11/18
4230
架构师如何看待统一语言
如何使用 DDD 指导微服务拆分?
软件架构的发展经历了从单体架构、垂直架构、SOA架构到微服务架构以及到现在最新的service mesh(网格服务架构)的过程。借用dubbo的网站架构发展图和说明:
架构精进之路
2021/07/30
1.9K0
如何使用 DDD 指导微服务拆分?
DDD 领域驱动设计落地实践系列:战略设计和战术设计
通过前面的文章介绍,相信大家对于什么是 DDD 有了初步的了解,知道它是一种微服务的架构设计方法论,为我们解决如何建立领域模型,如何实现微服务划分等提供了方向和指导。但是对于如何具体落地使用 DDD,可能大家还是一脸懵 B 的状态,因此从本文开始以及后面的文章将对如何进行 DDD 落地进行详细的阐述。在这其中还是会涉及到 DDD 中的一些重要概念,原本想着在一篇文章中介绍所有的概念,但是我觉得,概念总是在它该出现的时候出现才会让大家印象深刻,否则这些概念只是死板的概念,我们不清楚他为什么出现以及可以解决什么问题。
慕枫技术笔记
2023/03/20
9610
DDD 领域驱动设计落地实践系列:战略设计和战术设计
研发深恶痛绝,业界持续热捧,DDD 到底是啥?
冯友兰治哲学,提出“照着讲”和“接着讲”的方法论。近两年,我断断续续梳理出关于领域驱动设计的两个 PPT:《领域驱动设计》和《领域驱动设计四论》。前者的内容主要是关于 DDD 经典著作的读书笔记,可视为照着讲,以证明自己学有所本,讲的不是野狐禅;后者则是在继承的基础上所做的创新阐释,可视为接着讲,发前人之未发。本文重点围绕《四论》展开,从四个方面梳理出 DDD 的整个逻辑脉络。
腾讯云开发者
2023/10/23
2K0
研发深恶痛绝,业界持续热捧,DDD 到底是啥?
领域驱动设计模式的收益与挑战
《软件学报》在2021年第32卷第9期刊登了一篇论文:《领域驱动设计模式的收益与挑战:系统综述》[1]。这篇论文是学术界在这一领域开山之作。
码农戏码
2021/11/18
1.3K0
领域驱动设计模式的收益与挑战
谈一谈 DDD
最近 10 年的互联网发展,从电子商务到移动互联,再到“互联网+”与传统行业的互联网转型,是一个非常痛苦的转型过程。在这个过程中,一方面会给我们带来诸多的挑战,另一方面又会给我们带来无尽的机会,它会带来更多的新兴市场、新兴产业与全新业务,给我们带来全新的发展机遇。然而,在面对全新业务、全新增长点的时候,我们能不能把握住这样的机遇呢?
冬夜先生
2021/12/06
5100
相关推荐
DDD精粹速读(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档