C4模型

  C4模型是来自software architecture for developers一书的定义,指的是context上下文场景, container容器, component组件 和 classe类,意思指一个软件架构是由这些模型呈树形结构组成。

  关注代码仍然是大多数软件开发生命周期中关注的焦点,这是有一定道理,因为代码是最终交付。但如果你不得不向别人解释关于系统是如何工作的,你会从代码开始解释吗?

  确实代码并不能讲述系统的整个故事,在缺乏文档的情况下,人们通常会开始在白板上或纸上用图框和线条解释系统的主要构建块是什么,它们是如何连接的。而使用Microsoft Visio, Rational Software Architect 或 Sparx Enterprise Architect等专业工具又比较复杂。

  更好的办法是在不同的抽象层次创建不同的图diagram,一个简单的图diagram比复杂的图能够更有效表达描述。

  下图是C4模型的示意图:

c4 model

  • 类Classe: 这是面向对象世界常用, 类是我们系统最小的构建模块.
  • 组件Component: 一个组件可以认为是由一个或多个类组成的逻辑组,比如一个审计audit组件或授权服务能够用于决定资源的访问是否被允许,组件典型地由许多协同类组成微服务架构可以认为是一种组件。
  • 容器Container: 一个容器代表组件执行或驻留的地方,这可能是一个Web容器或应用服务器,也可以是富客户端应用或数据库,容器是做为系统一部分启动的,容器之间通讯是通过远程接口如 SOAP web service, RESTful interface, Java RMI, Microsoft WCF, messaging,等进行, Docker可以认为是一个这样的容器。
  • Context/系统System: 一个系统是一个高层次抽象和代表,一个系统由多个单独的容器组成,比如财务系统,银行系统或网站系统等。

 

软件架构的4+1视角模型简介