定义康威定律的正确方法

时间:2019-11-03 08:15:32

标签: architecture domain-driven-design microservices

首先,我想知道康威定律是指组织的物理结构还是组织中的关系结构,其次,我没有理解福勒在他的文章中的含义:

  

在寻求将大型应用程序拆分为多个部分时,管理层通常将重点放在技术层,从而导致UI团队,服务器端逻辑团队和数据库团队。当团队按这些方向分开时,即使简单的更改也可能导致跨团队项目需要时间和预算批准。一个精明的团队将围绕此问题进行优化,并减少两种弊端中的较小者-只需将逻辑强加到他们可以访问的任何应用程序中即可。换句话说,逻辑无处不在。这是康威定律[5]发挥作用的一个例子。

1 个答案:

答案 0 :(得分:0)

我开始回答问题的第二部分。福勒想说的是,或者我的理解是,当需要将项目拆分为多个部分时(例如将整体拆分为微服务),那么您可能会面临将大团队拆分为较小团队的问题。围绕业务技能或能力,而不是技术。

如果您的公司按技能或技术层对人员进行分组,则您将拥有一组开发人员,一组前端,一组后端,并且其中没有人能够处理单个项目:这将迫使您将拥有一个孤立的应用程序(也就是一个整体),因为每个团队都依赖于彼此才能完全完成一项要求,因此扩展非常困难。雇用新的devop时,您只会增加devop团队的规模。添加新功能时,您只会增加整体尺寸。这就是Conway在谈论的关系。

另一方面,如果您通过混合所有这些技术并创建自给自足的团队来组织公司,则每个团队都将由1个开发人员,2个后端和1个前端组成。现在,您实际上可以将自己的整体拆分为微服务,并根据需要进行扩展。当您需要新的微服务时,可以创建一个全新的团队,理想情况下,没有人会受到此操作的影响。

我同意戴维(David)所说的沟通很重要,但是必须以正确的方式提供。