乐于分享
好东西不私藏

【趣味图解】一张图让你看懂软件架构的“家谱“

【趣味图解】一张图让你看懂软件架构的“家谱“

【趣味图解】一张图让你看懂软件架构的"家谱"

一、前言

很多初学者一听到“软件架构”四个字就头疼,觉得这是个大课题,无从下手。

别急,今天我用一张“家族谱”的比喻,让你5分钟搞清楚软件架构的“家谱”——也就是软件架构到底包含哪些类型,它们之间的关系是什么。

二、软件架构的"家族谱"

想象一下,软件架构就像一个大家族:

软件架构家族├── 第一代老祖宗│   └── 软件架构(总称)├── 第二代掌门人(按层次分)│   ├── 企业架构 EA│   │   ├── 业务架构│   │   └── IT架构│   ││   └── 应用架构│       ├── 逻辑架构│       └── 物理架构└── 第三代高手(按领域分)    ├── 系统架构    ├── 技术架构    ├── 数据架构    ├── 安全架构    └── 云架构

这个家族有三个层次,每一代解决不同的问题。

三、第一代:老祖宗——软件架构是什么?

软件架构(Software Architecture)是整个家族的老祖宗,是一个统称。

它的官方定义是:软件系统的基本结构,以及创建这种结构的原则和指导

用人话来说就是:做一个软件系统,需要先想清楚它的“骨骼框架”是什么。

就像盖房子:

  • 你要建什么类型的房子?(住宅、写字楼、商场)
  • 建几层?每层干什么?
  • 用什么材料?
  • 怎么布局?

软件架构就是回答这些问题的过程。

四、第二代:掌门人——按层次分的架构

4.1 企业架构(EA)

这是最高层次的架构,关注的是整个企业的IT建设蓝图

比如:

  • 公司未来3年要用哪些系统?
  • 这些系统之间是什么关系?
  • 数据怎么打通?
  • IT投资怎么分配?

做企业架构的人,通常叫“企业架构师”(Enterprise Architect)。

典型工具:TOGAF、Zachman框架

4.2 应用架构

这是中间层次的架构,关注的是单个应用系统的结构

比如:

  • 做一个电商系统,需要哪些模块?
  • 模块之间怎么通信?
  • 用什么技术实现?

应用架构又分两种:

  • 逻辑架构
    :从业务角度看系统应该有哪些功能
  • 物理架构
    :从技术角度看系统怎么部署和运行

五、第三代:高手——按领域分的架构

这是最细分层次的架构,每个领域都有专门的架构师。

5.1 系统架构(System Architecture)

关注的是整个系统的组成和协作

比如做一个智慧城市系统:

  • 有交通管理模块
  • 有环境监测模块
  • 有应急指挥模块
  • 这些模块怎么集成在一起?

5.2 技术架构(Technical Architecture)

关注的是用什么技术来实现

比如:

  • 后端用Java还是Go?
  • 数据库用MySQL还是MongoDB?
  • 消息队列用Kafka还是RabbitMQ?

5.3 数据架构(Data Architecture)

关注的是数据怎么存储、流动、使用

包括:

  • 数据模型设计
  • 数据仓库建设
  • 数据治理规范
  • 大数据平台架构

5.4 安全架构(Security Architecture)

关注的是怎么保护系统的安全

包括:

  • 身份认证
  • 权限控制
  • 数据加密
  • 安全审计

5.5 云架构(Cloud Architecture)

随着云计算兴起,专门有一类架构师研究怎么在云上构建系统

比如:

  • 用AWS还是阿里云?
  • 用公有云还是私有云?
  • 云资源怎么规划?

六、架构视图:看架构的"角度"

除了按类型分,架构还需要从不同角度来描述。

这就是著名的4+1视图模型

视图
回答的问题
受众
逻辑视图
系统做什么?
用户、业务分析师
开发视图
代码怎么组织?
开发人员
进程视图
系统怎么运行?
系统集成人员
物理视图
系统部署在哪?
运维人员
场景视图
系统怎么用?
所有相关方

简单理解:

  • 逻辑视图 = 给用户看的(功能)
  • 开发视图 = 给程序员看的(代码结构)
  • 进程视图 = 给运维看的(运行时)
  • 物理视图 = 给实施看的(服务器部署)
  • 场景视图 = 给所有人看的(业务流程)

七、总结:架构家族一览表

架构类型
关注点
层次
典型产出
企业架构
企业IT蓝图
企业架构图、路线图
业务架构
业务流程和能力
业务能力地图
应用架构
单个系统结构
应用架构图
技术架构
技术选型实现
技术方案
数据架构
数据存储流动
数据模型
安全架构
系统安全防护
安全方案
云架构
云资源规划
云架构图

记住这个“家谱”,你就对软件架构有了全局认知。以后听到别人说“架构”,你就知道他说的是哪一层的架构了。


文章编号:005 对应教程章节:第1章