Fork me on GitHub

使用DDD和团队拓扑可视化社会技术架构

Visualising Sociotechnical Architecture with DDD and Team Topologies

Posted by Kaelzhang on July 31, 2020

使用DDD和团队拓扑可视化社会技术架构

近年来,随着逆康威定律的传播和普及,关于团队结构与系统边界的划分一致性越来越受到人们的重视和关注。结合团队拓扑Wardley映射动态重新分配和领域驱动设计等不断涌现和演进的设计工具,来有目的地,高效地设计规划现代技术组织结构。

可视化社会技术架构为策略与投资

核心域图上布置相关技术能力以表达技术策略的各个方面。 它显示了你认为哪些能力对实现业务目标至关重要。

图1. 将架构可视化为具有不同战略重要性的能力组合

核心领域是关键,这对于提供比竞争对手更具吸引力的产品至关重要。 通用服务构成了一个平台,使核心领域的团队能够更快,更低成本地交付价值。

可视化核心,通用和支持域仅能表达价值所在的信仰。 但是策略是关于做选择、分配资源、选择专注于某些事情而牺牲其他事情。

因此,有必要可视化承诺如何与愿景和信仰保持一致:所规划的重要内容是否与实际投入时间和资源的方式保持一致?

可以通过为每个能力添加承诺等级来在核心域图上表达此信息。 首先,这可以是来理想地分配给每个功能的FTE(全职等效雇员)的数量。 也可以改用预算或其他承诺指标。

图2. 如何分配工作以保障与价值所在的业务愿景相一致?

与多少家公司合作过,可以以可视化,量化,结构化的方式阐明这样的技术战略?

Wardley映射可带来大量的显性和隐性影响。

优化投资

当可视化技术远景和投资时,就会遇到许多问题和选择。 例如,下图:“为什么我们要为支持域和核心域分配FTE数量的两倍?”

图3. 为什么要花更多的时间和精力在支持域而非核心域?

使用这种可视化技术,该问题的潜在解决方案也将涌现出来-图表的Y轴显示了复杂性,并且我们可以看到,支持域能力比我们的核心域具有更高的复杂性。 这是一个明确的信号,需要进行进一步调查。

与软件工程师讨论后,我们可能会发现偶发复杂性很高-“这些都是我们的旧代码库,使用起来非常痛苦。 如果代码更易于更改,并且需要的实时支持更少,那么我们只需要一半的人员。”

通过减少偶发复杂性,FTE将被释放到核心域上工作。

图4.可视化投资与愿景,突显了潜在的战略优化

下一步是预估降低偶发复杂性成本并衡量预期收益。 数字并不能完全准确,但是我们可以做出更明智的风险/回报决策。

我们可以想象有无限的战略作用。 关键在于,我认为在可视化信念与承诺方面以及在可视化条件下可以协同模拟和评估策略性行为具有巨大优势。

根据我的经验,这个门槛太低了,以至于即使是这种简单的方法,对许多公司来说也是一个很大的进步。

分析团队之间的关系

无论我们多么努力,软件组件和管理它们的团队之间总会有依赖关系。 大型企业级行为将导致跨多个团队的工作方案。

我们需要可视化团队之间的依赖关系,并量化这将如何影响我们执行策略的能力-将大部分精力投入到核心域。

我喜欢将团队拓扑交互模式用作描述团队之间关系类型的语言。 下面是团队拓扑交互模式简介:

  • X-as-a-service:一个团队提供了一些技术能力,例如API,其他团队将以最少的支持和协作来使用它们。
  • 协作:多个团队紧密合作,以完成大量工作
  • 促进:一个团队暂时在帮助另一个团队实现目标

在核心领域图上显示这些关系会突出我们可能没有意识到的重大问题或机会:

图5.依赖关系对执行产生巨大影响,努力使之可视化。

定义团队和部落边界

强调团队和软件边界之间的依赖性为更高级别的组织设计奠定基础。了解软件中的哪些变化是确定团队组织方式的关键。

不幸的是,系统的共同变更是多维的:系统的不同部分将同时修改、在不同的时间进行更改,具体取决于backlog中的内容。通过可视化这些依赖关系,可以针对要优化的哪种类型的联合变更做出战略决策-我们以最能改善核心域的方式组织团队。

组织团队还有另一个方面,那就是超越物理边界。这是团队基于其所开发概念的演进而定的思维模式。

在高度未知的空间中具有很大的不可预测结果的大赌注核心域需要发现思维模式。学习速度是关键,这意味着流程和技术实践会发生变化。

应该根据团队的物理耦合或所开发产品的思维模式对团队进行分组(这就是西蒙·沃德利(Simon Wardley)所说的开拓者,定居者和城市规划师)。

图6. 如何定义团队和部落的界限? 减少耦合或优化思维模式的相似性?

显而易见的是,可视化这些关系会迫使我们考虑由此产生的动态以及它们如何影响我们的战略选择。为了充分利用我们核心领域的机会,我们需要仔细,自觉地考虑社会技术架构的各个方面。

不断发展的社会技术架构技术

但是在过去的几年中,围绕技术战略与业务战略保持一致的方法来组织团队结构的趋势正在增强。 《团队拓扑》一书产生了巨大影响。西蒙·沃德利(Simon Wardley)将演进置于该领域研究工作的最前沿。这些新方法与DDD等传统的方法完美地结合在一起。

具有上下文映射的战略性领域驱动设计似乎是一个不错的想法,但仍旧缺少一些东西。在团队拓扑和Wardley映射的支撑下,终于可以开始释放DDD的真正威力了。

参考文献

  1. https://medium.com/nick-tune-tech-strategy-blog/visualising-sociotechnical-architecture-with-ddd-and-team-topologies-48c6be036c40

  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!