图表即代码

图表即代码

如何使用 python 构建基础架构图

通常,结束任何项目的最后阶段是文档。这是任何项目中最不浮华且通常最令人厌烦的部分。您终于完成了架构,并准备好继续下一个令人兴奋的事情。但仅仅因为我们并不都喜欢这样做,并不意味着它不重要。文档让其他人(老实说,我们自己也是)从高层次理解项目并熟悉其架构的组件。

编写良好文档的一个非常重要的部分是基础架构图。该图通过展示正在使用的服务以及它们之间的依赖关系来提供基础架构的可视化表示。在几秒钟内,一个对架构没有先验知识的新工程师可以很好地理解某个设计是如何工作的以及它是如何构建的。

以我的经验,图表本身可能是一项费力且令人厌烦的任务,需要对似乎永远无法按我们想要的方式工作的可视化编辑器进行烦躁。更不用说我们每次开始一个新项目时都需要从头开始创建多个图表。

代码让一切变得更好

如果我告诉你,有一种方法可以用代码构建基础架构图,而不是与可视化编辑器搏斗,该怎么办?

让我告诉你为什么使用代码可以为你的工作流程带来许多有影响力的好处。

  1. 对于初学者,如果您的图表是用代码编写的,这意味着它可以使用 git 进行版本控制和管理。利用 git 的协作和持久功能可以帮助您的团队一起工作并跟踪对基础架构图的更改。
  2. 同样,如果您的图表是用代码编写并存储在 git 中的,那么您可以将图表放在代码库中。无需再通过文档页面搜索找到合适的项目。您的图表可以与管理基础设施的代码一起使用,以便于访问和阅读。
  3. 众所周知,如今编写的大多数代码只是从其他地方复制和粘贴。代码的可重用性使得创建具有类似基础架构的图表变得非常简单。您可以利用另一个类似图表中的代码,而不是每次创建新图表时都从头开始。
  4. 我将在本文后面演示这一点,但图表即代码的一大特点是能够创建从其他配置文件中提取值的图表模板。别担心,继续阅读,这将是有道理的……我保证,让你大吃一惊。
  5. 当然,我把最好的留到最后,不再与那些不想去你想去的地方的讨厌的箭搏斗!

图表

好吧,既然我已经说服了您为什么图表即代码是优越的,那么我在这里向您介绍我最近发现的一个工具,它改变了我创建图表的方式。恰当地,它被命名为图表。

这是该工具的链接-> 图表

Diagrams 是一个 python 工具,只需几行代码就可以非常简单地创建一些漂亮的图表。我将简要介绍构成图表的组件。

图表的组成部分

图表

图表是包含图表所有元素的全局上下文。

集群是表示逻辑分组的本地资源集合。集群可以代表任何东西,从 AWS 账户到 VPC,再到 kubernetes 集群。这可以帮助组织图表的元素。

节点

节点是一个抽象概念,用于表示单个资源或系统组件对象。这些将是构成图表结构的对象,无论它们是 EC2 实例还是 kubernetes 入口对象,这些都是构建您的基础设施的服务。

边缘

边代表节点之间的连接。它们是显示系统组件之间的流量或依赖关系的线。它们可以通过各种方式进行定制,以详细说明各种组件如何相互交互。

例子

这是我从文档中获取的图表示例。

从这段代码创建的图表如下所示:

如您所见,几行代码可以构建一个展示真实基础设施设计的工作图。很酷,嗯?

下一级图表

这是您开始将图表构建为代码所需了解的所有内容。但是,我想向您展示另一件很酷的事情。

我有另一篇名为 如何抽象掉 Terraform 这显示了我如何使用 yaml 文件来创建 terraform 资源。此设计模式还可用于通过模板实用地创建基础架构图。我们可以使用相同的 yaml 文件来概述我们的 terraform 基础设施资源来概述我们的 Diagrams 基础设施资源。让我们看一个我正在研究的例子。

假设我们有一个如下所示的 config.yaml 文件:

我们有一些 ECS 服务和 Lambda 函数。我们还为每个 ECS 服务创建了一个 SQS 队列。您可以在我的另一篇文章中了解有关如何将这种 yaml 文件传递​​给 terraform 的更多信息 博文 .

在这篇文章中,我们将重点介绍如何使用我们用于创建 terraform 资源的相同配置文件来创建图表。

让我们看一个图表模板,它将从此配置文件中提取值。

这个文件是一个模板,它通过一个从我们的配置文件中提取值的 for 循环来创建资源。这种设计真正好的地方在于,即使对基础设施进行了更改,例如新的 ECS 服务或 Lambda 函数,图表也可以自动更新,而无需重构图表代码。

我们甚至可以设置一个 CI/CD 工作流程,每次更改配置文件时构建图表。这样我们就可以继续处理我们的项目,而无需不断更新文档。

结论

我希望这是对图表作为代码的强大功能的一个很好的介绍。我已经在我的几个项目中实施了这种方法,它为我节省了很多时间,因为我能够重用来自类似项目的图表。更不用说我多么喜欢在可视化编辑器上使用代码。一如既往,我恳请你看看 图表文档 ,它非常好,很容易上手和玩耍。图表即代码是未来,玩得开心!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/1972/09193103

posted @ 2022-08-31 03:09  哈哈哈来了啊啊啊  阅读(12)  评论(0编辑  收藏  举报