• 高内聚低关联和SOLID原则是面向对象的设计原则,也是DDD用来划分有界上下文和聚合的原则,DDD聚合是一种高内聚低关联的对象,单一职责是划分不同上下文的主要原则,Shopify谈论他们如何使用这些原则将Rails单体切分为模块组件的过程,虽然他们文中只是简单提及了DDD领域驱动设计,但是他
  • 您所做的事情越复杂,即使只是将其结构化,是一种建设性的复杂性(如数据表结构设计,DDD聚合设计等,关联关系不能太多,虽然这是一种结构化关系,但是如果有很多1:N和1:2甚至N:N关系,则会复杂化)。复杂化会让排斥您的人也就越多。简单化就是无障碍。 我可以原谅建设性的复杂性:抽 icon
  • 编排Orchestration和编舞Choreography是微服务架构中的两种交互方式。在编排Orchestration中,有一个控制器(“编排器”)控制服务之间的交互。它决定了业务逻辑的控制流,并负责确保一切按提示进行。这遵循了请求-响应范例。在编舞Choreograph icon
  • 许多软件开发人员会很快告诉您: “我们很敏捷” “我们认为工作软件胜于全面的文档” “价值在于对话” “代码就是文档” “测试是文档” 代码是事实,而不是全部事实正如 icon
  • 我想明确指出我不是反微服务者,我将服务合并回到整体(单体/Monolith)中并不是为了摆脱微服务,目的是实现“大小正好”的整体。我正在做的事情是解决我团队的痛点。如果不能减少摩擦,我将不会花费太多时间(和机会成本)来提升,转移和重构旧代码。每次这样做,我都会冒引入新错误并破坏用户体 icon
  • 如果在线销售产品是您业务的核心部分,那么您需要构建可扩展,灵活且快速的电子商务数据模型。诸如Shopify和BigCommerce之类的大多数现成供应商都是为每月销售几百万美元订单的小型商店而建,因此许多从事大规模工作的电子商务零售商开始研究创建定制解决方案。本文将研究您自己开始构建 icon
  • 您在图片中看到了什么?一块硬纸板?一 icon
  • 最喜欢的(微服务)语录:“对于想要跨服务实现事务的架构师的最佳建议是:不要!” - 书籍《软件架构基础》 icon
  • 领域驱动设计是一种设计系统(通常是软件)的方法,该方法强调在域专家和系统构建者之间创建通用语言。著名的DDD原则包括使用 icon
  • 数据库是神话般的资源,我们已经滥用了它们。如果你拥有一个超级稳定安全的关系数据库,那么它就可能大包大揽,它就可能变成一把锤子,用来解决一切视为钉子的问题。在Tandem,我了解到支持公司业务的数据库是一个复杂而复杂的生物。它不仅需要提供对客户数据的访问,还需要在线DDL,高可用性,归 icon
  • Apache Kafka已成为跨微服务异步通信的领先平台。它具有强大的功能,可让我们构建健壮的,有弹性的异步体系结构。同时,我们需要预料到潜在的陷阱。如果无法提前识别出可能(不,将要发生)的问题,将使我们面临易于出错和数据损坏的系统。在本文中,我们将重点介绍这样的陷阱:处理消 icon
  • 我们如何才能快速地从整体变为微服务?无法回答这个问题。首先,“迅速”就在窗外。你一个月都没弄糟。您将不会在一个月内修复它。其次,您希望从微服务中获得一些您目前无法获得的好处。那有什么好处?微服务不是重点。拒绝了这个问题之后,我将继续回答。在我无法解释为什么无法快速更改微服务之 icon
  • 有些人说设计模式已经死了。真愚蠢! “设计模式”书籍是我们行业中出版的最重要的书籍之一。对于所有专业程序员来说,其中的概念应是基本知识。 设计模式就像现实生活中的谚语:这是开放了其他人的经验。 假设需要调用10种不同类型的设备,然后再打开它们,我会创建一个De icon
  • 在SummerSoC 2020上,我介绍了我的 icon
  • 多年来,Facebook已从一种基本的Web服务器体系结构演变为一个复杂的体系结构,其中包含成千上万的服务在后台运行。扩展Facebook产品所需的各种后端服务并不是一件容易的事。而且发现我们的许多团队正在构建具有重叠功能的自定义分片解决方案。为了解决此问题,我们将Shard Manager icon
  • 电子邮件唯一性检查属于业务逻辑,是应该放到领域模型User类中?还是UserController中?这里有领域模型完整性和纯度的抉择: 领域域模型完整性是指您的域模型包含所有应用程序的域逻辑。按照这个依据,电子邮件唯一性检查属于领域逻辑,领域模型应该包含所有的领域逻辑,放入U icon
  • 使用微服务意味着从松散耦合的服务创建应用程序。该应用程序由几个小服务组成,每个小服务代表一个单独的业务目标。在复杂 icon