【趣味图解】一张图让你看懂软件架构的"家谱"
一、前言
很多初学者一听到“软件架构”四个字就头疼,觉得这是个大课题,无从下手。
别急,今天我用一张“家族谱”的比喻,让你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视图模型:
简单理解:
逻辑视图 = 给用户看的(功能) 开发视图 = 给程序员看的(代码结构) 进程视图 = 给运维看的(运行时) 物理视图 = 给实施看的(服务器部署) 场景视图 = 给所有人看的(业务流程)
七、总结:架构家族一览表
记住这个“家谱”,你就对软件架构有了全局认知。以后听到别人说“架构”,你就知道他说的是哪一层的架构了。
文章编号:005 对应教程章节:第1章
夜雨聆风