脚踏实地系列之领域驱动设计--为什么我需要DDD

现在网上有很多讲DDD的文章,但往往一上来就直接讲DDD的某个概念和方法,而且也就是一个孤立的文章和观点,没有体系,如果在没有DDD的实施经验之前,去看这样的文章,会很不明白里面的一些筋筋道道,总会觉得是雾里看花,又是一个有着各种标签的大牛,在甩名词了。

特别是我看到了某个网站上有人有一个DDD的系列网上培训课(付费的),更是把教科书基本上重复了一大遍,让人听的也是摸不着头脑(本人一朋友听本人介绍了DDD后,觉得意犹未尽,网上买来看后观感),听后感觉和听前一样,所以为了解决当下一些朋友对DDD需求,所以才诞生这个系列。

所以在系列开始讲DDD之前,首先我们不是会讨论什么是DDD,而应该是先要搞清楚为什么我需要DDD,只有搞清楚了缘由,各位才清楚,我是为什么而来,需要什么方法和思路,也就是搞清楚我们面临的种种问题,哪些问题可以是DDD来解决的,只有这样,我们才能对其中所涉及到的概念才能切合,才能恍然大悟。我希望能够以实际案例出发,从我本人的思考角度,不光是讲解DDD的一些概念和名词,还要讲这些概念背后的解决的问题是什么,它从何而来,为何而来。要不然依然只能是懵逼的进来,懵逼的出去。

在现今这个时代,越来越多的事物,业务,生活,娱乐,工作流程等都已经信息化。那么伴随着这些业务开始了设计,开发,上线以及持续更新等等,我们会发现在这个过程中我们会面临一系列的问题和一系列的诉求(以下问题和诉求都来自于真实生活和工作,绝不造假:))。

问题一: 业务实际情况 只与 代码一一印证

我曾经待过一个公司,公司中有一个互联网产品已经比较稳定的运行了5年以上了,日交易量很大,业务比较复杂,业务和产品更新的频次也比较多,有一次,公司的产品体验部门负责人找到了我,希望我能帮助他画出整个系统的产品流程和业务流程(说是帮助一起干,其实就是希望我和我的开发干),当时我特别不理解,公司有产品部门呀,有产品文档呀,有业务部门呀,有需求收集书呀,怎么这个活让我们苦逼的开发干,我们开发自己的活已经干不完了,还要帮你们出这么个东西,让我脑中瞬间出现了这个图:

我强忍着怒火,开始和这个负责人一起找各个部门去要这些应该存在的文档,东西都要到了,但发现了一个问题,这些文档要么是过时的,要么不是过时的,但需要找到很多前面的文档做为现有的前提,这个文档才反应真实的产品和业务,而且即便有文档可以确认是最新的,但产品经理依然会补上一句:逻辑和流程还是需要与线上程序逻辑为准!我靠,绕了一圈,这个球还是回到了开发的脚下。听完了这个故事,我来梳理一下这个逻辑:



这个图的大意是:在正常情况下,应该由业务提出需求,产品进行设计,开发设计,开发,测试,上线这样的一个完整的体系,这个是由过程来保证整个体系的产出,但往往现实面临很多的挑战:比如需求的时效性,比如设计的有效性等等,这样挑战的结果往往就导致了有一部分真实的流程是那个红色箭头,这样日积月累,所以只有代码才是真正的业务的反映就不奇怪了。


问题二:开发是一个神秘部门

我曾经接触过这样一个公司,这个公司的CEO是一个业务好手,但是不懂开发(这不是太正常吗),手下有一个技术部门,有一个技术的leader,有一次公司的CEO 无意向我透露了一个看法:不知道这帮技术人员在忙一些啥,很多事情没有人跟进,但开发各个都说在加班,忙不过来,也不知道是不是在划水? 哇哇哇,虽然这种情况的确有管理不当等其他问题,但我们依然要看到,在外界(公司中除了开发部门),开发部门是整个公司最最神秘的部门,他们很忙,但具体忙的什么,大家不清楚,大家也没提什么高深需求呀,不就是加几个按钮,加了一两个页面吗?这让同为开发的我默默生出一身冷汗。



问题三:业务需要一个秋千,我们最终造了一个....这是什么鬼


业务的需求


我们最后实现了

这个漫画我印象中是很多年前程序员杂志给出的,给我的冲击和感受特别大,大家可以默默体会一下。



问题四:老板,前面离职的那个技术团队技术太烂了,现在产品根本无法维护,我有一个贼牛逼的框架,可以开始系统重构了!

笔者遇到过多次这种案例,而且在早期的职业生涯,笔者也这么干过。。。。 为什么?原因很简单,你会发现前任的代码要么注释不够,结构混乱,文档缺失(其实大部分不是故意缺失,见问题一),导致我们技术开发必须通过代码,数据库表来反推 产品设计以及业务流程和规则,“我有这个功夫,还不如我自己重新搞一套了”,多么熟悉的话语。所以往往老板被逼得没办法,只得被绑上重构的战车。可以看到这种类型的重构往往最核心的目的不是:为了业务更好的发展,更有效的发展(虽然这些目的也会提及,但都不是最核心的问题),而是为了某些人的熟悉产品和业务的垫脚石,一旦绑上战车,呵呵。所以重构后的技术就有底气去老板办公室:“老板,我要加薪!!!”。。。。。。。。。。。


诉求一:公司能不能只养几个设计人员,编代码的活我都外包?

曾今有一个老板找到了我,这个老板业务能力很强,但业务才刚刚起步,所以成本有限,养不起一个庞大的开发团队,所以希望有人能帮他完成这样一件事:高薪招几个懂开发的人,他们去把设计做出来,然后公司找外包团队再把这个设计去实现,然后再交付给自己的技术团队。其实外包这个办法已经很普遍了,但这里可能会产生几个问题:哪些业务和产品外包;外包后交付的东西是自己业务想要的吗,外包交付的质量如何;外包时如何减少项目的风险;外包交付的东西,如何让公司内部的开发自己能够快速消化?


诉求二:这个项目分析设计后需要30个人月,如果一个人需要干30个月,那公司能不能找30个人来,1个月完活收工?

依然是同一个老板,有一个项目通过一个设计和分析,我们发现其中这个系统一共大概需要30个人月的时间(其实这是成本核算),因为目前公司可投入的开发员工就一个左右,那么大概上可以得出整个项目实施周期在30个月左右,这个时候老板急了,直接说我们能不能找几个外包团队,凑30个人,这样一个月是不是就能完成项目?虽然这个结论比较可笑,但也可以看出,当我们用人月数来做项目成本控制时,很多项目直接领导人会因为周期等原因,会将其进行一些简单的换算,得出一些奇怪的结论。当然我这里不是探讨换算的对和错,但我们也要看到这个结论背后的合理性:当公司现有的自有人员不足已支撑未来的项目时,找来外部团队参与进来,节约时间,这个一定是合理需求。所以我们需要解决的是这么做所面临的挑战:一个较大型的项目,但如何控制好,几个团队对于项目的认知和理解的一致,如何进行任务的划分,如何减少团队间的沟通成本(主要是模块间的依赖)等等问题如何解决。




诉求三:开发干了4-5年了,拿起原型,套着spring框架,立刻就能写代码,但我的未来在哪里,职业规划如何做?5年后的开发模式是什么样的?

很多开发人员干了5年左右,会发现这么一个困惑,就是很多系统和项目都参与过了,但往往最终的实现就是套用spring框架,写着CRUD,这么干未来的出路都是一片茫然。对于未来的发展,我有一个基本的判断:随着openApi的开放越来越多,特别是云计算的到来,saas,paas,iaas等等,感觉越来越多的解决方案层出不穷的出现,在未来,可能我们再讲面对这么一个情况:通用型的服务和模块可以通过服务的模式拿来就用,简单的增删改查已经无法满足与公司的需求(因为简单的,通用的都会用云计算替代)




以上列举了很多场景和诉求,当然也并不是说这些场景和诉求一定是没有用DDD的问题或一定要用DDD来解决的问题,而是想通过这些场景和诉求的描述我们会发现,这里面有一个共性问题:就是在实际的项目设计开发中需求-设计-实现这三个过程往往都是自说自话,根本没有有机的结合(大部分的产品和需求主要关注点是在描述流程或则碎片化的场景),甚至脱节,所以导致以上问题,如果通过一个方法能够保证:需求-设计-实现 这三个线性的过程都能保证准确和一致性,那么以上的问题和诉求都是有可能解决的。那么这个方法在我看来就是通过:DDD。也就是说DDD 是一个用来保证需求-设计-实现相互不脱节的方法(具体为什么脱节,请仔细向上阅读前面描述的场景)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容

  • 随着14年左右开始,业界开始流行微服务架构,开始是基于Dubbo的微服务,后面慢慢的Spring 开源组织开始发力...
    志铉阅读 720评论 5 2
  • 1.埋点是做什么的 2.如何进行埋点 3.埋点方案的设计 近期常被问到这个问题,我担心我的答案会将一些天真烂漫的孩...
    lxg阅读 2,012评论 0 1
  • DDD,中文名为领域驱动设计,为业务开发中必不可少的指导方法论,本文以业务开发中战略设计和战术设计为例,将普通开发...
    RobynnD阅读 1,045评论 0 2
  • 眼睛睁开已是大年初六了,有的人已经走上了工作岗位,此刻我还在被窝。 时间过得可真快呀,从1月29号放假至今,都干了...
    若琳心田Kitty阅读 238评论 0 0
  • 前语:股市暴跌,终于有人倒下了,躺在病床上问护士:“爱情没了,亲情没了,友情没了,钱也没了,我是否一无所有?”护士...
    龙霄论股阅读 263评论 0 0