如何在 PlantUML 中為任何設置建立部署圖

想要一個簡單的方式來展示系統架構嗎?學習如何使用 PlantUML 建立部署圖,包含清晰的語法、範例和實用技巧。

EdrawMax
EdrawMax Apr 30, 26
分享:
banner-product
在本文中
  1. 基本語法(100% 有效且已測試)
  2. 進階技巧
  3. 樣式與主題
  4. 實際應用範例
  5. 常見錯誤與修正
  6. 何時考慮替代方案
  7. 總結您的部署圖之旅

基本語法(100% 有效且已測試)

每個部署圖都有一些主要組成元件。節點用於說明實體機器或位置。製品表示正在部署的項目。群組用於連接相關部分以獲得更清晰的圖像。讓我們看看 PlantUML 部署圖語法和連接如何利用這些元素。

節點與製品

node "Web Server" as web { artifact "Spring Boot App" as app } node "Database Server" as db { database "MySQL" }

節點描繪元件運作的位置。製品指定安裝在這些節點中的內容。在這種情況下,網頁伺服器是 Spring Boot 應用程式的主機,而資料庫伺服器則是 MySQL 的位置。節點和製品有助於清晰簡潔地對應結構。

nodes and artifacts

連接(通訊路徑)

web -- db : JDBC

連接描述兩個元件之間的關係性質。在 web -- db: JDBC 範例中,網頁伺服器使用 JDBC 與資料庫通訊。這樣的線條不僅指示位置,還指示圖表中互動的性質。清晰描繪資料移動使人們更容易視覺化系統。

群組(邏輯分組)

cloud "AWS" { node "EC2 Instance" as ec2 node "RDS" as rds }

群組對於在單一標籤下分類相關節點非常有用。使用 cloud "AWS" {},您還可以將相同性質的元件分組,例如 EC2 和 RDS。這不僅節省大量空間,還使其易於理解。邏輯分組有助於雲端服務或更大的系統設定。

logical groups

進階技巧

基本元素很有幫助,但某些系統需要更多細節。而這些進階功能正是您所需要的。使用佈局控制和介面對應,您可以說明系統的行為。這些工具在使用 PlantUML 開發更全面的 UML 部署圖時非常有用。現在讓我們討論這些技巧!

構造型與圖示

node "Load Balancer" <> { artifact "NGINX" }

構造型透過顯示每個節點代表什麼,使您的圖表更容易理解。例如,使用 <> 搭配節點標記其職責。您還可以使用 <>, <>,或 <> 等類型。這些標籤無需額外文字即可增添意義,將它們與圖示配對有助於解釋系統的每個部分。

stereotypes

埠與介面

node "Client" as client { [Mobile App] as mobile } node "API Gateway" as api { interface "REST" as rest } mobile -- rest : HTTPS

埠和介面允許您在系統中設定特定的進出點。在這裡,行動應用程式透過 HTTPS 連接到 REST 介面。此配置顯示資料如何到達 API Gateway。埠提供了一種顯示實際技術邊界的方法,而不是使用沒有脈絡的箭頭。

port interfaces

動態佈局

left to right direction web --> db

當部分重疊或指向錯誤方向時,圖表變得難以理解。透過使用從左到右的方向,您可以管理元素的顯示方式,而無需移動任何內容。web --> db 這條線保持流程易於遵循。這些佈局規則可以幫助您在處理許多節點或更複雜的系統時建立更整潔的圖表。

樣式與主題

設定結構後,您可以增加樣式以使圖表更易於理解。調整顏色、形狀或增加自訂圖示可以將注意力集中在重要部分。本 PlantUML 部署圖教學將說明如何套用基本視覺增強。清晰的樣式有助於人們在不改變其設計的情況下理解您的圖表。

顏色與形狀

skinparam nodeBackgroundColor #E3F2FD skinparam nodeBorderColor #2196F3 !theme carbon-gray

您可以調整視覺效果以使圖表更具吸引力。使用 skinparam 調整背景和邊框色調。例如,將背景設定為 #E3F2FD,邊框設定為 #2196F3。套用諸如 carbon-gray 等主題也可以改變整體設計。

自訂圖示

node "K8s Cluster" <> #FFECB3

自訂圖示幫助人們有意義地識別系統的各個部分。增加類似 <> 的內容可立即為 Kubernetes 叢集提供脈絡。您甚至可以使用諸如 #FFECB3 等色碼使某些節點突出。這些細節不僅提高圖表的準確性,還使其一目了然更容易理解。

custom icons

實際應用範例

弄清楚結構是一回事。觀察它運作則是另一回事。讓我們查看一個實際的 PlantUML 部署圖,以了解所有這些部分如何組合在一起。

AWS 上的微服務

@startuml cloud "AWS" { node "ECS Cluster" as ecs { artifact "User Service" as user artifact "Order Service" as order } node "RDS" as rds <> } node "Client" <> { [iOS App] as ios } ios -- user : API user --> rds : JPA order --> rds : JPA @enduml

應用程式向在 ECS 叢集中執行的使用者服務發送 API 呼叫。該叢集還處理訂單服務。兩個服務都依賴 JPA 與 RDS 資料庫協作。將這些元件放置在 cloud "AWS" 中說明了它們的託管環境。此結構代表在 AWS 等雲端提供商上常見的典型微服務設定。

aws services

具有邊緣和雲端處理的 IoT 裝置網路

@startumlcloud "Cloud" { node "Cloud Server" as cloud_server { artifact "AWS IoT Core" artifact "Analytics Service" }}node "Edge Gateway" as edge { artifact "Local Processor"}node "IoT Device 1" <> as device1node "IoT Device 2" <> as device2device1 --> edge : Sensor Datadevice2 --> edge : Sensor Dataedge --> cloud_server : MQTT@enduml

兩個 IoT 裝置將感測器資料傳輸到邊緣閘道器進行處理。然後,閘道器透過 MQTT 將資料中繼到雲端伺服器。在雲端中,AWS IoT Core 與分析工具一起運作。它幫助團隊規劃、檢視架構,並查看每個元件的位置和功能。

iot services

連接到 Firebase 的行動應用程式

@startumlnode "Client" <> { [Mobile App] as app}cloud "Firebase" { node "Firebase Auth" as auth node "Realtime Database" as db node "Cloud Functions" as functions}app --> auth : User Loginapp --> db : Read/Write Dataapp --> functions : Trigger Event@enduml

此行動應用程式使用三個主要的 Firebase 服務:Auth、Realtime Database 和 Cloud Functions。它將登入詳細資料傳送到 Firebase Auth。它在資料庫中存取和更新資料,並透過 Cloud Functions 啟動事件。此部署圖顯示應用程式如何與行動和雲端服務協作。這有助於其他人了解應用程式的設計。

mobile apps

常見錯誤與修正

即使語法簡單明瞭,製作圖表時仍可能發生錯誤。PlantUML 部署圖語法中的小錯誤可能會弄亂設計。讓我們探討典型問題和解決方法。

  • 錯誤:未定義的節點 → 始終使用 node 或 artifact 宣告。
  • 修正:使用 as 作為別名(例如,node "Server" as srv)。
  • 錯誤:重疊連接 → 使用 left-to-right direction。
  • 修正:為複雜路徑增加 -[hidden]->。
  • 錯誤:缺少構造型 → 使用 <> 以增加清晰度。
  • 修正:參考 PlantUML 構造型部分。

何時考慮替代方案

您已經學會如何在 PlantUML 中建立部署圖,但依賴程式碼並不適合每種情況。某些流程需要更快的編輯和更少的編碼工作。EdrawMax 可以在這些情況下提供幫助。當 PlantUML 感覺受限時,切換到更視覺化和適應性更強的工具可能值得。

PlantUML 的限制

以下是一些 PlantUML 的缺點:

  • 沒有編碼知識難以學習:不懂編碼的人可能難以理解或修正語法。
  • 佈局需要手動修正:自動佈局選項並不總是能安排好,所以使用者經常自己調整。
  • 樣式選項有限:使用者可以調整字型、形狀或圖示,但與 GUI 工具相比,自由度較少。
  • 編輯減慢工作速度:小的編輯意味著更新程式碼並重新渲染圖表,使流程變慢。

範例:

@startumlnode "Web Server" as webnode "Database Server" as dbnode "Cache Server" as cacheweb --> db : JDBCweb --> cache : Redis@enduml

手動修正:

@startumlleft to right directionnode "Web Server" as webnode "Database Server" as dbnode "Cache Server" as cacheweb --> db : JDBCweb --> cache : Redis@enduml

厭倦了手動編碼?這裡有更聰明的圖表製作方式

edrawmax online

修正對齊或語法錯誤可能會浪費大量時間,並使建立圖表變得比應有的更困難。PlantUML 為您提供一些控制,但即使是小錯誤也可能破壞整個結構。如果圖表的最終外觀對您很重要,使用視覺化建構工具可以節省您的精力。這就是 EdrawMax 脫穎而出的地方。

EdrawMax Online 允許您透過將形狀拖曳到畫布上來設計部署圖。您不必輸入任何內容或學習任何特殊語法。它提供現成的範本,讓您變更節點顏色,並使移動物件變得容易。與 PlantUML 相比,您不必處理程式碼或修正對齊問題。

為什麼您會喜歡它

  • 拖放選項:使用拖放工具透過在畫布上放置節點和連接器來建立部署圖。無需編寫程式碼。
  • 部署範本庫:從現成的 UML 部署圖範本開始。這些包括雲端架構、微服務或分層系統等選項。
  • 自訂設計選項:透過簡單點擊調整節點形狀、變更顏色、調整圖示或修改連接器。這有助於產生更清晰的視覺效果。
  • 跨格式快速匯出:一鍵將圖表儲存為 PNG、PDF、SVG、Word 或 PPT 格式。無需額外步驟。

「易用性,無需學習曲線,這就是吸引我使用 EdrawMax 的原因。在 EdrawMax 中,圖示和控制項在螢幕上邏輯上應該在的位置。在競爭對手的軟體中,我過去即使是基本的物件對齊也很困難,但在 EdrawMax 中,這個過程是內建功能。」

—— Baiano S.,QA 專家

總結您的部署圖之旅

設計系統架構不需要看起來像是只有開發人員才能處理的事情。使用正確的方法,任何人都可以簡單地對應節點和連接。那些喜歡使用程式碼並將圖表與其他專案檔案進行版本控制的人可以發現 PlantUML 是一個可靠的工具。

本指南透過清晰的範例說明瞭如何在 PlantUML 中建立部署圖。此外,我們討論了經過驗證的語法和技巧。我們還介紹了避免典型錯誤和使圖表更準確的方法。

任何想要跳過編寫語法的人都可以將 EdrawMax Online 作為實用選擇。您可以使用此工具拖曳、放置、設定樣式和匯出。它不需要安裝或編碼知識。選擇適合您工作方式的工具,並找出哪一個能讓您以更少的精力獲得結果。立即查看!