← Back to Logs

コード化可能なネットワークトポロジー図を描くツールとしてDiagramsは適しているか検証してみた

2024年9月25日

Diagrams

https://diagrams.mingrammer.com/

忙しい人向け結論

コード化可能なネットワークトポロジー図を描くツールとしてDiagramsは適していない

イントロ

  • 背景: ネットワークトポロジー図の作成は、エンジニアにとって重要な作業であり、可視化とドキュメント化が求められることが多い。特にコードで管理できるツールは、再利用性や自動化の観点から非常に魅力的です。

  • 目的: 今回は、Pythonベースのツール「Diagrams (by Mingrammer)」を使ってネットワークトポロジー図を描くことがどれだけ実用的かを検証してみます。

Diagramsとは

云々、、

Diagrams を使用すると、クラウド システムのアーキテクチャをPython コードで描画できます。

Diagrams は、Python コードでクラウドインフラやアーキテクチャ図を描画するためのツールで、AWS、GCP、Azure などのクラウドプロバイダーのコンポーネントを簡単に視覚化できるのが特徴です。

使い方

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("lb") >> EC2("web") >> RDS("userdb")

出力例

from diagrams import Diagram
from diagrams.generic.network import Router, Switch, Firewall

with Diagram("Generic Network Topology", show=False):
    router = Router("Router\n192.168.1.1")
    switch = Switch("Switch\n192.168.1.2")
    firewall = Firewall("Firewall\n192.168.1.254")

    router - switch - firewall

from diagrams import Diagram
from diagrams.generic.network import Router, Switch

with Diagram("Simple Network Topology", show=False):
    router = Router("Router\n192.168.1.1")
    switch = Switch("Switch\n192.168.1.2")

    router >> switch

その他

実際に試してみた結果

  • 利点:

  • 課題:

他の代替ツール

  1. Graphviz: 良さそう

  2. PlantUML: UML 図をコード化して描くためのツール、ネットワークトポロジー図も描けるらしい バス型トポロジーが書けそう

  3. Cytoscape.js: JavaScript ベース

結論

  • Diagrams の評価: Diagrams はクラウドインフラやシステムアーキテクチャ図、イベント処理 ステートフルアーキテクチャ 高度なWebサービス向けのサービスなどには適していますが、ネットワークトポロジー図を描くツールとしては制約が多いと感じました。インターフェース名や IP アドレスの細かな配置が求められる場合は、代替ツールの方が適していそう。

  • 今後の検討: ネットワーク構成図をコード化しつつ、自由なカスタマイズを求める場合は、Diagrams を使用するよりも別のツールを選択した方が良いと判断しました。