宣告:
本文轉自 DEV Community 網站,文章翻譯由開發者社群提供;
點選下方連結,檢視英文原文:
在您參加過的會議中,是否曾有人解釋軟體系統是如何執行的?
我曾經和一個入行不久的解決方案架構師交流過,他試圖向我描述他們設計出來的系統:包括大約八個不同的元件,彼此之間以不同的方式相互通訊。
在描述這個解決方案的過程中,他們不停地使用手勢,以及大量的“這個部件通過......與那個部件進行通訊”句式。
他們說的每一個單詞我都知道,但連起來之後我就搞不懂了。
在解釋複雜的概念架構時,語言就會失去意義。我正在遵循著一個思路搭建一個心理模型。我需要一個視覺展現形式。
我需要一個圖表
但不是普通的圖表。架構圖並不是一個萬能的解決方案。
我們最近探討過,作為一名解決方案架構師,重要的一點是有效地將你的想法傳達給技術和非技術受眾。
你的圖表必須考慮到這一點。如果你想把想法傳遞給不同的人,你必須製作不同版本的圖表。
我們在這裡要討論的是,應該根據 5 種不同的受眾,製作5種不同型別的圖表。
我們將以真實的 API,Gopher Holes Unlimited為例,在系統中新增一個新的查詢 gopher。
流程圖
流程圖是最通用、影響最廣泛的圖表。它是一箇中高階的圖表,包含工作流程的所有部分。
這張圖展示了一個業務流程中的活動部分。
受眾
流程圖的受眾一般是技術型的。它可以用來向架構委員會闡述構想,也可以向開發人員描述某個業務流程是如何執行的。
注意事項
架構流程圖主要由各個活動部分組成。在我們的無伺服器 AWS 環境中,我們給每個託管的服務,以及哪些服務之間可以相互通訊貼上標籤。
我們沒有詳細描述各部分之間如何相互作用,但展示了連線情況,即顯示出資料如何在系統中流動。
服務圖
服務圖從較高層級上展示了連線性。它不包含工作流或服務如何執行等細節,而是展示發揮作用的關鍵部分。下圖展示了應用程式中使用的內部和外部服務。
受眾
IT 和網路工程師往往對這種型別的圖表最感興趣。他們關心如何與外部服務進行連線,另外,他們還想知道是否需要對任何內部連線進行監控。
我經常使用服務圖向高管闡述系統的工作原理。他們想知道主要應用程式之間是如何連線的,沒有什麼比服務圖更適合呈現這些連線了。
注意事項
搭建一個架構服務圖時,最好列出所有組成應用程式或生態系統的微服務。標明哪些服務之間是相互通訊的,並確保對內部服務和外部服務做出區分。
在這類高層級圖表中,無需詳細說明各個服務是如何運作的。所有使應用程式執行的服務都是如此。
角色圖
表明您的架構能夠解決業務問題,這一點非常重要。角色圖展示了一個按時間順序排列的檢視,以及特定工作流中的不同角色。它是證明您在制定解決方案時將業務考量在內的最佳工具。
受眾
該類圖表的目標受眾包括以業務為導向的個人和產品所有者。他們關注角色,以及如何與系統進行互動。這樣一個展示“誰,在何時,做了什麼”的圖表,能夠向受眾完美地描述您的系統。
注意事項
角色圖有點類似於 BPMN 模型,利用泳道來展示工作流中的不同角色。這類圖表往往是低層級的,因為它包含更多的細節。要標明角色、工作流以及業務流程如何從一個步驟轉到另一個步驟。
角色圖也可以幫助剛涉足某個領域的開發者,為他們即將開發的東西提供豐富的背景資訊。
基礎設施圖
基礎設施圖是一個“所見即所得”的模型。它代表所有已經實現的東西。它在本質上是一個低層級的圖表,包括服務/應用/生態系統中存在的一切。
基礎設施圖旨在展示已經建立的東西和系統當前的工作方式。可以把看做您構建的應用程式的藍圖。
受眾
基礎設施圖具有不同的受眾。它可以用於向開發者展示在特定的微服務中需要處理的問題。也可以用於向客戶展示您公司用於完成一項任務的全部資源。
技術人員是基礎設施圖的主要使用者。由於您提供的是一個清單,而不是展示想法或業務流程,所以此類圖的預期使用範圍只限於資訊。它是為那些喜歡“細枝末節”的人準備的。
注意事項
製作架構基礎設施圖時,不要遺漏任何部分。此類圖表的目標是展示應用程式中的所有內容,以及它們是如何連線的。您無需深入瞭解所有的細節,而是要確保將應用程式中的所有部分都包含在圖中。
開發者圖
在需要深入瞭解情況時,開發者圖是最佳選擇。它包含了開發者在構建解決方案時需要的一切。目標是解答任何在檢視流程圖時可能出現的問題,並將其納入設計中。這是最低層級的圖表,旨在在您不在場的情況下傳達您的想法。
應該有人能夠讀懂這張圖,並清楚地知道該怎麼做。
受眾
此類圖的受眾是實施解決方案的開發者。對於團隊以外的人員來說,圖表包含的細節程度是不必要的。有時候,對於不需要太多細節的受眾來說,過多的細節可能是一件壞事。
向開發團隊以外的人員提供實施細節很好地說明了細節太多並不是一件好事。它會導致注意力的分散,並掩蓋您想要傳達的其他資訊。
注意事項
開發者圖本質上是新增了細節的流程圖。標記出您能想到的任何一個具體的實施細節,還要標記出重要的過渡。
此類圖表並不能取代使用者故事,但它確實有助於強化使用者故事,提高整個開發團隊的理解水平。在可以使用開發者圖的時候使用,因為在實施結束以後,您就擁有了一個可以在未來參考的工具。
總結
架構圖有很多型別。每一種都有一個特殊的目的,為不同的受眾服務。作為一名解決方案架構師,您必須能夠在提出想法的同時,向正確的受眾提供正確型別的圖表。
在很多情況下,一個版本的圖表是不夠的。當我開始進行新的設計時,我總是從流程圖入手。我會把我所有的想法寫下來,然後獲取其他解決方案架構師的認同。一旦我們就解決方案達成一致,我就會把它變成角色圖,然後拿給業務人員看。
當我獲得業務部門的同意後,我就可以製作開發者圖和服務圖。服務圖是針對高管的,以便確保他們對我們正在做的事情有一個較高層次的瞭解。開發者圖是針對那些將要實施解決方案的工程師的。
一旦構建起解決方案,我們就可以更新基礎設施圖,將新的工作涵蓋進來。
一張圖片抵過一千個詞彙,但架構圖可能勝過五千個。能夠讓人們輕鬆、快速地理解您的想法,是成為一名優秀的解決方案架構師的關鍵。
能夠為不同的受眾建立不同型別的圖表,您就為成功做好了準備。
P.S. - 我習慣使用 draw.io 來構建圖表。這是一個免費的工具,它提供了製作美觀詳盡的圖表、模型和圖示所需要的一切資源。
文章作者: Allen Helton
Allen Helton for AWS Community Builders