领域驱动设计DDD在B端营销系统的实践

通过营销活动实现客户/用户拉新、留存和促活是业界普遍采用的方法。为实现商户增长和留存,美团核心本地商业/商业增值技术部也构建了相应的营销系统来支撑商户的线上营销运营。在系统建设过程中,面临着业务体量大、行业跨度大、场景多样、客户结构复杂,需求多变等挑战。本文试图还原从0到1构建面向商户的营销系统过程中,并通过DDD(领域驱动设计)来应对系统设计和建设中遇到的业务复杂度高、需求多变、维护成本大等问题。

软件系统的复杂性主要体现在三个方面。

DDD(Domain-DrivenDesign,领域驱动设计)是应对软件设计复杂性的方法之一,它能很好的解决上述三个问题,但其概念体系复杂(如下图所示),学习曲线陡峭,即便深入研读DDD的两本经典著作,项目落地时依然有点“捉襟见肘”。

在展开介绍DDD之前,这里先回顾一下历史:

什么是领域?领域由三部分组成:领域里有用户,即涉众域;用户要实现某种业务价值,解决某些痛点或实现某种诉求,即问题域;面对业务价值,痛点和诉求,有对应的解决方案,这是解决方案域。什么是领域驱动设计?通俗地讲,针对特定业务,用户在面对业务问题时有对应的解决方案,这些问题与方案构成了领域知识,它包含流程、规则以及处理问题的方法,领域驱动设计就是围绕这些知识来设计系统。

以营销为例,营销系统所服务的用户有4类:运营、销售、电销人员和商户。解决3个核心问题:如何发券、发给谁、发什么(红包还是折扣券)。解决方案:通过营销活动来承载发券,不同的活动类型对应不同的玩法(如买赠、折扣、充送等);通过目标人群来确定发给谁;通过权益来定义发什么(如:红包、代金券、折扣券等)。

战略设计之前,先要确定用例,也就是业务是怎么玩的,有几种常见的方法:

下图是营销系统的用例图(起初并没有这么完整,这是多次迭代后的结果):

确定业务玩法后,接下来是统一语言。从用例里抽取概念,并对概念进行甄别(去伪存真,抽象合并)找到真正描述业务的概念。比如,有多种方式来描述活动规则:充值送规则、返还规则和档位等,技术可能会泛泛地称其为规则,业务人员则用档位来描述(比如充值送活动,充1000送100红包,充2000送300红包,充3000送500红包,那1000、2000、3000就是业务所认为的档位)。抽取概念时,尽量采纳业务侧的叫法,这样统一语言比较容易推行。

接着是明确概念的含义,概念由术语、Term(术语的英文版)和含义三部分构成。含义明确的术语就是统一语言,这些术语将用在日常需求沟通、产品文档,技术设计以及代码实现中。

明确概念后,接着理清概念之间的关系(1对1,多对1,多对多),确定概念所代表的的业务实体的核心属性和行为,从而得到概念模型。后续在业务需求讨论、产品和技术方案设计时,基于这个概念模型,使用统一语言进行描述,大家能很容易对齐;同时精心抽出的概念和建立的概念模型更接近业务本质,为后续的战术设计打下了基础。

基于统一语言和概念模型,业务-产品-技术三个角色比较容易就需求达成共识,保障沟通的一致性。

概念模型是一张大网,描述了概念间的关系以及关键属性,但还不能直接映射为代码模型,要映射为代码模型,还需拆解,化繁为简。

本源论认为世界的本质是简单的,复杂问题由多个简单问题构成;康威原理认为系统架构受制于组织沟通架构,系统落地时,首先要确定系统边界,再依据系统边界组织分工。这两个原理表明:我们可以将复杂问题拆解为多个简单问题,并针对团队资源组织分工协作。

这里提供一种拆解方法(来自美团内部)给出了一种拆解方法:按纵和横两个维度来拆,纵是从业务价值和目标维度划分,横是从功能的通用性维度划分。这里尝试从业务角度来拆,没有系统支持时,业务要在线下运转,通常根据要达成的业务目标,将业务流程或业务组分拆解为多个节点,并定义每个节点的职责以及对应的规范和标准,安排对应的组织或人员执行。简单地说,就是从业务问题和解决方案出发,拆解到对应的人。因此基于业务的拆分通常能实现系统用户、业务问题和解决方案之间的一致性。业务系统是把业务的玩法从线下搬到线上,在进行系统拆分时,也可以使用这个思路。从三个层面来进行:

营销系统基于问题域拆解为五个子域(活动域,权益域,人群域,推送域,数据域),每个子域解决特定的问题,各子领域相对内聚和简单:

下图是营销系统的整体上下文关系:

有了战略设计,构建了统一语言和概念模型后,如何验证概念模型呢?通常用两个方法:

战略设计得到了概念模型,战术设计则是将概念模型映射为代码模型,有很多编程范式,比如事务脚本、表模式、面向对象,函数式等,最好的方式是面向对象的实现。

从概念模型到对象模型:

两类对象:实体和值对象,这两者的区别是是否有统一标识和自己的状态。

有了对象模型,还需通过聚合根完成封装,如何确定聚合根的粒度?营销活动包含活动、库存、档位、档位项、目标人群五个对象,如果采用小聚合根模式,一个对象对应一个聚合根,这样每个聚合根都很简单。但从业务角度看,库存或档位会影响活动的状态,如:修改了库存或档位,活动需要重新审批和上下线,这种业务上的耦合需要在技术上进行处理。此时,就得在小聚合根上构建领域服务来封装这些逻辑。

聚合根的设计要遵循一定的原则:

如下图是营销系统的聚合根:

聚合根已经非常接近代码实现,落地代码时,大家还会纠结用贫血模型还是充血模型。SpringMVC通常运行在单例模式下,引入充血模型会增加理解成本和技术复杂度。另外,不适合放在聚合根里的领域逻辑,可以放在领域服务里,如:同时存在多个充值送活动时,用户只能参加优先级最高的一个,在充值送活动聚合根里会标识活动的优先级,但挑选优先级最高的活动并非聚合根的职责,但确实是领域逻辑的一部分,此时可通过领域服务实现。

从概念模型,类模型到代码实现,整个过程都要使用统一语言。在落地代码时,代码要体现出业务含义,比如下图的例子,要避免左边updateStatus()这样的方法,它没有体现业务含义(必须阅读代码实现,才知道这个方法做了什么);图中右边的submitCampaign(),approveCampaign(),cancelCampaign()则有明确的业务含义。

完成战术设计后,如何组织代码架构?无论是六边形架构,整洁架构还是洋葱架构本质上都是围绕着领域模型展开,应用层、基础设施层和外部接口都依赖领域模型:

下图是我们团队的工程实践,与前面三个图本质上是一样的。领域层和应用层次放在中间(两者都属于领域逻辑),基础设施和用户接口依赖中间层:

在聊需求的那一刻,设计就开始了,统一语言就是设计的一部分。

解决方案域在模型维度分为四层:

这里有两个陷阱:

另外,领域至少可以分为两大类:一是学科型,比如财务、会计、图形学、动力学,这类系统的设计须先深入理解学科知识;二是实践型,如CRM、订单交易等,是业务经验的总结,这类系统的设计不妨参考前人的实践。当然,如果自己的业务具有独特性,那就只能靠自己摸索了。

THE END
1.node.js毕设微美试营销系统程序+论文比较不同案例在用户管理、作品管理、营销模式等方面的异同,总结成功经验和失败教训,为微美试营销系统的研究提供实践参考。 问卷调查法:针对微美试营销系统的用户、员工等相关群体设计问卷,收集他们对系统功能(如店铺信息展示、作品类型偏好、作品购买体验等)的看法和建议。通过对问卷数据的统计分析,了解系统在实际使用中https://blog.csdn.net/zhiwen105/article/details/144328308
2.如何搭建一个高效且用户友好的在线平台选型云服务用户体验设计在当今数字化时代,搭建一个平台已经成为许多企业和个人的重要目标。无论是社交媒体平台、电子商务网站还是在线学习平台,成功的关键在于如何有效地设计和实施。本文将详细探讨如何搭建一个成功的平台,包括需求分析、技术选型、用户体验设计、运营管理等多个方面。 https://www.163.com/dy/article/JGHKFKDD0556A727.html
3.网络营销计划15篇多平台,比如我们可以利用搜索引擎、阿里巴巴、当当网等来帮我们的产品做推广。尤其是“一站式世界照明灯具专利信息”服务系统,在2第七届灯博会期间正式开通,建立了“世界照明灯具数据库”中专利文稿、外观设计、同族专利等数据库的基础建设,并向企业推广应用。 https://www.unjs.com/fanwenku/432083.html
4.旅游网站策划书(通用9篇)该系统主要包括:新闻发布系统、旅游线路发布及预订系统、游客出游意向询价系统、在线散客拼团系统、电子杂志订阅分发系统、电子邮件营销系统、在线市场调查系统、统计系统、动态栏目更新、专业旅游论坛系统、后台管理及权限分配等。系统采用Browse/Server模式,既用户端采用浏览器方式。https://www.ruiwen.com/wangzhancehuashu/5437227.html
5.旅游网站策划方案10篇该系统主要包括:新闻发 布系统、旅游线路发布及预订系统、游客出游意向询价系统、在线散客拼团系统、电子杂志订阅分发系统、电子邮件营销系统、在线市场调查系统、统计系统、动态 栏目更新、专业旅游论坛系统、后台管理及权限分配等。 系统采用Browse/Server模式,既用户端采用浏览器方式。 https://www.liuxue86.com/a/4981264.html
6.广西联通(云WiFi平台)(2)云Wi-Fi平台包括基础云平台、Portal集群、Radius集群、运营管控系统、智能营销系统、上网行为管控系统、网管监控系统。 (3)目标客户包括商场、企业、营业厅场所等,均通过云Wi-Fi网关统一接入到云Wi-Fi系统,实现统一认证管控。 (B)项目网络总体结构如图4.3.1所示。 http://www.shixunet.com/cgal89.html
7.壹点壹客推出全新在线销售系统,抢先体验壹点壹客推出的全新在线销售系统集合了创新的设计理念、智能化的管理功能和高效的营销手段。该系统拥有界面美观大方、操作便捷的特点,为企业提供一站式的电商解决方案。系统涵盖了产品上架、库存管理、订单处理、营销推广等全方位功能,帮助企业快速搭建专属的在线销售渠道。 http://www.yimaiai.com/news_detail.html?id=7751
8.《AI营销系统代码编写全攻略》AI 营销系统代码编写是一个复杂而又充满挑战的过程。在这个过程中,我们需要掌握编程语言、AI 基础知识,选择合适的工具与平台,构建语料库,设计脚本结构,并运用各种编写技巧。同时,通过实践项目尝试、在线课程学习和社区参与等方式,不断提升自己的代码编写能力和对 AI 营销系统的理解。 https://www.jianshu.com/p/79eda639d18f
9.2018年创业必备的105种工具编者按:本文作者Aaron Saari是ThisIsGrowth的首席执行官。他会为初创企业、小企业以及单独的企业家设计定制化自动营销系统。本文编译自Medium上原题为“The 105 Best Tools to Start Your Business in 2018”的文章。 任何一家企业都可以凭借这105种工具迅速吸引顾客、增加营收,实现运营自动化。 https://36kr.com/coop/toutiao/5122441.html
10.手机app外呼系统外呼系统优势?网络外呼系统网站应该具备营销和客户跟踪的功能。通过集成在线注册和订阅功能,企业可以更好地收集客户信息并进行营销活动。此外,通过分析网站访问数据和客户行为,企业可以更好地了解客户需求并进行个性化营销,从而提高营销效果。 网络外呼系统网站的设计要素 一个优秀的网络外呼系统网站应该具备以下设计要素,以确保用户体验和https://tool.a5.cn/article/show/75522.html
11.旅游策划书15篇该系统主要包括:新闻发布系统、旅游线路发布及预订系统、游客出游意向询价系统、在线散客拼团系统、电子杂志订阅分发系统、电子邮件营销系统、在线市场调查系统、统计系统、动态栏目更新、专业旅游论坛系统、后台管理及权限分配等。系统采用Browse/Server模式,既用户端采用浏览器方式。https://www.cnfla.com/cehuashu/2776397.html
12.营销型网站建设,外贸网站建设,深圳网站建设公司,企业网页设计定制网商在线深圳网站建设公司专业深圳网站建设,企业网站建设,外贸网站建设,营销型网站建设,定制开发,高端网站建设,品牌网站设计,深圳网站设计,深圳网站制作,企业网站建设,精准营销型网站系统 SEO为核心不用竟价自然排名第一页;定制需求 源码提供 终身维护 满意为止 8年品牌服务https://www.ew35.com/
13.武清开发区这些企业正在招聘!(第29期)1、精通机械零件、结构、传动设计及加工工艺、熟悉整机及系统布局设计熟悉电气元件选型; 2、非常精通Solidwork、CAD等辅助设计软件,熟悉办公软件; 3、熟悉机械工程相关国际和国家标准,国家法律法规; 4、良好的沟通说明能力,工作认真负责,严谨细致,良好的团队合作精神。 https://www.shkp.org.cn/content.html?type=lc&id=331414
14.售楼中心展示系统(艾欧泽亚售楼中心)售楼中心展示系统(艾欧泽亚售楼中心) 在线营销阵地 楼盘展示、视频展示、vr展示、购房咨询、分销拓客、报备管理、客户分析。全天候营销不掉线。 在线看房 支持图片看房、视频看房、vr看房,全方位展示项目信息,足不出户获取全面信息。 置业顾问 关联上级置业顾问,轻松锁客。一键拨打,不错失每一位客户!https://www.ymyk168.com/shouloumoban/3715.html
15.用户反馈运营技巧(在线反馈系统设计五要素)?在线反馈系统设计五要素 编辑导语:在线反馈系统是企业中的一个底层支持系统,起着重要的作用,为了便于大家更好地理清需求,以便更好地进行设计,作者梳理了在线反馈系统设计五要素,希望对你有所帮助。 在线反馈系统作为企业必备的一个底层支持系统,在企业业务运转中起着不可代替的作用。有些公司可能会直接使用钉钉的https://www.niaogebiji.com/article-469924-1.html
16.DIY自助设计系统名片设计台历设计贺卡设计该系统免费提供给快印店及广告公司使用,只用在企业通过网络接单实现盈利后,才会收取一定比例的模板下载费用,完全是零风险投入。 帮你做设计,让设计零成本、有创意、更个性。该系统具备强大的在线自助设计功能,海量模板素材不但为快印店省去大笔设计师人力成本,也不用花钱买素材,提高快印店及广告公司的工作效率,满足不https://www.1651ky.com/diy/
17.网络营销策划方案15篇所说的平台,是指由人、设备、程序和活动规则的相互作用形成的能够完成的一定功能的系统。完整的网络营销活动需要五种基本的平台:信息平台、制造平台、交易平台、物流平台和服务平台。 (六)网络营销组合策略 这是网络营销策划中的主题部分他,它包括4p策略——网上产品策略的设计;网上价格策略的设计;网上价格渠道的设计https://www.pinda.com/zhichang/cehuashu/207898.html
18.装饰公司网站模板营销型网站建设装企网络营销系统乐家装企业营销软件是一套专业为装修装饰公司的网络营销研发的专业家装公司网站系统,网站主要解决目前装饰行业网站设计不专业营销无效果的典型问题,包含目前各个装饰公司网站的主要及特色功能及内容,欢迎在线体验!服务电话:4006722009http://www.lehome114.cn/
19.花店创业计划书(精选5篇)3、网站应用系统设计 (1)网站形象设计 作为鲜花营销公司,由于经营的产品主要是鲜花,因此在设计公司的形象时,因该突出美丽、优雅的特点,所以网站的主色调为黄、橙、粉红、天蓝这四种最为大众接受的颜色。网站打出的.广告语也应该给顾客以舒适、温馨的感觉。 https://www.yjbys.com/chuangye/ziliao/chuangyejihuashu/627561.html
20.coco都可茶饮加盟加盟coco都可茶饮要多少钱?电话多少?规划设置POS机及ERP等各项信息系统,实时回馈精准营销数字,协助合作伙伴了解全面营业现况,掌握消费动态,拟订营销策略。 9、标准且效率的工务辅导 辅导伙伴习得效率监工与鉴定施工团队质量,以确保店铺外观得宜、内部动线设计流畅、营业设备齐全皆能到位,并符合coco都可茶饮公司CI要求。 10、独门专业的开发资源 coco都可茶饮https://www.jiamengfei.com/xm/112545
21.网络舆情分析报告通用12篇日本7-11就开发了一套系统,将POS机、物品分捡装置、便利店记录器的数据与天气预报资讯等结合,预测未来畅销货品与供货的及时性;这个例子说明了大数据爆炸虽然带来了新机会,但更多是需要企业改变现有营销数据搜集与预测习惯,更多的是改变决策习惯乃至4p相关的决策准则;但目前在国内,我们只看到越来越多舆情监测公司的出现https://zydk.xueshu.com/haowen/79668.html