Go-Diagrams - Goを使ってネットワーク図を描く
システム用の図を書く場面はよくあります。特にプロジェクトでのネットワーク図であったり、アーキテクチャをまとめたりするのによく書くことでしょう。ドロー用のソフトウェアを使ってビジュアルで描くこともできますが、メンテナンスが面倒だったり、専用のソフトウェアをインストールしないといけません。 そこで使ってみたいのがGo-Diagramsです。Goのコードを使ってシステム用の図を描きます。
Go-Diagramsの使い方
コード例です。
d, err := diagram.New(diagram.Filename("app"), diagram.Label("App"), diagram.Direction("LR"))
if err != nil {
log.Fatal(err)
}
dns := gcp.Network.Dns(diagram.NodeLabel("DNS"))
lb := gcp.Network.LoadBalancing(diagram.NodeLabel("NLB"))
cache := gcp.Database.Memorystore(diagram.NodeLabel("Cache"))
db := gcp.Database.Sql(diagram.NodeLabel("Database"))
dc := diagram.NewGroup("GCP")
dc.NewGroup("services").
Label("Service Layer").
Add(
gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 1")),
gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 2")),
gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 3")),
).
ConnectAllFrom(lb.ID(), diagram.Forward()).
ConnectAllTo(cache.ID(), diagram.Forward())
dc.NewGroup("data").Label("Data Layer").Add(cache, db).Connect(cache, db)
d.Connect(dns, lb, diagram.Forward()).Group(dc)
if err := d.Render(); err != nil {
log.Fatal(err)
}
生成された画像です。
Dockerやデータベースも対応しています。
Go-Diagramsが面白いのはコードで描くということでしょう。図を細かく場所を決めて描くのは大変ですが、コードであれば仕様に沿って書くだけで、後の表示はGo-Diagramsが良い感じに仕上げてくれます。
Go-DiagramsはGo製のオープンソース・ソフトウェア(MIT License)です。
blushft/go-diagrams: Create beautiful system diagrams with Go