专栏名称: 互联网后端架构
主要介绍Java后端架构。其中也会掺杂一些前端、GO、Python、Linux,目标:全栈工程师!---好像很牛叉的样子 ^-^
目录
相关文章推荐
51好读  ›  专栏  ›  互联网后端架构

作为架构师你应该知道 - C4 model

互联网后端架构  · 公众号  · 架构  · 2019-09-05 08:40

正文

概述

最近在开发系统中,发现需要一种方式来构建对于当前系统的理解和细化,UML是我一下子映入脑海的方式,但是很久不再接触了,刚好在前段时间看到关于C4model相关文章,刚好可以试试

架构图的主要功能是从各个角度和各个层次去描述系统的功能,主要是从宏观到微观的描述。C4 Model也是提供图形从不同的层次去描述我们的系统。主要的优势是C4 Model提供很少的抽象图形要素和图类型来描述系统,使得各个系统参与者都能很快理解系统的功能。这些图从层级上来看都是缩放的,就行谷歌地图一样


地图

为了构建实际系统的抽象。C4 Model对于系统的描述提供了四个抽象层次:


抽象

这个抽象层次里面包含5个要素

  • Software System:软件系统最高的抽象层次,描述了交付给用户完成用户所需功能的系统。

  • Person:使用系统的人或者角色

  • Container:容器是独立运行一些代码和数据,组合起来完成系统功能的要素。一个容器可以是Server-side web application、Client-side web application、Client-side desktop application、Mobile app、Server-side console application、Microservice、Database、Blob or content store、File system、Shell script等。

  • Component:组件一组相关功能的封装,对外提供良好的接口。

基于这四个层次的抽象,C4 Model由4张核心图和3张附加图组成

四张核心图

4张核心图分别为系统上下文图(Context)、容器图(Container)、组件图(Component)、代码图(Code),代码图是实际的类实现,可选。

系统上下文图

系统上下文图

系统上下文图主要表述的是当前要开发的系统和周边环境的关系,包括系统和用户之间的关系和系统和周边系统的关系,在系统上下文图里,方块指代的是软件系统,蓝色表示我们关注的系统(位于中心),灰色表示我们直接依赖的系统或者依赖我们的系统,虚线框一般用于用于聚合相关元素。

容器图

容器图

当我们理解了当前关注的系统在整个IT环境中的地位的时候,需要将当前系统放大,观察里面的内部结构,放大后就会看到容器,如上图所示,C4模型认为系统是由容器组成的。容器图显示的是软件架构中各个独立的部分(一般是一个独立的进程),每个容器的职责和他们间是如何交互的,以及容器与其他系统是如何交互的。它显示了当前软件系统的技术选型和交互方式。它是一个简单的、以高级技术为重点的图表,对软件开发人员和支持/操作人员都很有用

组件图

组件图

继续放大容器,可以看到每个容器里有哪些组件组成,组件的职责是什么,组件是如何交互的。组件主要是相关功能的聚合,提供对外的接口

代码图

代码图

代码图跟UML里面的类图很类似。除非非常重要的且还没有写出代码的组件才画代码图。
核心图主要固定了我们系统的抽象层次,方便讨论和理解。

三张扩展图

核心图让我理解了系统静态架构,三张扩展图,可以让我们关注更多的维度。

系统景观图

image.png


系统景观图是比系统上下文图更丰富的系统级别的表达。不像上下文图只关注聚焦系统和它的直接关系,连一些间接相关的系统都会标示出来,包括那些外部系统相关的用户。系统景观图的意义在于从企业的整个IT架构来看待当前要构建的系统的功能和价值。

动态图







请到「今天看啥」查看全文