如何创建架构图
记录和跟踪应用程序架构的变化非常重要,但同时也常常被低估。
是的,您可能从一些草图开始,甚至可能绘制并向您的团队展示这些图表,但通常,一旦您开始在您喜欢的 IaC(无论是 CloudFormation、Serverless、CDK 还是 Terraform)中编写它的代码/模板,大多数时候我们往往会忽略它的视觉部分。
无论是针对同行工程师或架构师的RFC(征求意见稿),还是用于解释生产线几个月后的架构选择的ADR(架构决策记录) ,拥有美观、易读且最新的图表都会让事情变得如此简单。
我通常在公司内部的 Google Drive 中使用Draw.io绘制架构图并与同事分享,然后我会将架构图保存为图像并直接放入 Repo 中,并在 Readme 文件中提供源代码链接。
然而,几个月后,源图很可能不再反映 CDK 代码中的更改。
市面上有很多工具可供选择——您甚至可以下载所有 AWS 服务图标,以便在需要的地方使用它们——点击此处查看官方链接。
为了让图表更贴近代码库,在编辑器中使用插件可以简化流程——你可以在 Visual Studio Code 中使用这个插件,或者在 IntelliJ 中使用这个(非官方)插件。
不过,这些插件并不能解决从 IaC 创建图表的问题。
最近我发现了一些可以直接从代码创建图表的工具,或者更好的是从代码中生成的模板。
CloudFormation 设计器
CloudFormation Designer是 AWS 的官方工具,但说实话,它显示的内容太多,而且没有提供真正的自定义选项。如果我直接使用 Cloud Formation 来描述我的 IaC(我不用 Cloud Formation,因为我很久以前就先采用了无服务器框架和 AWS CDK),
我觉得修改一下模板会比较有用。
CFN 图
CFN Diagrams是一个 CLI 工具,允许您将 CloudFormation/SAM/CDK 模板可视化为图表,并允许您在不同的输出之间进行选择,以更适合您的目标受众(对于 README - 或某些 Word 文档/幻灯片,我更喜欢静态图像,对于演示文稿,交互式 HTML 看起来更漂亮)。
HTML 输出
当您选择 HTML 作为输出时,您将获得一个非常漂亮且精美的页面,它允许您浏览架构。您还可以选择和过滤不同的服务,以使图表更简洁。
Draw.io 输出
在这种情况下,您的输出将是一个类似于在 Google Drive 或 Visual Studio 代码插件上创建的文件。
与 HTML 输出类似,您可以按类型或名称取消选择某些资源以减少输出中的混乱,但您只能从 CLI 执行此操作。
当然,由于我已经使用 Draw.io 进行初步草图绘制,所以这是我最喜欢的输出。
然而,这个工具的问题是 - 当然 - 如果您从输出编辑图表,下次您将在某些 CDK 更改后生成模板,您的更改将会丢失(如果文件被覆盖)或者您将必须再次编辑输出以反映更新和您之前的更改。
代码和文档不再匹配的风险仍然存在,但对于大多数文档来说,这最终都是正确的,(毕竟,我们必须有纪律地保持文档更新),并且拥有这样的工具非常方便,因为 - 除非我们真正定制了可视化 - 图形更新只是一个(假设您正在使用 CDK 例如)一个cdk synth
离开并重新导入到您选择的工具中(或者甚至,在 CFN 的情况下,合成是默认完成的,因此cfn-dia d
)。
我希望这会有所帮助,(如果您使用其他工具,请随时在评论中提及!)
鏂囩珷鏉ユ簮锛�https://dev.to/aws-builders/how-to-create-diagrams-of-your-architecture-1na6