
软件架构的多维分类与视角解析
业界对于架构的分类并没有一个统一的全球标准,实际上是“众说纷纭”的。本质上,架构的核心未变,只是不同的人从不同的角度、侧重点对同一个事物进行了划分,因此这些分类往往存在交叉和重复。
根据现有资料,我们可以将架构的分类标准总结为以下五个主要维度:
1. 按实现层次划分
这种划分方式通常按照从前端到后端的逻辑顺序排列。
• 主要包含: 移动架构、前端架构、系统架构、平台架构、应用集成架构、数据库架构、存储架构以及网络架构,。
• 核心洞察(系统架构): 在这一维度中,“系统架构”被进一步细分为两个关键部分,这是系统设计中非常重要的一环:
◦ 应用架构: 从业务层面描述系统。它关注系统如何拆分为大模块、子模块,以及这些模块如何细分并最终组合成一个完整的应用,。
◦ 技术架构: 从技术层面描述系统。它决定了系统是单体还是微服务,如何分层(表现层、逻辑层、数据层、缓存层),以及具体每一层使用什么技术框架(如 SpringMVC, MyBatis 等)。
2. 按关注方向划分
这种标准侧重于架构师或相关人员具体关注的领域。
• 主要包含: 业务架构、应用架构、技术架构、开发架构、数据库架构、存储架构、安全架构、部署架构以及开放架构(如 OpenAPI)。
• 核心洞察(三者关系): 业务、应用和技术架构之间存在紧密的战略与战术联系:
◦ 业务架构视为战略架构(目标);
◦ 应用架构视为战术架构(路径);
◦ 技术架构则充当装备的角色(工具)。
◦ 逻辑: 使用特定的技术架构(装备)去实现应用架构(战术),最终目的是为了达成业务架构(战略)的目标。
3. 按软工阶段划分
这种标准依据软件工程的生命周期进行分类,不同阶段对应不同的架构形态。
• 主要包含:
◦ 解决方案架构: 主要在销售期间提供方案支持(对应职位:解决方案架构师)。
◦ 后续阶段: 业务架构、系统架构、概念架构、细化架构、平台架构、开发架构、部署架构,最后到运维架构。
4. 按视图类型划分
这通常涉及如何通过不同的模型或图表来表达架构,类似于经典的架构视图理论。
• 主要包含: 逻辑架构、数据架构、开发架构、运行架构以及物理架构。
5. 按技术实现风格划分
这是开发人员最常接触的分类,指的是特定的架构模式或设计风格。
• 主要包含: 分布式架构、单体应用(也是一种架构形式)、分层架构、事件驱动架构、微内核架构、微服务架构、SOA 架构、响应式架构等。
虽然架构的划分方式多种多样,且结果也不尽相同,但不必过度纠结于分类的名称。重要的是理解这些分类是为了在不同的场景下(如售前方案、具体开发、战略规划)更准确地描述系统。