如何绘制技术架构图?


什么是架构图?为什么要画架构图?怎样才能画出通俗易懂的架构图?

相信很多读者都看过很多技术文档,其中都会配上一些架构图,帮助读者理解作者的意图。很多时候,这样的图描述系统远比长篇大论的文字来得有效,所以我在写技术方案的时候,喜欢用架构图来描述我设计的系统。但是我发现并不是每个人都擅长画架构图。

大家在画架构图的时候是不是经常会遇到以下几种情况:

  • 你擅长写代码,但你不知道如何与 图表 打交道。
  • 您不知道系统中应该绘制或省略什么。
  • 布局凌乱。你对如何调整它不满意。

有这些困惑是正常的。当我第一次尝试画画时,我也很困惑。今天我就尝试用自己多年的经验和大家一起探讨如何画出好的技术架构图。

什么是架构图?
要想画好架构图,首先要知道什么是架构图。架构图的简单解释就是描述系统架构。什么是架构?要回答这个问题,我们其实可以从其他行业找到灵感,比如一个公司的组织结构,它描述了公司是怎么形成的,有多少个部门,每个部门有多少人,部门之间有什么关系。系统架构也可以这样理解。

系统架构是描述系统是如何组成的,系统有多少个模块和组件,以及模块和组件之间的关系。

建模
知道了系统架构是什么,我们离绘制技术架构图又近了一步。但是我们的系统太复杂了,任何一个系统都有几千行代码要构建。我们真正要在图表上表达哪些元素?这个时候我就给系统建模。

建模是对客观事实进行抽象,以表达对事物本身的认识的一种方法。听起来很抽象,举个例子吧。如果我们要给无人机、战斗机、民航飞机、火箭建模,我们应该怎么做呢?首先,找到一个抽象维度。比如我们可以从功能的角度把它们抽象成武器。其次,我们要根据这个维度,找到他们的共同点。比如这些东西都有飞行的属性,需要燃料来驱动。

回到系统架构上来,如果我们要画一个系统架构图,我们需要通过一些维度来对我们的系统进行建模,然后将这个模型表达在画布上。以我的经验,基本有以下几个维度:业务、系统、部署。通过这些维度构建的模型可以称为业务架构图、系统架构图和部署架构图。不同的人对架构图有不同的看法。比如我们的业务员就比较注重系统功能。我们在给业务员讲解系统的时候,应该用业务架构图来帮助描述。

业务架构图
要想画好业务架构图,必须充分理解业务流程,从业务的角度分析业务之间的关系,通过对业务的理解识别各个流程的业务属性,然后进行层次抽象,最终实现一个产品功能闭环。

以会员福利业务为例。首先,我们需要拆分业务。为了会员的权益,应该有积分制、优惠券制、优惠制。积分、优惠券和特权有自己的生命周期。我们需要确定他们生命周期中的每个阶段。那么这些要素就构成了权益的核心竞争力。我们还可以利用这些核心能力,形成各种上层产品。比如我可以把几张优惠券组合成一个会员的福利,发给会员。那么我们的能力和产品能够支持什么样的业务场景。这是我的业务架构图的示例。

系统架构图
系统架构图是给软件开发人员画的,所以这个架构图和上面的业务架构图是完全不同的。我们需要通过图表告诉他们如何设计我们的系统。具体需求如下:

  • 需要清楚地描述系统中有多少个模块,每个模块的职责,以及每个模块的边界在哪里。
  • 模块之间的关系以及它们如何通信。
  • 如何在模块之间传输数据。

我个人推荐使用C4模型。感兴趣的可以参考C4模型官网(https://c4model.com)。下面是我用C4模型画的系统架构图。


架构是一个很抽象的东西。理解架构需要很长时间。通过自己的理解画出系统架构是比较困难的。

希望通过这篇文章,能够梳理出一些方法论,解决你在架上构图上的一些困惑。