服务器架构图 用什么软件 如何画出优秀的架构图?

点击上方“方志鹏”,选择“设为明星”

回复“666”即可获取新编采访文章

作者 | 三花

来源 | 公众号“阿里云原生”

引言:技术交流的价值不仅体现在通过商业产品和开源项目缩短我们构建应用的路径、加快业务上线的速度,还体现在工作效率的提升、产品性能的优化和用户的提升。优秀工程师的经验提升。 分享经验,提升我们的专业能力。 本文作者阿里巴巴技术专家三花分享了他和他的团队绘制好的架构图的想法和经验。 首发于阿里巴巴内部技术共享平台。 子静、彭胜、余乐对本文也有贡献。

当我们想用一张或者几张图片来描述我们的系统时,我们是不是经常会遇到以下情况:

如果你也有同样的困惑,本文将介绍一种绘制方法论,让架构图更加清晰。

我们先澄清一些基本概念

1.什么是建筑

架构是对系统中实体以及实体之间关系的抽象描述。 这是一系列的决定。

建筑是结构和愿景。

系统架构是一个概念的体现,是对象/信息的功能与形式要素之间的对应关系的分配,是要素之间的关系以及要素与周围环境的关系的定义。

构建一个好的架构是一项复杂的任务,也是一个很大的话题,因此我不会在本文中深入探讨。 建立结构后,您需要让利益相关者理解并遵循相关决策。

2.什么是架构图?

系统架构图是抽象表示软件系统的整体轮廓和各组件之间的相互关系和约束边界,以及软件系统物理部署和软件系统演进方向的总体视图。

3.架构图的作用

一张图片胜过千言万语。 为了让利益相关者理解并遵循架构决策,需要传达架构信息。 架构图是一个很好的载体。 所以,画架构图的目的是:

4.架构图分类

已收集了大量信息并分为许多类别。 其中比较流行的是4+1视图,即场景视图、逻辑视图、物理视图、处理流程视图和开发视图。

场景视图用于描述系统的参与者和功能用例之间的关系,反映系统的最终需求和交互设计,通常用用例图来表示。

逻辑视图用于描述系统软件功能拆解后的组件关系、组件约束和边界。 它反映了系统的整体构成以及系统构建的过程。 它通常用UML组件图和类图来表示。

物理视图用于描述系统软件与物理硬件之间的映射关系,反映系统组件如何部署在一组可计算的机器节点上,用于指导软件系统的部署和实现过程。

服务器架构图 用什么软件_架构软件有哪些_架构设计图用什么软件

处理流程视图用于描述系统软件组件之间的通信顺序、数据的输入和输出,反映系统的功能过程和数据流向。 通常用时序图和流程图来表示。

开发视图用于描述系统的模块划分和组成,以及细化到内部封装的组成设计,为开发人员服务,反映系统的开发和实施过程。

以上五种架构视图从不同角度代表了软件系统的不同特征,组合在一起作为架构蓝图来描述系统架构。

什么样的架构图才是好的架构图?

以上分类是之前经验的总结,图片也取自网络。 那么这些照片好看吗? 难道我们一定要按照葫芦的模式来画这样的图吗?

不管这些图好不好,我们思考一下这些图的分类和作用。 综上所述,我们认为服务器架构图 用什么软件,在画出一张好的架构图之前,首先应该明确它的受众,然后再思考清楚其目的。 应该向他们传达哪些信息? 因此,不要为了画物理视图而画物理视图,也不要为了画逻辑视图而画逻辑视图。 相反,你应该根据不同的受众和传达的不同信息,用图片准确地表达出来。 最后,图片可能属于此类。 那么,画出来的画面好坏的一个直接标准就是:观众是否准确地接收到了你想要传达的信息。

明确了这两点之后,从观众的角度来看,一张好的架构图是不需要解释的。 它应该是自描述的、一致且准确的,足以与代码相呼应。

绘制架构图时遇到的常见问题

1. 方框代表什么?

为什么应用方框而不是圆圈? 它有什么特殊的意义吗? 任意使用盒子或其他形状可能会造成混乱。

2. 虚线和实线是什么意思? 箭头是什么意思? 颜色意味着什么?

不加区别地使用线条或箭头可能会引起误解。

3.运行时和编译时冲突? 层级冲突?

架构是一项复杂的工作,仅使用单个图来表示架构很容易导致无法解释的语义混乱。

本文推荐的绘制方法

C4 模型使用容器(应用程序、数据存储、微服务等)、组件和代码来描述软件系统的静态结构。 这些类型的图片相对容易绘制,并提供了绘制要点服务器架构图 用什么软件,但最重要的是,我们认为它清楚地指出了每种类型图片可能的受众和含义。

架构软件有哪些_架构设计图用什么软件_服务器架构图 用什么软件

下面的案例来自C4官网,然后添加一些我们的理解,看看如何更好的表达软件架构。

1. 系统上下文图

这是一个想象中要建立的网上银行系统。 它使用外部主机银行系统访问客户账户和交易信息,并通过外部电子邮件系统向客户发送电子邮件。 正如您所看到的,它非常简单明了。 我相信无需解释。 你可以清楚地看到它。 它包括需要构建的系统本身、系统的客户以及与这个系统交互的外围系统。

使用

这样一个简单的图就可以告诉我们要构建什么系统; 它的用户是谁,谁将使用它,以及如何将它集成到现有的 IT 环境中。 该图的受众可以是开发团队内部的人员、外部技术人员或非技术人员。 现在:

如何绘制

中间是您自己的系统,周围是用户和与其交互的其他系统。 这个图的关键是理清要构建的系统的用户和高层依赖关系。 整理和画出来只需要几分钟的时间。

2. 容器图

容器图扩展了上下文图中要构建的系统。

上图中,待构建的系统除了用户和外围系统外,还包括一个基于javaspring mvc提供系统功能入口的Web应用、一个基于xamarin架构提供功能入口的移动App到移动端,基于java的api应用提供服务,采用mysql数据库存储,各个应用之间的交互用箭头线表示。

当你看这张图时,你不会注意它是直角框还是圆角框,也不会注意它是实线箭头还是虚线箭头。 就连箭头的方向也没有引起太多的注意。

我们有许多绘图方法来定义框和线的含义。 这就需要抽屉和观看者都清楚地理解这些定义,才能读懂整个画面中的信息。 但现实情况是,这往往是一个非常高的要求,所以很多图片只能给出一个粗略的想法。

使用

该图的受众可以是团队内部或外部的开发人员,也可以是运维人员。 其用途可列举如下:

如何绘制

由框图表示,内部结构可能包括名称、技术选择、职责以及这些框图之间的交互。 如果涉及外部系统,最好明确界限。

3. 元件图

组件图扩展了容器并描述了其内部模块。

使用

这张图主要是给内部开发人员看如何组织和构建代码的。 它的用途是:

4.类图(代码/类图)

这张图显然是给技术人员看的。 比较常见,就不详细说了。

© 版权声明
THE END
喜欢就支持一下吧
点赞264赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容