第240114期 – 架构图

第240114期 - 架构图
32k star,推荐一款神器,已开源

先来看下效果图,如下架构图是用代码实现的,开源地址在文末:
第240114期 - 架构图

介绍一下 diagrams 这个工具,它可以用 Python 代码绘制云系统架构图

diagrams:用代码绘制云系统架构图

什么是 diagrams

diagrams 是一个开源的 Python 库,它可以让你用 Python 代码来绘制云系统架构图。它的特点是:

  • 可以用代码来描述或可视化现有的或新设计的系统架构
  • 可以跟踪系统架构图的变化,因为代码可以用任何版本控制系统来管理
  • 支持主流的云服务提供商,包括 AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud 等
  • 也支持本地节点,SaaS 和主要的编程框架和语言
  • 不需要任何设计工具,只需要安装 Python 和 Graphviz
  • 不会控制任何实际的云资源,也不会生成 cloud formation 或 terraform 代码,只是用于绘制云系统架构图

如何使用 diagrams

要使用 diagrams,你需要先安装 Python 3.7 或更高版本,然后安装 diagrams 库和 Graphviz 工具。你可以用以下命令来安装:

# 使用 pip (pip3)
$ pip install diagrams

# 使用 pipenv
$ pipenv install diagrams

# 使用 poetry
$ poetry add diagrams

安装好之后,你就可以用 Python 代码来绘制云系统架构图了。diagrams 提供了各种云服务的节点,你可以用它们来组合出你想要的图形。例如,下面的代码可以绘制一个简单的 业务架构图:

from diagrams import Cluster, Diagram
from diagrams.alibabacloud.network import SLB
from diagrams.alibabacloud.compute import ECS
from diagrams.alibabacloud.web import Domain    
from diagrams.alibabacloud.web import Dns
from diagrams.onprem.network import Nginx
from diagrams.onprem.compute import Server
from diagrams.alibabacloud.database import RDS
from diagrams.elastic.elasticsearch import  Beats
from diagrams.elastic.elasticsearch import  Elasticsearch
from diagrams.elastic.elasticsearch import  Kibana
from diagrams.elastic.elasticsearch import  Logstash
from diagrams.onprem.compute import Server
from diagrams.onprem.database import PostgreSQL
from diagrams.onprem.inmemory import Redis
from diagrams.onprem.monitoring import Grafana, Prometheus,PrometheusOperator
from diagrams.onprem.network import Nginx
from diagrams.onprem.queue import Kafka


with Diagram("Advanced Web Service with On-Premise", show=False):
    domain = Domain("domain")
    dns = Dns("dns")
    ingress = Nginx("nginx")


    metrics = PrometheusOperator("metric")
    metrics << Prometheus("prometheus") << Grafana("monitoring")


    with Cluster("Service Cluster"):
        grpcsvc = [
            Server("web1"),
            Server("web2"),
            Server("web3")]


    with Cluster("Sessions HA"):
        primary = Redis("session")
        primary - Redis("replica") << metrics
        grpcsvc >> primary


    with Cluster("Database HA"):
        primary = PostgreSQL("users")
        primary - PostgreSQL("replica") << metrics
        grpcsvc >> primary


    aggregator = Beats("logging")
    aggregator >> Kafka("stream") >> Logstash("analytics") >> Elasticsearch("es") >> Kibana("kibana")


    domain >> dns >> ingress >> grpcsvc >> aggregator

运行这段代码,你就可以得到下面的图形:

第240114期 - 架构图

如何安装 diagrams

要安装 diagrams,你需要先安装 Python 3.7 或更高版本,然后安装 diagrams 库和 Graphviz 工具。你可以用以下命令来安装:

# 使用 pip (pip3)
$ pip install diagrams

# 使用 pipenv
$ pipenv install diagrams

# 使用 poetry
$ poetry add diagrams

如果你是 macOS 用户,你可以用 Homebrew 来安装 Graphviz:

$ brew install graphviz

类似的工具

除了 diagrams,还有一些类似的工具,可以用代码来绘制云系统架构图,例如:

  • D2:一个用 Go 语言编写的库,可以用 DSL(领域特定语言)来绘制云系统架构图
  • Mermaid:一个用 JavaScript 编写的库,可以用 Markdown 风格的语法来绘制流程图,序列图,甘特图等
  • [Excalidraw]:一个用 React 编写的库,可以用手绘风格的图形来绘制各种图表
  • [Structurizr/Java]:一个用 Java 编写的库,可以用代码来创建软件架构模型和图形
  • [Modules.tf-lambda]:一个用 Terraform 编写的模块,可以用代码来生成 AWS Lambda 架构图
  • [C4-draw.io]:一个用 draw.io 编写的插件,可以用 C4 模型来绘制软件架构图

总结

diagrams 是一个用 Python 代码来绘制云系统架构图的工具,它有以下优点:

  • 可以用代码来描述或可视化现有的或新设计的系统架构
  • 可以跟踪系统架构图的变化,因为代码可以用任何版本控制系统来管理
  • 支持主流的云服务提供商,包括 AWS, Azure, GCP, Kubernetes, Alibaba Cloud, Oracle Cloud 等
  • 也支持本地节点,SaaS 和主要的编程框架和语言
  • 不需要任何设计工具,只需要安装 Python 和 Graphviz
  • 不会控制任何实际的云资源,也不会生成 cloud formation 或 terraform 代码,只是用于绘制云系统架构图

如果你想用代码来绘制云系统架构图,diagrams 是一个不错的选择。你可以在 文末 找到 diagrams 的源码和文档。你也可以尝试一下其他类似的工具,看看哪个更适合你的需求。希望这篇文章对你有帮助,谢谢你的阅读。🙏

开源地址:https://github.com/mingrammer/diagrams
官网地址:https://diagrams.mingrammer.com/


© 版权声明

相关文章