3

三款好用的繪圖工具來解決系統架構或流程圖

 2 years ago
source link: https://blog.wu-boy.com/2022/09/three-tools-design-system-architecture-and-flow/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
drwaio 01

不管是長官還是同事甚至下屬,在公司無時無刻都需要跨團隊進行溝通,當系統架構或流程越來越複雜的時候,如果沒有按照當下情況記錄下來,對於未來接手的同事,或者是自己都會不小心忘記,而在記憶最清楚的當下用文字或流程圖記錄下來,對團隊及自己是有相當大的幫助。而有沒有工具可以快速畫出系統架構或流程圖?我們可以分幾種情境來討論。

第一種是程式碼架構流程圖,跟開發團隊一起開發功能時,開發者可以先將程式的流程圖先畫出來,跟團隊進行第一輪討論,避免實作下去時,考慮太少,多與團隊進行溝通,對自己是非常有幫助的。

第二種是專案剛開始,或發展到一定程度,需要將全部系統架構整理下來,團隊可能用了 AWSGCP 等服務,有一個全貌的系統架構圖,可以協助團隊釐清專案到底使用了哪些工具?讓剛加入的同事可以透過此架構圖快速了解並進入狀況。底下來介紹三套我個人蠻推薦的三種繪製工具。

PlantUML

PlantUML 是可以用純文本語言繪製圖表的開源軟體,由於是純文字語言,所以可以搭配版本控制做紀錄,非常適合團隊或跨團隊合作溝通,尤其是架構初期,會需要常常修改,所以用 PlantUML 非常適合,跟同事進行快速討論迭代修正。

強大的 PlantUML 有提供線上版本進行撰寫,叫做 PlantText,除了線上版本讓大家可以測試之外,開發者也可以透過 VSCode 的 PlantUML 套件進行整合,一邊撰寫流程,一邊預覽,如下圖

plantUML 01

拿一個實際案例來看看

@startuml Converter CLI
queue  "AWS SQS"  as queue order 20
actor "User" as user order 10
database "AWS S3" as s3_storage order 15
participant "API Server" as api_server order 50

box "Docker Container" #LightBlue
participant "Go Service" as go_cli order 30 #99FF99
participant "Python CLI" as python_cli order 40 #99FF99
database "Local Storage" as local_storage order 35
end box

autonumber
go_cli -> queue: Listen Notification Queue
user -> s3_storage: Upload Dataset
queue <- s3_storage: Send Notification
go_cli <- queue: Receive Notification
go_cli -> local_storage: Create /tmp folder
go_cli <- s3_storage: Download Origin Dataset
go_cli -> local_storage: Save Dataset to /tmp folder
go_cli -> python_cli: Execute CLI command
python_cli -[#0000FF]> local_storage: Save Progress Number to /tmp folder
go_cli -> api_server: Upload Convert Progress
python_cli -[#0000FF]> local_storage: Save output.zip and dataset.yml to /tmp
go_cli -> api_server: Upload dataset type and class number
go_cli -> s3_storage: Upload output.zip to S3
go_cli -> api_server: Upload Status to Success
go_cli -> queue: Remove Notification
@enduml

產生的圖如下,或線上編輯測試看看

plantUML 02

從上圖就可以知道透過 CLI 工具上傳 Dataset 到 AWS S3 會經過哪些步驟跟流程。假設沒有先把流程圖畫出來,其實很難想像跨團隊要怎麼合作。

Diagrams

上面的 PlantUML 協助團隊釐清開發流程圖,假設您需要更多工具或圖形介面來描述整體的系統架構圖,也或者是需要對上對下報告有一個更完整的全貌,推薦大家使用 Diagrams,裡面有完整的圖庫跟功能,也支援離線桌面版線上修改。可以把檔案放在 GitHub 內由線上版讀取。來看看底下可以教學影片體驗 Diagrams 的強大

繪製完成後,可以輸出任何檔案格式。底下看看一張系統架構圖

Diagrams 01

Excalidraw

除了上述兩套工具外,如果你想要快速畫出一個流程圖,又不想裝一大堆工具,強烈推薦 Excalidraw 這套線上流程圖軟體,它也是開源軟體。底下看看實際案例,我放在 redisdb-stream 專案內的架構圖。

Excalidraw 01

上面有三套好用的畫圖工具,我個人使用的時機不盡相同,如果是簡易的流程圖,我都直接用 Excalidraw 快速搞定,不想花太多時間進行繪製,尤其是時間很趕的時候。跨團隊或內部開發溝通時,我就會用 PlantUML,將開發流程描述清楚,避免在合作上面出現哪些差錯,讓其他開發同仁產生誤會。到專案中期或後期,整體架構比較確定後,我會在用 Diagrams 繪製系統流程,讓團隊或長官可以更加了解專案的全貌。



About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK