我们可以做的是影响这种复杂性如何体现并影响我们的系统。正如降噪技术不会消除声波而是引入抵消模式一样,我们的架构决策可以放大或抑制系统中波动的复杂性波。
并非所有的复杂性都是平等的:
- 有些复杂性自然而然地从问题领域中浮现出来:我们正在解决的业务问题的本质复杂性。这是我们必须接受和理解的复杂性。这是我们需要清晰听到的声音。
- 然后是偶然的复杂性:相当于不必要的噪音。这来自我们的解决方案、我们的选择、我们的工具,有时甚至来自我们组织本身。这是我们可以而且应该积极管理的复杂性。
我们做出的每一个架构决策都会对不同类型的复杂性起到放大器或阻尼器的作用。
考虑一下我们探索过的不同模式如何影响复杂性:
抑制复杂性的模式
放大复杂性模式(误用时)
复杂性的三个维度
复杂性体现在我们系统的不同方面:
- 协调复杂性:我们组织工作和管理依赖关系的方式可以减弱或增强复杂性。康威定律不仅仅是一种观察——它是一种我们必须积极管理的复杂性关系。
- 沟通复杂性:我们选择的信息流模式对系统复杂性有着深远的影响。同步与异步、点对点与广播——每种选择都有其自己的复杂性特征。
- 一致性复杂性:我们如何跨系统边界维护事实,既可以简化我们的架构,也可以使其复杂化。有时,接受最终一致性可以大大降低系统复杂性。
组织复杂性:隐藏的放大器
最强大的复杂性调节器之一根本不是技术性的,而是组织性的。
康威定律的作用是双向的:
结论:
目标不是消除复杂性,而是有意识地管理复杂性。每次你认为已经消除了复杂性时,都要检查它实际上可能转移到了哪里。有时看似复杂性降低实际上只是复杂性重新分配。
随着我们进一步探索不同的架构风格和模式,我们将研究每种风格和模式如何处理复杂性:
- 整体架构如何集中复杂性管理
- 分布式架构如何跨不同维度分散复杂性
- 随着系统的发展,进化架构模式如何帮助我们管理复杂性
架构的成功不在于消除复杂性,而在于:
- 认识到哪些复杂性对你的领域至关重要
- 选择系统中复杂性存在的位置
- 了解不同模式如何影响复杂性流动
- 管理不同类型的复杂性之间的权衡