知识卡片

应用架构的三个理解误区

普通读书笔记卡

内容

误区一是把应用架构用在单个应用内部——应用架构关注的从来不是一个应用本身,而是如何通过一个应用体系去实现[[高速公路”类比:企业战略与业务架构的关系|业务架构]]的目标;单个应用自己内部的架构应该叫”应用功能架构”(包含该应用各个功能模块),二者是不同层级的概念,应用架构图里的基本架构元素应该是”一个应用”,而不是某个应用内部的功能模块。误区二是忽视应用拆分的成本——拆分带来的成本至少有两方面:网络通信的时间成本、为实现通信容错性带来的项目预算和维护成本;更容易被低估的是拆分之后的整合成本,拆分本身容易,整合往往更具挑战性;现实中常见的问题是系统被零散拆分之后,整合阶段发现交互关系变成了复杂的网状结构,且随时间推移调整越来越困难——正因如此,[[应用拆分先看业务定位,整合看三个维度反向检验|拆分和整合]]必须在编排层面综合考虑,拆分是为了更好整合,整合也能反过来促成合理的拆分。误区三是忽略非功能性需求在应用架构设计中的重要性——应用架构风格主要由非功能性需求决定,而不应该只是简单沿用企业原有已经在用的某种架构风格;进行应用架构设计时必须充分考虑非功能性需求的影响和约束条件,而非默认延续过去的惯性选择。可迁移启发:审查一份应用架构设计,可以直接检验它有没有踩中这三个误区——架构图的基本元素是不是”应用”级别而非功能模块级别、有没有在文档里体现出对拆分/整合成本的权衡、架构风格的选择依据是不是写清楚了对应的非功能性需求,而不是一句”我们一直是这么做的”。

参考来源

- 位置:《架构师启示录:知识模型、落地方法与思维模式》第7章《架构设计》之"7.1.3 应用架构的理解误区"(源文件:_epub-src/EPUB/xhtml/chapter11.xhtml) - 结论依据:原文说明"应用架构不是针对一个应用的架构,而是关注如何通过一个应用体系来实现业务架构目标……尽管拆分容易,但整合更具挑战性……应用架构风格主要由非功能性需求决定,并不仅限于企业原有已使用的某种架构风格", 直接支撑本卡关于应用架构三个理解误区的结论。 - 原始内容:在现实工作中,我们发现许多系统被进行了零散的拆分,但在整合阶段会面临交互关系复杂的网状化的问题,并且随着时间推移,调整变得越发困难。