阅读目录:设计模式
DDD自己的技术就不介绍了,本篇文章要分享下我在推广DDD或者说实施DDD的过程当中的心得和宝贵的经验。事实证实,这是可行的方案。用好DDD是一回事,推广DDD是另一回事。也许已经有一套客观理性的推广技术的方案,可是我只能说DDD很是特殊。性能优化
咱们都知道本身用好DDD问题不大,让一两我的用好DDD也问题不大。你也许代码控制能力很强,也或者你的组员对DDD都有兴趣,在你的领导下,你让他们编写DDD模式的代码,问题也不大。可是做为一名架构师咱们的职责是要推广或引进适合本公司业务模式的某种技术或者最佳实践。你或许推广性能优化、界面设计等等,这都没问题。可是让你推广一些有着很强主观意识在里面的东西其实很难。由于每一个人的思惟模式不一样,对问题的理解和抽象的方式也不一样。那你如何让你们就DDD能达成一致的抽象理解呢。架构
你可能以为我在吹牛B,大家公司能实施DDD。实话告诉你,咱们实施了DDD了,并且效果很明显,很是成功,有图有真相。我用一种方式让咱们的最高领导人都一致同意这个价值。若是你推广DDD的角度是从技术出发,那么我能够很确定的告诉你行不通,在任何一家公司实施都不可能成功,除非老板是你爸。要想成功,你得让不懂技术的领导者能感受到它的价值,解决了某个痛点,这样你就成功了一半。性能
在强调下,做为架构师,在咱们的脑子里天天装的不是具体的一个技术,而是全局。你要把控的是一个面,是须要全面考虑。你能够本身回去研究某个技术,就好比我本身最近在学习JAVA、GO。技术人员天天都要学习的,懂得越多发现要学的东西越多,这是合理正常的。可是你要知道做为架构师的职责是什么,要搞清楚你本职工做的的目标是什么,这是我如今的良师益友给我最多的提醒和指导(借此真心的感谢个人领导)。单元测试
因此,我文章的标题里有价值导向,这符合企业运营规则,也符合咱们人的思考方式。技术导向,是技术人员的思考习惯。这没错,可是若是咱们要影响别人就要跳出来思考问题。学习
初版是我亲手设计的,感受还不错。测试
实施DDD得有个前提,它是解决业务问题的,不是解决某个技术问题的。或者准确点讲,它是解决业务系统问题,不是解决非功能性技术问题的。这点要认识清楚。而后你要考虑你从哪一个层面切入到整个研发流程中,让DDD的东西在某个环节发挥必定的做用,短时间不要太急,不要一口气所有推广出去。这会让人以为你是一个技术偏执人员,不是一个理性的架构师。切忌。优化
如何从业务开始就为其创造价值。这里有一个痛点就是业务术语、业务模型不统一,沟通成本太大。若是你能减小产品和技术的沟通成本,其实你就创造了价值,并且价值是巨大的。你能够引入DDD的知识来解决。有一个小窍门就是你刚开始不要说起什么DDD等一些专业的技术词汇,你要引导往这个方面去走。你能够说咱们须要一个手册,里面包含了专业的业务术语解释,若是能够的话在包含点基本的业务结构。引导和合做的方式让产品整理出来,你在加以修改和整理,由于你是知道DDD的整个路径的。spa
这个时候其实你已经在实施DDD了,千万不要以为DDD就是那些代码。架构设计
当业务手册逐渐成形,就会顺其天然的引导到技术人员那里。而后你在找个痛点将战术设计引入研发team中。仍是那句话,不要太强调DDD的战术。从头到外若是你都不提DDD的概念让DDD落地才是最理想的。
慢慢的从OO的角度引入高内聚低耦合,而后经过DDD的战术帮助研发去理解。
解决了业务问题,带来了价值。这是一个好的切入点,咱们继续前行。慢慢开始引入DDD的战略概念,前提是你要获得你们的信任,要负责任。
引入战略设计模式,开始用专业的DDD战略术语进行交流和引导。固然若是大家的交流和讨论是敏捷的最好,借助白板快速达成一致。通过一段时间再经过如今正式的会议进行一个概念巩固。此阶段须要借助大量的分享和培训让这个氛围起来。先达成共识。
到目前为止咱们已经全面开始DDD的推广,好几个研发部都看见了它的价值。好东西不要你多说,群众的眼睛是雪亮的。咱们还实施了单元测试,这是何等的骄傲。核心的业务对象咱们慢慢开始引入单元测试,手把手的教研发怎么写。
有时候须要借助一些外力来帮助咱们实施推广一些东西,这应该是通用的方式方法。那么DDD须要借助哪些力量来让推广更加的容易点。
能够借助QA来强调质量,好比引入codereview、同时把你的DDD包含在里面引入。要记住你的目标。
还能够借助你的领导来推广,固然有领导帮忙推广是幸福的,可是你要作好售前售后工做。别强推,拔苗助长。
还能够借助自动化测试的实施来推广你的领域模型提炼。经过单元测试让研发慢慢的重视领域模型的高内聚低耦合。
其实,到最后企业的SAAS平台建立首先须要的就是业务模型。你能够借助这个价值让DDD的价值最大化。并且事实也是确实如此。研究SAAS的人都了解,核心业务模型基本上是不多变化的。外围的个性化都是基于核心模型在扩展。
其实仅凭一篇博文很难说清楚细节。我只是给热爱DDD的同志们分享点我本身的可行方案和心得。其实这里面还有不少宝贵的东西值得分享。
最后还想说一句,做为一名架构师要知道“价值导向”、“风险驱动”。要为企业创造价值,要为企业规避风险。你只要作好这两点就已是至关的厉害了。要有耐性,要负责任,要作到良师益友,不少时候技术是要引导的,架构是在不断的演化中,因此不要急。目的是要作成,而不是我试过没成功。
本章内容我会在个人下本书中详细的总结出来(《B2B电商平台系统架构设计》,一本讲解B2B业务模式的系统架构设计,里面将包含DDD、SOA、SAAS、GRASP等重要的技术概念。在此先打个小广告推广下。)