基础设施图即代码
创建基础架构图是一项相当繁琐的工作。我注意到,例如,当有新人想了解我们的架构时,我倾向于用记号笔在白板上画出来。这样做效果很好,而且能把我们掌握的所有信息都牢牢地记在脑子里。下次有人问起时,我就会重新画一遍,也许会漏掉一些有趣的部分。
为了真正享受这类图表随时可用带来的所有好处,您需要保持它们处于最新状态。如果您需要第三方工具来执行此操作,更新它们的工作量就会大大增加。
因此,我构建了一个非常小巧的 JavaScript 库,允许你用代码生成图表。目标是以一种易于理解的方式指定你的基础架构。如果你想了解它,可以前往Github 仓库。
工作原理
让我们直接看一个示例来了解该库的工作原理。假设我们要绘制一个基础设施,其中包含一个负载均衡器、该负载均衡器背后的一些 Web 服务器以及 Web 服务器读取数据的一些数据库。我们希望生成以下图表:
我们的设置方法如下:
const { diagram, dac: { Client, Elb, Ec2Cluster, RdsCluster } } = window;
const client = new Client();
const loadbalancer = new Elb();
const webserver = new Ec2Cluster();
const databases = new RdsCluster();
client.getsDataFrom(loadbalancer);
loadbalancer.getsDataFrom(webserver);
webserver.getsDataFrom(databases);
diagram.render();
我们首先列出构成基础设施的各项内容。然后,我们指定这些内容之间的通信方式。最后,我们绘制出图表。
我们用于指定节点关系的其他选项是sendsDataTo()
和exchangesDataWith()
。该库提供了大量可用的基础设施组件(目前主要是 AWS)。它们都会有一个漂亮的图标,有些甚至还有集群版本可用。
优势
将基础设施图指定为代码有几个优点。
因为是代码,所以可以非常详细地描述你正在做什么以及为什么这么做。这很好,因为它能让你捕捉到图表中关系的意图。如果这还不够,你甚至可以添加注释,让事情更加清晰。
将其添加到版本控制中很容易。而且,如果您添加了清晰的提交信息,您实际上可以看到哪些内容发生了变化,甚至可以看到变化的原因。对于图表工具常用的特殊文件格式来说,这比较困难。
无需任何工具即可轻松保持更新。任何拥有文本编辑器的人都可以更新您的文档。现在,您真的没有理由不更新技术文档了。
结论
对我来说,这种方法非常有用,因为它降低了目前现有工具中相当高的门槛。能够在绘制图表的同时创建数字版,显然会带来巨大的好处。
如果您想尝试一下,请查看Github 存储库。
您如何记录您的基础设施?您觉得这种方法怎么样?我很想知道您的想法!另外,如果您知道任何可以做类似事情的工具或库,请告诉我!
文章来源:https://dev.to/raoulmeyer/infrastruction-diagrams-as-code-3f3j