如何画好架构图
笔者工作中很大的困恼在于,如何画出逻辑清晰,美观简洁的架构图。到底需要画哪些图,最近学习了 2 种模型,我们一一来看下。
一,C4 架构
C4 代表上下文(Context)、容器(Container)、组件(Component)和代码(Code)——一系列分层的图表,可以用这些图表来描述不同缩放级别的软件架构,每种图表都适用于不同的受众。
第 1 层:系统上下文
第 1 层是系统上下文图,它显示了你正在构建的软件系统,以及系统与用户及其他软件系统之间的关系。以下是一个系统上下文图的示例,描述了一个互联网银行系统的系统上下文:
第 2 层:容器
第 2 层是一个容器图,将软件系统放大,显示组成该软件系统的容器(应用程序、数据存储、微服务等)。技术决策也是该图的关键部分。以下是互联网银行系统的容器图示例。它显示了互联网银行系统(虚线框)由五个容器组成:服务器端 Web 应用程序、客户端单页面应用程序、移动应用程序、服务器端 API 应用程序和数据库。
第 3 层:组件
第 3 层是组件图,将单个容器放大,以显示其中的组件。这些组件映射到代码库中的真实抽象(例如一组代码)。下面是一个虚拟的网上银行系统的组件图示例,显示了 API 应用程序中的一些组件(而不是全部)。
第 4 层:代码
最后,如果你确实想要,或者说有这个必要,可以放大个别组件,以显示该组件的实现方式。以下是一个虚拟的网上银行系统的 UML 类图示例(部分),显示了组成 MainframeBankingSystemFacade 组件的代码元素(接口和类)。
二,4R 架构
软件架构指软件系统的顶层结构,它定义了系统由哪些角色(Role)组成,角色之间的关系
(Relation)和运作规则(Rule)。
常见架构图分类
1、业务架构
定义:描述系统对用户提供了什么业务功能
画图技巧:
1、通过不同颜色来标识业务状态
2、业务分组管理
示例:
2、系统架构
定义:后端的逻辑架构
3、部署架构
定义:描述后端系统如何具体部署的
4、应用架构
定义:描述后端由哪些应用组成
我的思考:
工作中用的最多的就是系统架构,需要表示出有哪些角色,关联关系是什么,各自职责是什么,可以自己画图也可以用时序图。然后就是业务架构图,一共包含哪些业务,这个是比较大的系统了,用的比较少了。用的比较多的还有就是从一个用户或者运营的角度是如何使用系统的,这个流程是什么。最后就是部署架构。
部署在哪几个机房,每个机房有哪些服务,有哪些中间件进程,这些除非特别复杂的做了异地多活的也比较少。
总结一下
1、系统架构
用的最多,对应 4R 架构中的 Role ,Relation,Rule。一共有哪几个服务,他们的职责是什么,相互之间怎么交互的。这个也可以结合时序图
2、业务架构
适合于比较复杂的业务,包含多个业务系统。对应上面说的业务架构,也可以加上 C4 架构中的 Context
3、部署架构
如果做了异地多活,或者其他架构设计部署多个机房时可以用到,一共包含几个机房,每个机房有哪些服务,哪些中间件的进程。
评论