系统级架构设计存在意义:极简主义架构 - esilva


系统级别的架构为避免过于细节,需要简化架构方法:“做得足够”(即:不多也不少)。架构师(和/或任何决定架构的人)应该专注于解决系统级别的这个最高优先级,以便从事系统那些特定元素的团队可以最大化其对整个系统的有效性(而不是“局部优化”)。这种方法还努力为在系统“较窄范围”要素上工作的团队留出最大的决策空间,而不是从更高层次的系统角度过度决策。
“做得足够”的架构观点是受到两位(社会技术和软件)体系结构发展方面当前思想领袖的文章的启发和推动:Ruth Malan和Dana Bredemeyer。这篇简短的文章分享了他们对如何处理体系结构的一些见解。这篇文章来自2002年,但是它尽可能地是最新且相关的。他们提出了一种“最小化的体系结构方法”,即:“挑选出最高优先级的体系结构要求,然后尽力而为地实现这些要求。”
 
什么是架构决策
“建筑决策是必须从整个系统的角度做出的决策。”
这强调了为什么拥有架构师(或明确照顾架构决策的人员)是使组织有效运作的关键。原因是由于我们为支持构建软件产品(在较小的部分/团队中)而进行的“总体系统角度”类型的工作往往拥有不清楚的所有权。它定义了正常的团队工作所在的“更大的系统”(这些是“系统思维”的关键思想)。
如果我们没有任何人(或无法捕捉到)这种全面的了解,那么在系统的不同部件(即:由不同团队拥有和构建)上工作时,我们将无法获得必要的背景信息。。这就是为什么拥有系统架构的正确所有权的关键。
“基本决策确定了系统的关键结构要素,这些要素的外部可见属性及其关系。”
这些系统级基本体系结构决策倾向于集中在关键的结构元素(例如:系统的不同团队和部分如何发展)及其外部可见属性和关系。
“如果您可以将决策推迟到系统范围更狭窄的部分,那么这对系统级体系结构就不重要了。” 
“限制设计师和实施者知识自由的唯一正当理由是对组织无法实现的战略系统特性的明显贡献。”
核心思想很关键:决策范围广泛, 需要明确决策边界。这将促进自主性,同时提供从系统范围中更狭窄的部分到我们要在组织中构建的系统的外部可见属性的连接结构。

 
限制架构控制
如今,有些人不愿让架构师在团队之外进行专门的架构设计,这样做可能有一些很好的理由,例如避免“做得不好的架构”(过多的,集中的,前期的架构)或所谓的“象牙塔”架构师。这些绝对是我们在进行建筑设计时要避免的事情!但是,解决方案不应是“不做架构”,因为那样我们就会陷入“局部优化”陷阱。
这就是为什么拥有系统级别架构设计的关键所在,这种级别的系统架构侧重于理解和决策制定,并使系统范围更狭窄的部分具有更多的上下文和更好的决策制定能力。
这将使我们能够实现我们的目标:“改善整个系统”的属性,而不仅仅是局部优化。我经常用我的餐厅系统比喻来强调这一点:“您想提供厨师可以用我们餐厅中最好的葡萄酒烹制的最好的菜肴,而不了解它们是否是最好的组合……,其实大多数情况下并不是最佳组合”。
成为一名架构师(或任何处理架构决策的人)有时会很棘手。然而,关键在于找到决策的平衡点。了解每个(人)如何(或将)受到这些体系结构决策的影响也非常重要。有时(看起来像)“无政府状态”在某些组织中是可以的,尤其是在具有更强的促成文化的组织中。但是,在其他许多组织中,这并非总是可能的。拥有这种意识也是接近系统(社会技术)体系结构发展的关键。
 
坚持架构控制
这是体系结构控制的另一极端,它可能会过度使用并最终在所有范围和系统级别上对所有决策的管理进行微观管理。这就是我前面提到的为架构造成“不良声誉”的模式。绝对不希望使用这种方法,因为它会限制决策流程和系统不同部分的整体有效性。
为了避免“过多控制”的陷阱,我们必须努力在每个范围/系统级别上进行“最小决策”,以实现系统的“最终目标”。我真的很喜欢Ruth和Dana所说的“所有级别的管理”都应该专注于确保那些“最小决策”坚持下去,从而使那些在这些系统中工作的人们能够做出提醒性的决策集(同时依靠那些做出的更高层次的决策) )。简而言之,这就是Netflix所称的高度一致和松散耦合的文化文档。他们的目标是“花时间讨论策略,然后彼此信任才能执行策略”,以实现这些一致的目标。
 
扩大范围
在系统级范围内进行“架构师”或讨论会损害团队的自主权?
实现“良好体系结构”的平衡行为很困难,但是当我们达到平衡时,就可以实现我们所追求的“系统属性”。它通过为系统的不同元素的设计者和实现者提供“启用方向”或“限制”来做到这一点。我想再次提出一个事实,即“约束”的水平和“谁来做架构”的水平因组织而异(取决于其文化和实践的成熟度)。但是,系统是由零件组成的,是零件相互作用的结果,如果采用“混乱任由发展”的方法,即零件在完全隔离的情况下发展,这就是“削弱能力”。
“良好的架构的好处之一是,具有设计良好的接口的结构元素成为设计和实施的重点。这使具有更大自治权的结构单元的工作得以进展,而拥有强大所有权的小型团队则是创新和创新的主题。生产率。”
在我看来,这是在良好体系结构中追求的关键要素:使具有上下文和要素的团队能够与整体所需的系统属性保持一致。有了这些“上下文”,团队就可以充分发挥自主权和“创造力”,从而最好地构建系统那些结构单元的内部元素。