用Python创建漂亮的架构图( 二 )


在下面您可以看到 , 要做到这一点 , 我们只需要将节点的实例移动到我们正在创建的集群范围内即可 。
from diagrams import Diagram, Clusterfrom diagrams.aws.compute import EC2from diagrams.aws.network import ELBfrom diagrams.aws.network import Route53from diagrams.onprem.database import PostgreSQL # Would typically use RDS from aws.databasefrom diagrams.onprem.inmemory import Redis # Would typically use ElastiCache from aws.databasewith Diagram("Simple Website Diagram") as diag:dns = Route53("dns")load_balancer = ELB("Load Balancer")database = PostgreSQL("User Database")cache = Redis("Cache")with Cluster("Webserver Cluster"):svc_group = [EC2("Webserver 1"),EC2("Webserver 2"),EC2("Webserver 3")]diag如您所见 , 该图仍然只是节点列表 , 但是现在我们将适当的节点聚类为逻辑分组 。
用Python创建漂亮的架构图文章插图
> Build with the code from the gist linked here.
步骤4:将所有内容连接在一起在最后一步中 , 我们将不会链接刚刚安排要在架构中使用的节点 。当我需要更新或调整架构时 , 此任务使我花费的时间最长 。如果您在下面看一下 , 只需用双箭头定义流到每个节点的流程就可以了! 在此示例中 , 我们将仅链接不带标签的节点 , 但是如果您看一下将标签应用于链接的文档 , 这是一项非常简单的任务 。
from diagrams import Diagram, Clusterfrom diagrams.aws.compute import EC2from diagrams.aws.network import ELBfrom diagrams.aws.network import Route53from diagrams.onprem.database import PostgreSQL # Would typically use RDS from aws.databasefrom diagrams.onprem.inmemory import Redis # Would typically use ElastiCache from aws.databasewith Diagram("Simple Website Diagram", direction='LR') as diag: # It's LR by default, but you have a few options with the orientationdns = Route53("dns")load_balancer = ELB("Load Balancer")database = PostgreSQL("User Database")cache = Redis("Cache")with Cluster("Webserver Cluster"):svc_group = [EC2("Webserver 1"),EC2("Webserver 2"),EC2("Webserver 3")]dns >> load_balancer >> svc_groupsvc_group >> cachesvc_group >> databasediag生成的图像可以在下面看到 , 现在您可以看到图中每个节点之间的逻辑流程 。可以通过更改定义节点的顺序来逆转此流程 。除了调整流程外 , 您还可以更改许多内容 , 因为边缘对象包含三个属性:标签 , 颜色和样式 。我们不会在这里介绍如何柚木 。如果您有兴趣了解更多信息 , 请参见本文结尾处的文档链接 , 并且这些属性反映了对应的graphviz边缘属性 , 如果您过去使用该工具可以简化事情 。
用Python创建漂亮的架构图文章插图
> Build with the code from the gist linked here.
结论现在 , 您已下定决心用代码构建漂亮的图 , 在涉及自动化的可能性以及利用体系结构图的常规维护节省时间的情况下 , 利用此工作流程有很大的潜力 。
单独使用此工具节省的时间将使我将来使用这种方法 。我当然不会错过对图进行手动调整 , 仔细对齐组件和箭头以及我的体系结构的每次迭代所涉及的工作 。
我希望我的经验对使用代码构建图很有兴趣 , 并且对将来的图表工作很有用 。谢谢阅读!
(本文翻译自Dylan Roy的文章《Create Beautiful Architecture Diagrams with Python》 , 参考:)