系统设计与组织架构:如何协同共进
在系统设计和开发过程中,组织架构对系统的性质和质量有着显著的影响。了解这种影响,有助于我们更好地设计和优化系统。下面我们将探讨不同组织架构情形对系统设计的影响,以及如何应对这些情况。
适应沟通路径
首先,让我们考虑一个简单的单一团队的情况。这个团队负责系统设计和实现的各个方面,成员之间能够进行频繁、细致的沟通。例如,一个团队负责音乐商店的目录服务。服务内部存在大量细致的方法或函数调用,我们的目标是确保服务内部的变化速度远高于服务之间的变化速度。单一团队细致的沟通能力与服务内部代码的沟通路径相匹配,使得团队能够轻松地就提议的更改和重构进行沟通,并且通常具有良好的主人翁意识。
然而,如果目录服务由英国和印度的团队共同拥有,地理和时区界限会使团队之间难以进行细致的沟通,他们只能依赖视频会议和电子邮件进行较为粗略的沟通。在这种情况下,英国团队成员要自信地进行简单的重构就变得困难。地理上分散的团队沟通成本较高,因此协调变更的成本也更高。当协调变更的成本增加时,会出现两种情况:要么人们找到降低协调/沟通成本的方法,要么停止进行变更。后者往往会导致代码库变得庞大且难以维护。
曾经有一个项目,单一服务的所有权由两个地理位置的团队共享。最终,每个站点开始专注于自己处理的工作,从而对代码库的一部分拥有自主权,降低了变更成本。团队之间就这两部分的相互关系进行较为粗略的沟通,组织架构内的沟通路径与代码库两部分之间的粗略API边界相匹配。
从服务设计的角度来看,参与系统开发的人员之间的地理界限可以成为决定何时分解服务的重要因素。一般来说,应将服务的所有权分配给单个同地办公的团队,以降低变更成本。如果组织决定在另一个国家开设办公室以增