「Diagrams」を使うと Python コードでアーキテクチャ図を生成できる.サポートされているアイコンセットがとても多く AWS や Google Cloud や Microsoft Azure もあれば,Kubernetes やプログラミング言語なども使える.試してみたけどめちゃくちゃ便利!まさに Diagram as Code だ✌️
セットアップ
「Diagrams」は Graphviz に依存しているため,macOS だと pip
と brew
ですぐにセットアップできる.
$ pip install diagrams $ brew install graphviz
試してみた
さっそく Examples を参考にアーキテクチャ図を作ってみた!
サンプル : AWS
from diagrams import Cluster, Diagram from diagrams.aws.compute import EC2, EC2AutoScaling, Lambda from diagrams.aws.database import Aurora from diagrams.aws.integration import SQS from diagrams.aws.network import ALB, Route53 from diagrams.aws.storage import S3 with Diagram('AWS Architecture'): route53 = Route53('Route 53') alb = ALB('ALB') with Cluster('EC2 Auto Scaling'): instances = [ EC2('Instance'), EC2('Instance'), EC2('Instance') ] aurora = Aurora('Aurora') sqs = SQS('SQS') function = Lambda('Lambda') s3 = S3('S3') route53 >> alb >> instances instances >> aurora instances >> sqs >> function >> s3
サンプル : Kubernetes
from diagrams import Cluster, Diagram from diagrams.k8s.compute import Deployment, Pod, ReplicaSet from diagrams.k8s.network import Ingress, Service from diagrams.k8s.podconfig import ConfigMap with Diagram('Kubernetes Architecture'): ingress = Ingress('Ingress') service = Service('Service') with Cluster(''): pods = [ Pod('pod'), Pod('pod'), Pod('pod') ] replicaset = ReplicaSet('ReplicaSet') deployment = Deployment('Deployment') configmap = ConfigMap('ConfigMap') ingress >> service >> pods << replicaset << deployment << configmap
サンプル : アプリケーション
from diagrams import Cluster, Diagram from diagrams.programming.framework import React from diagrams.programming.language import Go, Java from diagrams.onprem.database import MySQL, PostgreSQL with Diagram('SPA Architecture'): frontend = React('Frontend') with Cluster('Service A'): frontend >> Go('Go API') >> MySQL('MySQL') with Cluster('Service B'): frontend >> Java('Java API') >> PostgreSQL('PostgreSQL')