架构制图:工具与方法论( 八 )
3)Level 2:Container diagram
本文插图
通过 L1 的上下文图理解了系统在整个 IT 环境中的定位后 , 下一步就是把系统这个框框放大 , 详细看下其中包含了哪些“容器”(Container , 注意不要跟 Docker 容器搞混了噢!) 。 C4 模型中的容器是指单个应用或数据存储 , 通常可以独立部署和运行(有独立的进程空间 , 通过 IPC 机制互相通讯) , 例如:SpringBoot 微服务、React SPA、移动 App、数据库、Serverlss 函数、Shell 脚本 。
L2 的容器图不仅展示了系统的进一步职责拆分 , 还包括了主要的技术选型、容器之间的通讯方式等关键架构信息 。 这类图可以面向全部的技术人员 , 既包括架构师、开发者 , 也包括运维人员、技术支持等 。
4)Level 3:Component diagram
本文插图
继续前面的套路 , 下一步就是把系统中各个容器再分别进行局部放大 , 将每个容器进一步拆分成多个组件(Component) 。 在 C4 模型中 , 组件是指一组通过良好接口定义封装在一起的相关功能(通常运行在同一个进程空间内) , 例如:Spring 里的一个Controller(不只包括定义了 REST 接口的 Controller 主类 , 也包括背后所有相关联的实现类 , 如 Service/Repository 等) 。
与容器图类似 , L3 的组件图也不只包含了容器的组件划分 , 还包括各个组件的职责定义、技术与实现细节等 。 随着层次的下沉和细节的增多 , 组件图的受众范围进一步缩窄 , 一般只适用于软件架构师和开发者(其他角色没必要理解 , 一般也理解不了) 。
5)Level 4:Code(可选)
本文插图
再继续对组件进行放大 , 所能看到的最底层和细节的信息 , 就是 L4 的代码(Code)了 。 当然 , 这里所谓的“代码”还是以图的形式(e.g. UML 类图、数据库 E/R 图)展示类或文件粒度的代码结构 , 并不是真正的代码本身 。 即便如此 , 代码图在 99% 的架构描述场景下也依然过于详尽 , 一方面数量庞大 , 绘制成本很高;另一方面易于变化 , 维护成本也非常高 。 因此 , 一般只有非常重要和复杂的组件才需要用到这一层级进行描述 。 如果确实需要绘制 , 也应该优先考虑自动化的方式 , 比如很多 IDE 就支持自动生成 UML 类图 。
6)补充图:Landscape / Dynamic / Deployment Diagram
本文插图
除了上述各个层次的静态结构图 , C4 模型还提出了一系列的补充图(Supplementary diagrams) , 包括:
- 系统全景图(System Landscape diagram):全景图与系统上下文图的绘制方法类似 , 区别在于它是从企业或组织角度全景地展示出所有软件系统(包括与当前系统没有直接关联的)以及相关的用户和系统交互 , 即进一步放大架构图的 scope;
- 动态图(Dynamic diagram):由于结构图天生只能描述出系统的静态结构属性 , 因此 C4 模型中推荐使用 UML 中的通讯图、时序图等 , 对系统中关键链路的动态行为进行补充描述 , 即“动静结合”;
推荐阅读
- 上游新闻|?你确定?,扫个厕所要18道工序、46种工具
- Win10又绕过用户强制重启 只为安装Office网页版工具
- 公司|华锐工具:今年科创板过会第145家 招商证券过5单
- ITheat热点科技|锐龙 5000 移动低压处理器曝光:Zen 3 架构,AMD
- |航母时速大约是30节,如果将其换算为地面交通工具,到底有多快?
- 假如我能勇敢点|独立站及外贸免费工具,溪致科技推荐8个亚马逊
- 趣头条|有了简易洗车工具套装,又可以省一大笔开销!
- 兔玩电竞|剑姬凯隐成版本答案吸血流剑姬统治上路凯隐晋升打野一哥阿狸转型工具人中单魔切女枪崛起总结,10.21强势套路推荐
- 趣头条途观搭载随车小型工具箱,小问题自己修省钱更方便!
- 兔玩电竞|10.21强势套路推荐 剑姬凯隐成版本答案吸血流剑姬统治上路凯隐晋升打野一哥阿狸转型工具人中单魔切女枪崛起总结
