用代码画架构图:diagrams让你告别画图工具
你还在为画架构图熬夜调布局?还在为改一个箭头重新调整整个画布?diagrams CLI工具彻底解决这些痛点——用Python代码定义云架构,自动生成专业 diagrams(架构图),让你专注设计而非绘图。读完本文,你将掌握用几行代码生成AWS/Azure/GCP架构图的能力,还能将架构设计纳入版本控制。
为什么选择diagrams?
传统架构图工具存在三大痛点:修改困难、版本混乱、协作低效。diagrams通过"代码即架构"的理念完美解决:
| 传统工具 | diagrams |
|---|---|
| 拖拽调整耗时 | 代码定义,自动布局 |
| 版本难以追溯 | Git管理,历史可查 |
| 协作需文件传输 | 代码共享,实时同步 |
项目核心优势:支持AWS、Azure、阿里云等18+云服务商,内置2000+组件图标,无需设计基础也能生成专业 diagrams(架构图)。官方文档:docs/getting-started/installation.md
3分钟快速上手
安装步骤
diagrams需要Python 3.9+和Graphviz渲染引擎,执行以下命令完成安装:
# 安装Graphviz (Ubuntu示例)
sudo apt-get install graphviz
# 安装diagrams
pip install diagrams
Windows用户可使用choco install graphviz,macOS用户使用brew install graphviz。详细安装指南:docs/getting-started/installation.md
第一个架构图
创建web_service.py文件,输入以下代码定义一个简单的Web服务架构:
from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
with Diagram("Web Service", show=False):
ELB("负载均衡器") >> EC2("Web服务器") >> RDS("用户数据库")
运行生成 diagrams(架构图):
python web_service.py
当前目录会生成web_service.png文件,展示三层架构关系: 
核心功能解析
多云服务支持
diagrams覆盖主流云厂商组件,通过简单导入即可使用:
# 混合云架构示例
from diagrams.aws.compute import EC2
from diagrams.azure.compute import VM
from diagrams.alibabacloud.compute import ECS
with Diagram("混合云部署", show=False):
[EC2("AWS节点"), VM("Azure节点"), ECS("阿里云节点")]
支持的完整云服务商列表:docs/nodes/aws.md、docs/nodes/azure.md等。
集群与分组
使用Cluster类对组件进行逻辑分组,清晰展示架构层次:
from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS
from diagrams.aws.database import RDS
with Diagram("微服务架构", show=False):
with Cluster("服务集群"):
services = [ECS("订单服务"), ECS("用户服务")]
with Cluster("数据层"):
db = RDS("主数据库")
db - RDS("只读副本")
services >> db
自定义样式
通过Edge类调整连接线样式,突出关键数据流:
from diagrams import Diagram, Edge
from diagrams.aws.compute import Lambda
from diagrams.aws.storage import S3
with Diagram("数据流示例", show=False):
Lambda("处理函数") >> Edge(color="red", style="dashed") >> S3("存储桶")
企业级应用场景
事件驱动架构
以下代码定义一个完整的AWS事件处理流程,包含Kubernetes事件源、ECS工作节点、SQS队列和Lambda处理函数:
from diagrams import Cluster, Diagram
from diagrams.aws.compute import ECS, Lambda
from diagrams.aws.database import Redshift
from diagrams.aws.integration import SQS
from diagrams.aws.storage import S3
with Diagram("事件处理架构", show=False):
source = EKS("事件源")
with Cluster("处理流程"):
workers = [ECS("worker1"), ECS("worker2")]
queue = SQS("事件队列")
handlers = [Lambda("处理器1"), Lambda("处理器2")]
store = S3("数据存储")
analytics = Redshift("数据分析")
source >> workers >> queue >> handlers
handlers >> [store, analytics]
Kubernetes部署架构
定义包含HPA自动扩缩容的K8s部署架构:
from diagrams import Diagram
from diagrams.k8s.clusterconfig import HPA
from diagrams.k8s.compute import Deployment, Pod
from diagrams.k8s.network import Ingress, Service
with Diagram("K8s部署架构", show=False):
Ingress("入口") >> Service("服务") >> [Pod("实例1"), Pod("实例2")]
Deployment("部署") >> ReplicaSet("副本集") >> Pod("实例3")
HPA("自动扩缩容") >> Deployment("部署")
最佳实践与资源
版本控制集成
将架构代码纳入Git管理,通过提交信息追踪架构演进:
# 初始化仓库
git init
git add web_service.py
git commit -m "feat: 初始Web服务架构"
扩展阅读
- 更多示例代码:docs/getting-started/examples.md
- 进阶使用指南:docs/guides/diagram.md
- 自定义节点开发:docs/nodes/custom.md
现在就用diagrams重构你的下一个架构设计吧!只需一行命令即可安装:pip install diagrams,项目源码仓库:https://gitcode.com/GitHub_Trending/di/diagrams。
提示:生成的PNG diagrams(架构图)可直接嵌入PPT、文档或Confluence,保持团队沟通中的视觉一致性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







