「Diagrams」 を使うと、システムのアーキテクチャ図をPythonのコードで作成できる。 各クラウドサービスはもちろんのこと、OSSで使われているソフトウェアのアイコンまで用意されており、もう自分で画像探しの旅に出る必要がない。 プレゼンテーションツールでサイズや位置を微調整で苦労していた人は「Diagrams」に乗り換えて、スクリプトで一発作成できるのメリットを体感してみよう!
「Diagrams」「Nodes」「Clusters」
Diagramsは大きく分けて「Diagrams」「Nodes」「Clusters」の3つで構成されている。
「Diagrams」
ライブラリの名前にもなっている「Diagrams」は、後に登場する「Nodes」「Clusters」をまとめる一番外側の枠組みとなる。「Diagrams」に設定した名前が出力される画像の名前にもなる。
他にもいくつかのパラメータを設定することで柔軟に画像を出力することができる。
- direction
- データフローの方向
- デフォルトは左から右
- 上から下に流れを変更したい場合はTBと入れる
- outformat
- 出力ファイルの形式
- デフォルトはpng
- show
- コマンド実行後に保存されたファイルを開くかどうか
- デフォルトはTrue
- システムのデフォルトアプリケーションで開かれるためWSLを使っている場合はFalseを使ったほうがいい
「Nodes」
「Nodes」はアプリケーション1つつを表すオブジェクトになり、EC2であったりBLOBのアイコンを表す。ノードごとのひも付きは、ソースコード上で「>>」「<<」と表す。
「Clusters」
「Clusters」はノードをグループ化することができる。Webサーバとして3台EC2を立てているときなどまとめて表現することができる。「Diagrams」と同じくdirectionがあるので処理の方向性の調整ができる。
Diagramsでラムダアーキテクチャを表現してみる
公式ページにいくつかサンプルとして載っているので、こちらを参考にしながらOSSを利用し簡単なラムダアーキテクチャを描いてみた。これだけで図を表現でき、またバージョン管理をおこなえることも考えると大規模な案件のときはメリットが大きいと思う。
from diagrams import Diagram from diagrams import Cluster from diagrams.onprem.logging import Fluentd from diagrams.onprem.analytics import Hadoop from diagrams.onprem.analytics import Spark from diagrams.onprem.analytics import Storm from diagrams.onprem.queue import Kafka from diagrams.onprem.client import Client from diagrams.onprem.client import Users with Diagram("lambda architecture", show=False): client = Client("Data") with Cluster("Batch"): hadoop = Hadoop("Hadoop") spark = Spark("Spark") with Cluster("Speed"): storm = Storm("Storm") kafka = Kafka("Kafka") users = Users("Users") client >> hadoop >> spark >> users client >> storm >> kafka >> users
参考文献
tadaさんに「Diagrams」を教えていただいたのだが、tadaさんも「Diagrams」の記事を書いてくださっていた。インストールの方法から多くの例題が載っているので、作成する際はこちらも参考にしていただけたら。