DDD 是什么? 要讨论需不需要关注 DDD,首要的是先了解 DDD 是什么。Alberto 认为,DDD 是一种在面向高度复杂的软件系统时,关于如何去建模的方法论,“它的关键点是根据系统的复杂程度,建立合适的模型”。在 图片源:http://insights./ddd-architecture-design/ 具体来讲,DDD 方法论在系统建模过程中,可以为团队中的各个角色提供一套统一语言,避免组件划分过程中的边界错位,完成领域图预演、需求分析、架构模型、代码模型、测试等工作。“统一语言”概念在 “领域驱动设计”中的“领域”一词指的是要实现的软件系统所要解决的实际问题所处的整个领域范围,它不仅包括系统架构的相关问题,还涉及到系统所支持的业务等内容,但它是与具体的开发技术无关的。也就是说 DDD 并不是直接给你建议某一个系统架构,它的执行结果是呈现一个方案,可以从这个构建出的模型中决定你去用什么技术来实现什么样的架构,进而来完成一个系统的设计。技术在这个过程中是被选择的,备选的各种技术只是像一个列表一样摆在眼前,它要根据你的领域需求来选择,比如“选择采用微服务架构”。 也正是因为它关注的是领域,而不是具体技术,所以 DDD 其实不仅可以应用在软件系统的开发中,也可以在其它领域,诸如测试体系的建设、公司的管理、需求变更的跟进和项目的管理。 总结起来,DDD 的一个生命周期是这样的:在设计和实现一个系统的时候,这个系统所要处理问题的领域专家和开发人员以一套统一语言进行协作,共同完成该领域模型的构建,在这个过程中,业务架构和系统架构等问题都得到了解决,之后将领域模型中关于系统架构的主体映射为实现代码,完成系统的实现落地。而用什么方式去做领域模型的构建,方法是多样的,Alberto 自己就为此发明了 Event Storming(事件风暴),并成为了一种经典的 DDD 落地模式。 Alberto 补充到:“为了方便理解,可以类比精益创业(Lean Startup),在我看来它是与 DDD 同个层次的概念,它也是一种能够通过快速对业务进行分析,快速去建模,支撑业务的模式。” 从微服务到 DDD DDD 自 2004 年出现以来,其核心概念基本没发生什么变化,但是这些年来,DDD 整体的传播与实践都在向好的方向发展着,Alberto 认为有几个时间点使他印象深刻: 2003 2007 年,Alberto 开始接触 DDD,他听了 Eric 的演讲,这让他很震撼,因为他在这之中了解到 DDD 对于处理界限上下文(BoundedContext)的思路很有价值。于是他开始深入了解 DDD; 到了 而从国内来看,王威认为 2014 年微服务的兴起是 DDD 的一个重要里程碑。不可否认,很多人是因为微服务才了解 DDD 的。在听说了微服务架构之后,人们觉得采用微服务架构会让系统开发与运维管理变得简单高效,同时实现的系统会更加合理,更加高可用、高性能,但是当他们实际去做微服务架构的时候,有不少人会发现自己做得并不好,没法取得人们“吹捧”的那些效果,“就算用了微服务架构也不能解决他们的问题,反而带来很多开发与运维上的负担”。于是他们去咨询、去找方法,最后发现其实是自己划分微服务的方法出错了,这个时候才知道人们在谈论微服务的时候,其实都没有讲到一个点:应该用 DDD 的思想去指导微服务的实践。 是的,关于微服务架构怎么做,网上已经有很多相关理论和实践分享了,但是很少有人会说这个东西需要在 当然,人们谈论微服务而不涉及 不管从国外还是国内来看,目前 DDD 看到这些变化,Alberto 与王威都认为 DDD 迎来了发展的最佳时机。越来越多人关注 DDD,而且出现了更多的企业去使用 DDD 的优势做业务,这使得目前 DDD 的境况不会变得更糟,但是 Alberto 提出了他的担忧:“我害怕 DDD 会不会最后变得像敏捷(Agile)那样。”王威进一步解释:“敏捷一开始其实是很好的,它的原则非常理想,大家对它的实践也非常广,但是目前来看敏捷,会发现每个人的实践都不同,大家对它的认知可能有分歧,甚至有些实践背离了敏捷的初衷。”两位都不希望 DDD 将来会发生类似的情况。 我们需要关注 DDD 吗? DDD 通常来说,DDD 适用于任何规模、任何性质的公司,这是一种通用的、具有指导意义的方法论,因此它可以在各个业务场景里发挥作用。 王威认为,DDD 作为一种方法论,我们更应该关注的是它能够帮助团队针对业务达成一个统一的认知。在这个业务变化节奏相当快的时代,系统架构是必须不断演进的,而 另一方面,在一些特定的领域,比如需要有人参与指导、进行技术交流,以及需要大量人力协作而容易导致秩序混乱的设计工作,DDD 因为其关注业务问题域的特性,可以使得执行效果更好。 “而具体到创业公司,他们因为需要使用成本更低的方式去打入市场,所以使用 DDD 会让这个过程更加顺利。”Alberto 认为这是创业公司的切入点。 所以回过头来看:** 我们需要关注 DDD 吗?** 不言而喻。Alberto 与王威在这个问题上都回答的特别坚定:Sure,需要! 谈及如何去关注 DDD,Alberto 说他的经验是积极参与到本地社区中去,他认为这是一个很有效的方式,社区可以提供很多信息。同时他觉得看书并不是很好的方式,与其一个人看书学习,不如找一个人一起学习,确保你掌握了学到的东西。 而为 DDD 实践者构建一个社区,让关注 DDD 的人有一个交流平台,也正是此次 DDD 中国峰会的价值所在,举办方想以此在国内第一次正式地告诉软件设计从业者:DDD 是在我们这个业务高度不确定的时代,解决业务问题,适应业务变化时需要采用的架构思想。 |
|