iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0

前言

昨天介紹了三個架構圖的繪圖工具,那麼今天我們會開始介紹 Diagram as Code 這個函式庫的內容


正文


安裝

  • 首先先從安裝開始
pip install diagrams

圖表

from diagrams import Diagram
from diagrams.aws.compute import EC2

with Diagram("Simple Diagram"):
    EC2("web")

https://ithelp.ithome.com.tw/upload/images/20240915/20168697pC9fNz9eXg.png

  • Diagram的第一個參數作為圖表的標題以及輸出的檔名
from diagrams import Diagram
from diagrams.aws.compute import EC2

with Diagram("Simple Diagram", filename="my_diagram"):
    EC2("web")
  • 若有指定輸出的檔名,則該第一個參數作為圖表標題,第二個參數作為執行後的檔案名稱
from diagrams import Diagram
from diagrams.aws.compute import EC2

with Diagram("Simple Diagram Multi Output", outformat=["jpg", "png", "dot"]):
    EC2("web")
  • 另外我們也可以進行輸出檔案格式的設定
from diagrams import Diagram
from diagrams.aws.compute import EC2

graph_attr = {
    "fontsize": "45",
    "bgcolor": "transparent"
}

with Diagram("Simple Diagram", show=False, graph_attr=graph_attr):
    EC2("web")

https://ithelp.ithome.com.tw/upload/images/20240915/20168697pYHAEbzaK8.png

  • 我們也能將預設展示的功能關閉,以及在另外設定這個圖表的屬性
  • 因為此函式庫是基於graphviz,可以從graphviz的文件上找到可以設定的屬性
    https://www.graphviz.org/doc/info/attrs.html

節點

資料流

可以透過使用下列Operator連接節點表示資料流

# >>:從左到右連接節點
# <<:從右到左連接節點
# -:無方向連接節點

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB
from diagrams.aws.storage import S3

with Diagram("Web Services", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb") >> S3("store")
    ELB("lb") >> EC2("web") >> RDS("userdb") << EC2("stat")
    (ELB("lb") >> EC2("web")) - EC2("web") >> RDS("userdb")

https://ithelp.ithome.com.tw/upload/images/20240915/201686979qNmIJG9MD.png

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

with Diagram("Grouped Workers", show=False, direction="TB"):
    ELB("lb") >> [EC2("worker1"),
                  EC2("worker2"),
                  EC2("worker3"),
                  EC2("worker4"),
                  EC2("worker5")] >> RDS("events")
  • 我們還能使用TB、BT、LR 和 RL 來改變方向,但雲端架構圖一般都是LR,所以這個設定不一定會使用到
  • 另外節點可以分組到list當中,在一次給予方向
    https://ithelp.ithome.com.tw/upload/images/20240915/20168697rKls2TJuTK.png

明天我們會介紹Clusters和Edges


上一篇
day15 繪製架構圖工具介紹:Plant UML、Diagram as Code 、Eraser
下一篇
day17 Diagram as Code API (二) : Cluster & Edge
系列文
智能雲端架構圖生成:結合LangChain&LangGrpah與Rag的創新應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言