python 3はdiagramsを使用してアーキテクチャ図のステップを描く。


技術的背景
アーキテクチャ図を描くのは、アーキテクチャーまたはソフトウェアエンジニアのいずれにとっても学習に値するスキルです。これは私達が勉強している時に整理したXmindのような思惟の論理図のように、コンポーネント間の連絡と階層を見るだけでなく、コンポーネントの全体像を示すことができます。VisioやEdrawなどの専門的な製図ツールでアーキテクチャ図を描くこともできますが、エンジニアにとってはコードで直接アーキテクチャ図を描くほうが、より優雅に見えます。ここで紹介したdiagramsは、アーキテクチャ図を描くために使用できるpythonパケットです。
ディagramsのインストール
他のpythonライブラリと同じで、diagramsもpipによってインストールと管理を行うことができます。ここではより速くインストールするために、テンセントのミラーソースを使って加速します。

[dechin@dechin-manjaro diagrams]$ python3 -m pip install diagrams -i https://mirrors.cloud.tencent.com/pypi/simple 
Looking in indexes: https://mirrors.cloud.tencent.com/pypi/simple
Collecting diagrams
  Downloading https://mirrors.cloud.tencent.com/pypi/packages/d6/4e/d4725222ac080375954d63d3c90243fdaa219fe085327d42b9dc68c71293/diagrams-0.19.1-py3-none-any.whl (19.2 MB)
     || 19.2 MB 6.7 MB/s 
Requirement already satisfied: graphviz<0.17.0,>=0.13.2 in /home/dechin/anaconda3/lib/python3.8/site-packages (from diagrams) (0.16)
Requirement already satisfied: jinja2<3.0,>=2.10 in /home/dechin/anaconda3/lib/python3.8/site-packages (from diagrams) (2.11.2)
Requirement already satisfied: MarkupSafe>=0.23 in /home/dechin/anaconda3/lib/python3.8/site-packages (from jinja2<3.0,>=2.10->diagrams) (1.1.1)
Installing collected packages: diagrams
Successfully installed diagrams-0.19.1
基礎論理関係図
まず私達はdiagramsを使って最も簡単な論理関係図を描き、負荷バランスからサーバノードまで、さらに具体的なデータベースに行く。

# example1.py

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") #     
この事例では、AWSが提供するいくつかのインフラストラクチャコンポーネントのラベルを使用し、各コンポーネントモジュールの名前を指定することができる。上記のコードは直接実行可能である:python3 example1.py、そして現在のディレクトリの下でこのようなアーキテクチャ図を生成する。

全体の感じはやはり比較的に精巧で、もし専門のツールを使ってVisioなどの絵を描くならば、私達は直接にピクチャーに対して切断することができて、操作は更に便利になります。
コンポーネントクラスタの定義
公式文書の例からも同様に、単一のコンポーネントを定義するだけでなく、概念の中で一つのモジュールを構成することができる複数のコンポーネントを結合クラスタを構成し、アーキテクチャ図で示すことができる。

# example2.py

from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service Cluster", show=False):
    with Cluster("DB Cluster"):
        db_master = RDS("master")
        db_master - [RDS("slave1"), RDS("slave2")] #     
    ELB("lb") >> EC2("web") >> db_master
このような画像ファイルは、python3 example2.pyを介して実行されても同様に現在のディレクトリの下で生成される。

先ほど定義されたいくつかのデータベースコンポーネントが一つのデータベースの結合クラスタに統一的に収納されているのを見ることができます。
概要をまとめる
本論文ではpythonライブラリdiagramsを通じて、基本的なアーキテクチャ図の描画方法を示し、ライブラリでは、一般的に使用されるAWSとk 8 Sなどの場面で使用されるコンポーネントラベルを提供しており、pythonコードを使っても精巧で明瞭なアーキテクチャ図を描くことができる。ここではコンポーネント間の接続と結合関係も簡単な記号で実現できます。これはpythonに特有の魔法関数のおかげです。
以上がpython 3を使用してdiagramsを使用してアーキテクチャ図を生成するステップの詳細です。pythonについてはdiagramsでアーキテクチャ図を生成する資料がもっと多いので、他の関連記事に注目してください。