画架构图的作用?
- 梳理技术架构,编写文档
- 汇报时展示(开会、培训、晋升)
软件系统架构图是什么?
架构图可以反映展示出软件架构的整体结构。
- 软件系统的分层结构,以及范围
- 包含的角色、组件
- 角色组件之间的关系
- 角色组件之间如何协作
架构分层
从不同分层,架构的细节粒度不同,下层的详细架构在上层只是一个角色组件
根据负责人所在分层,从顶层拆分下来,到自己负责的分层再展开架构细节
用什么工具画架构图?
不推荐UML工具画架构图
一般是用矩形、圆角矩形,虚实线矩形,不同颜色矩形,通过排布和连线来构成具体的架构图
静态架构的分类
1、业务划分
业务划分的核心就是每一块业务分别是谁负责的。
比如张总负责业务A、李总负责业务B,业务A和业务B是以业务范围来划分的,因此,不同业务之间当然会有系统功能上的交叉,业务划分不代表系统模块的划分,但是业务划分更接近市场。
比如,自营业务包括自有产品业务,第三方业务包括第三方提供的服务业务。
在每个业务范围中又可以罗列具体的业务项。
从而能够整体的概括整个业务结构。
2、前端架构
总体架构的自顶向下是总分结构,底层是对顶层的不断细化,比如L0层到L1层。
而前端技术架构的上层和下层是依赖关系,比如上层应用层对底层服务层的调用,甚至最底层还可以是系统基础层。
3、后端架构
技术架构的叫法已经泛滥,比如有人展示的技术架构实质是技术栈(redis、mysql、springcloud。。。)。
后端架构/系统架构,按服务模块划分更适合,比如redis技术栈其实就是缓存服务,路由服务模块也是系统架构中的一个角色,所有服务角色组成整体架构图,还包括之间的关系联系,以及如何相互协作。
一个业务架构可能依赖多个后端架构的服务模块,划分维度不一样的
4、应用架构
应用架构的粒度,可以是一个打包部署的jar服务等等,应用架构层次偏下层,架构图内描述本应用内具体的服务模块
应用架构跟系统架构类似,只是范围可能限定在具体一个应用的范围
5、部署架构
可以使用图标代替区块,因为部署架构里的服务单元更偏向于物理构件,比如数据库、nginx代理层,等等
从物理上明确各个应用、组件、服务模块的位置以及之间的关系联系。
系统序列图(静态架构图没法动态协作关系)
几个核心业务、服务模块最好画出序列图。比如付款业务、提工单业务。
业务:对用户有价值的服务 功能:为了实现业务提供的能力 ??:业务实现的方式
不同级架构师画的架构层级
- 应用层级:核心是画清楚应用内的架构细节
- 系统层级:除了理解具体某个应用模块的架构,还需要理解端到端的各个应用层级之间的关系,也就是整体的系统架构
- 业务架构:主要是对全局业务的理解(区别于对技术实现的理解),分析业务的价值等等(也可以包括技术可行性方面)