如何画架构图之C4模型画法
之前一直看别人画架构图,自己画的很烂,最近看了一点点资料,整理了下,分享出来,希望对别人有帮助,如果有不对的地方欢迎指正。
C4架构图要解答的问题:
1,为哪些用户提供什么服务? 语境图
2,完成这个系统使用了哪些服务?容器图
3,每一个服务是由哪些组件实现的 组件图
4,实现这个组件需要完成什么?类图
语境图:
意图:
我们构建的软件系统是什么?
谁在使用它
如何融入现有的it系统
结构:
中间画一个简单的框图代表你的系统,周围是和它相互作用的系统。不去关注细节。
动机:
使语境更明确
从更高的层次展示了正在向已有的IT环境中添加了什么?
技术和非技术可以当做讨论起点的一种更高层次图标。
牵涉到理解系统间接口的问题时,为你识别可能需要沟通的人提供一个起点。
举例:
容器图
意图:
帮助解答以下问题:
软件系统的整体形态
高层次的技术决策
职责在系统如何分布
容器之间如何相互交流
为了实现特性,作为一个开发者,我需要在哪里写代码
结构:
画一个简单的框图展示你的关键技术选择。
容器:
Web服务器
应用服务器
企业服务总线和业务流程编排引擎
sql数据库
nosql数据库
其他存储系统
文件系统
windows服务
独立/控制台应用程序
web浏览器
cron或其他计划工作容器
容器,指的是组成软件系统的逻辑上的可执行文件或过程。每一个容器都可以指定以下 几项:名称(逻辑名称,如web服务器,数据库),技术选型,职责。
交互:
交互的目的
通信方法
通信方式
协议和端口号
系统边界
需要有系统边界
示例图:
组件图
意图:
解释以下问题:
系统由哪里组件组成
高层次上,系统如何工作是否清晰
所有组件/服务是否在一个容器中?
结构:
当人们被要求绘制架构图时,通常会绘制一张展示组成软件系统的逻辑组件的图。
除了我们一次只想看一个容器中驻留的组件。也就是说组件图就是普遍意义上的架构图。
组件:
一个金融系统风险的解决方案包含的组件:
贸易数据系统导入器
参考数据系统导入器
风险计算器
认证服务
系统驱动者,协调者
审计组件
通知组件
监测服务等
组件是系统的粗粒度结构单元,通过一个或者多个组件实现一个特性。每一个组件,都可以指定:名称,技术,职责。
交互:
交互的目的
通信方式
示例图:
基础设施架构
提供软件架构和基础设置架构之间映射的信息。