DDD领域驱动设计

     

高内聚低耦合的集中决策设计

605 2

假设,我们正在构建另一个电子商务平台。其关键业务流程之一当然是处理订单。付款成功后,订单模块(域)必须异步调用仓库,准备购买的货物。然而,这些货物可能并不在那里。通常情况下,这不是什么大问题,因为我们.

概念、实体、数据三者之间区别?

521 1 5K
假设一个场景:与客户讨论开始新的工作:客户:我们的用户需要处理三种不同类型的任务:快速任务、复杂任务和监督任务。我们:它们之间有什么区别?客户:快速任务只是登记某人做了某事。真的很简单。我们:嗯。客户.

幽默:没有逻辑约束的微服务

519 2 2K
图中鸡蛋克和鸡蛋黄以及炉火三个微服务,如果为了吃一个煎鸡蛋,需要聚合这三个微服务调用。这是过于细分导致的问题,忽视了业务逻辑,如果煎鸡蛋是业务逻辑,那么为了完成这个目标,需要聚合这三个微服务。但是如果.

什么是团队拓扑? - martinfowler

607 1 2K

任何大型软件工作,如大公司的软件产业,都需要大量人员,而只要有大量人员,就必须想办法把他们分成有效的团队。组建以业务能力为中心的团队有助于软件工作对客户的需求做出响应,但所需的各种技能往往让这些团队不.

洋葱片架构 - odrotbohm

799 5K
15年的洋葱架构是时候整容了。自 Jeffrey Palermo 发布他的洋葱架构系列第一篇博客以来,已经过去了几乎整整 15 年。在那篇文章中,他总结了本质上构成Alistair Cockburn六.

Xapo银行去中心化的DDD架构实践分享 - martinfowler

716 9K

Xapo银行使用领域驱动设计、团队拓扑和架构建议流程三种方式实现企业架构的去中心化:软件架构在构建软件系统实践中的作用一直备受争议。在大多数组织中,你会发现某种 "架构 "功能,通常打着 "企业架构 .

DDD实践中如何设计上下文BC之间的映射关系?

412 5K

如何区分产品基础设施和技术基础设施 : 技术基础架构--不需要构建业务/产品背景,主要由开发人员使用。它不会立即影响用户体验,并且可以包含在一个特定的行会中。 产品基础设施——影响用户体验或有产品需求.

前端能整合后端的界限上下文BC吗?

380

在理解域、子域、限界上下文、模块等之间的差异时遇到过困难?问题在问题空间中,也就是我们需要解决的问题中:Domain领域(例如,酒店)子域(例如,“预订”、“住宿”)。领域包含知识以及我们想要解决的一.

如何通过80%抽象建模防止单体走向混乱

704 9K
熵是一个普遍法则:如果不重新投入能量,一切都会趋于无序。软件也不例外。当进化发展受到时间和/或预算的限制时,系统就会变得“单体”。单体架构通常是对不一致抽象的意大利面条的委婉说法。Gusto已经建立了.

验证与业务规则的区别 - Mark Seemann

520 1 4K

验证是区别于业务规则的定义。本文提出了软件开发中验证的定义:介绍了我目前是如何区分验证和业务规则的。我发现这种区分是有用的,尽管这也许是一个因果关系颠倒的例子。我的定义是这样的:验证是一个决定数据是否.

关于领域建模的最佳书籍

918 1 3K

如果有人在我早期的职业生涯中告诉我,我将成为函数式编程的有力倡导者和函数式软件工程基础书籍的作者,我一定会觉得难以相信。函数式编程真的值得我为之奉献一生吗?然而,一旦我体验到函数式编程的纯粹之美,就再.

团队拓扑:模块化与划分团队相结合

640 9K

Martin Fowler的同事Matthew Foster描述了团队拓扑和领域驱动设计如何帮助组织扩展技术架构和团队结构,从而显着提高开发速度。模块化架构能改善软件交付吗?是的!但要注意一些问题。这.

康威定律:团队结构与软件架构之间的相互作用

545 2K
英国议会下议院在1941年的闪电战中被摧毁后,上议院就如何重建下议院展开辩论。一些人认为这是向马蹄形 "架构 "转变的机会,但丘吉尔团队主张他们保留 "对抗性的长方形架构"。他认为,这种布局本身就是英.

使用反需求方法寻找隐藏的业务逻辑和系统边界

667 1 5K
我们都喜欢建立绿地新项目。 但不可避免的是,开始一个新的项目需要与商业利益相关者进行大量的会议,以确定初始需求和典型的数据模型。这些都是......不那么有趣的。当这些会议之一发生在高碳水化合物的午餐.

领域驱动设计:协调软件架构和业务战略

463

本书首先介绍了DDD的基本概念,强调了准确理解和建模业务核心领域的必要性。然后,它解释说,组织可以通过将软件解决方案与现实世界的问题领域相一致来开发更有效和更有价值的软件系统。书中提出的一个关键观点是.

业务规则的两种类型 - Ronald

756 4K

规则往往直接涉及到行为:不穿衬衫,不提供服务。这种规则被称为行为behavior规则。世界上这样的规则比比皆是;商业和社会都建立在这些规则之上。规则也可以间接地与行为相关,通过帮助形成行为所依据的理解.

使用事件风暴建模作为微服务设计的技巧 - Nick

560 4K
事件风暴EventStorming 是一种非常流行的技术,它使我们能够比传统技术更有效地探索、分析和建模业务领域。结果是我们创建了设计更好的软件系统和问题解决者团队,而不是订单接受者。如果使用得当,E.

什么是业务规则? - Ronald

769 3K

规则是行为或行动的指南。它为判断或评价该行为或行动提供标准。每条规则都倾向于取消某种程度的自由。规则是你如何在一个群体或社区内从无序中创造秩序并确保一致的经验。每当你希望能够解释结果的 "原因 "时,.

使用状态机和 TypeScript 进行领域建模

405 10K

希望通过这篇文章完成的是让人们以不同的方式看待 TypeScript,并展示我认为是主流语言中最好的类型系统之一。先上代码:type Line = {  sku: string;  quantity:.

在单体到微服务迁移中如何重构关系数据库?

589 1 10K
本文介绍将现有单体应用程序迁移到微服务中,如何重构数据库?数据库重构模式可以通过多种方式重构关系数据库(例如 PostgreSQL)以优化基于微服务的应用程序架构的效率。如前所述,数据库是结构化数据的.

黑石贝莱德如何实现基于领域驱动的资产管理?

571 1 4K

Alan Moore (Aladdin 首席架构师、技术研究员和董事总经理)描述了贝莱德在资产管理中使用领域驱动设计DDD,以及我们如何使用它来定制、扩展和调整 Aladdin 以满足客户的需求。Al.

1580万美元的软件错误

817 4K

64 个软件错误、复杂的业务规则和 1580 万美元的错误!如果我们的官僚主义使按时支付教师工资这样看似简单的事情难以完成,那么我们如何才能解决我们作为一个城市所面临的其他挑战呢?2022 年,旧金山.

DHH:如何从微服务中恢复?

1048 3 3K

我不否认在某些情况下微服务优先的架构很有意义,但我认为这种情况很少见。绝大多数系统都可以通过启动并保持在一个宏伟的单体中得到更好的服务。昨天引爆互联网的Prime Video 案例研究只是最新的例证。.

领域驱动设计:做正确的事

1236 1 3K

任何给定软件项目的成功都可以归结为一个相当简单的定义或规则:我们需要构建正确的东西,我们需要正确构建这个东西。这是一个非常抽象和简单的定义,即使不是原始的定义。然而,这是一个很难争论的问题。做正确的事.

使用事件建模实现软件协作和业务设计

518

讲故事使人类能够将知识传给下一代,并依赖于我们存储记忆的方式。我们可以通过举例说明,一个系统从开始到结束应该做什么,在时间轴上,而且没有分支。要做到这一点,我们需要用特定的时间线画一条线,代表状态在不.

不确定性并非人类缺陷,而是这个世界的特征 | Psyche Ideas

600 2
对于本科生来说,科学是唯物主义的同义词,而唯物主义是确定性的同义词。认识到不确定性是宇宙的一个基本特征让他们感到困惑。首先,我不是质疑事物是否存在,而是质疑事物能够被了解的程度,以及我们可以在多大程度.

使用ChatGPT帮助DDD领域建模的案例

1142 1
为ChatGPT提供了上下文,它提供的创造性的部分确实有助于促进与领域专家的讨论: .

Rust适合领域概念吗? - Reddit

777 1

我使用Rust将近一年了,我写了大约2万行代码(CLI、WebAssembly应用、Web服务器......)。在我看来,编程范式的演变是朝着越来越大的设施去操作代表领域概念的结构。例如,一个Java.

Jay Little:低代码软件开发是一个谎言

819 2

设计一个该死的解决方案实际上是软件开发过程中最困难的部分。低代码工具通过暗示编写代码是最难的部分来欺骗客户。任何低代码工具都不能使你免于花时间正确设计你的定制软件,也不能使你免于在围绕半成品设计建立解.

什么是垂直软件开发?

885 6K
敏捷方法现在可能很普遍,并且有了它,增量方法的概念应该被开发社区所了解和利用。尽管如此,在与开发人员交谈时,我仍然发现它的理论与它在日常开发实践中的应用之间存在脱节。我认为这种脱节部分是由于我们分层构.