《系统架构设计》-02-架构师的视图和视角
1. 架构师的视图
1.1 上下文视图
1.1.1 概念
上下文视图总结我们所设计的架构背后究竟是怎么样的一个系统,包括系统本身、外部实体和相关接口。
1.1.2 示例
1.2 功能视图
1.2.1概述
描述系统运行时功能元素及其职责、接口和交互关系。
功能视图和上下文视图有一定的重合之处,但功能视图脱离环境,描述的是系统组件定义及各个组件之间的交互关系而不是业务场景分析.
1.2.2 示例
1.3 数据视图
1.3.1 概念
数据视图描述系统存储、操作、管理和分发数据的方式,是系统中核心业务数据的一种载体和表现形式。
1.3.2 数据视图对数据的处理
数据视图对数据的处理包括几个主要方面:
- 数据结构。
数据结构作为表示数据的元数据,是系统内部最核心的数据模型。
- 数据标识符和映射关系
为了能够在系统内部各模块及与外部系统之间进行有效交互和集成
- 数据存储模型
1.3.3 数据架构建模
- 静态数据建模(UML类图)
- 数据流建模(UML流程图)
- 数据状态建模(UML状态图)
1.3.4 示例
-
移动医疗行业中“病人”这一数据载体所展现的类图
-
围绕电商行业“订单”之一概念所做的数据状态图
1.4 开发视图
架构设计中面向技术的核心视图
1.4.1 示例
下图是一个 涉及用户和商品管理的电商系统中所展示出来的模块结构图,采用了UML中的包图作为特定展示媒介。
1.5 部署视图
1.5.1 概念
部署视图描述系统部署的环境及系统与其中元素的依赖关系。
- 架构设计的结果约束系统部署
- 系统部署放过来影响设计架构方案
3.5.2 示例
2. 架构师视角
2.1 安全性视角
2.1.1 安全性要求
安全性体现的是控制、监控和审计对资源的访问性和执行能力,以及从安全漏洞中恢复的能力。
2.1.2 安全性设计方案
就是根据不同的访问主体对不同的资源进行精细化控制。包含建立完善的用户权限管理系统并提供相应安全策略。
- 资源(Resource):需要进行安全性控制的内容
- 访问主体(Subject): 能访问资源的人或系统称为
找到安全性切入点,架构设计上就可以对症下药。对用户进行身份认证(Authentication)、授权(Authorization)访问、通过加密解密等确保信息保密性和完整性、提供类似单点登录(Single Sign On,SSO)的安全性管理平台、使用第三方安全性基础框架等都是安全性架构设计的常见手段。
2.2 性能视角
2.2.1 性能要求
系统在其指定的性能状况下、预期增长中的处理能力。如:
- 核心功能响应时间
- 系统吞吐量
- 部署架构的可伸缩性
- 性能问题的可预测性
- 峰值负载
2.3.2 性能问题的设计方案
- 对核心业务链路和活动进行分解并把串行操作转变成并行化流程
- 对需要重复执行的处理过程进行优化
- 重用资源和结果
- 使用异步处理
- 放松事务一致性
- 转换数据强一致性为弱一致性
- 把握一定的平衡性,避免为了提升性能而提升性能。
2.3 可用性视角
2.3.1 可用性要求
系统在需要时能够完整地提供服务,并有效处理影响系统可用性故障的能力。
2.3.2 可用性的设计方案
- 规划和实现:如系统升级、停机和维修时间、系统备份、灾难恢复等。
- 架构设计策略:使用容错硬件和容错软件、确保采用主流的集群和负载均衡机制、加强日志管理和分析、采用组件复制策略、建立完整的备份和灾难恢复解决方案。
2.4 可扩展性视角
2.4.1 可扩展性要求
系统在经历不可避免地变更时足够灵活。
- 可扩展性:针对业务的扩展
- 可伸缩性:针对性能的扩展
2.4.2 重要程度
- 信息化系统而言就有最高的重要性
- 面向服务和中间件系统具有最低的重要性
- 互联网应用而言,其重要性视具体系统而定。
2.4.3 切入点
把部分业务在进入开发流程之前进行梳理,以避免不需要变化的引入。
3. 视图、视角
3.1 视图和视角的关系
安全性 | 性能 | 可用性 | 可扩展性 | |
---|---|---|---|---|
上下文视图 | ||||
功能视图 | 关系不大 | 密切 | ||
数据视图 | 关系不大 | 密切 | ||
开发视图 | 关系不大 | 密切 | ||
部署视图 | 影响巨大 | 影响巨大 | 影响巨大 |
3.2 视图视角到架构描述
架构视图和架构视角垂直构成完整架构描述。
我们可以在明确架构视图的前提下,往各个架构视图中添加架构视角,使视图和视角在完成各自目标的同时能够紧密整合。
下图展示视图视角与系统工程之间的关系。
视图关联视角,两者构成了架构描述的一部分;同时视图从业务需求角度,视角从质量需求角度解决了干系人所提出的各种关注点。这些关注点实际上就是需要架构师去捕获的架构设计的输入。