์ƒ์„ธ ์ปจํ…์ธ 

๋ณธ๋ฌธ ์ œ๋ชฉ

[UML] ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ (with Mermaid)

๐Ÿ˜Ž ์ง€์‹ in Action/Git, Jira ๐Ÿ› ๏ธ

by :ํ•ดํ”ผ๋ž˜๋น—๐Ÿพ 2025. 7. 26. 19:56

๋ณธ๋ฌธ

์™œ ํ•„์š”ํ•œ๊ฐ€ 

์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์„ ํ†ตํ•ด ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์ด ์‹œ๊ฐ„๊ณผ ์—ฐ๊ณ„๋˜์–ด ์ƒํ˜ธ์ž‘์šฉ๋˜๋Š” ๊ฒƒ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ ์˜ˆ์™ธ ์ƒํ™ฉ๊ณผ ๋ถ„๊ธฐ ๋กœ์ง ๋ช…ํ™•ํ™”, ๋™์‹œ์„ฑ ๋ฐ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ตฌ๊ฐ„ ์‹๋ณ„์„ ์œ„ํ•ด ํ•„์š”ํ•˜๋‹ค.

 

์ด ๋‹ค์ด์–ด๊ทธ๋žจ์ด ๋‹ค๋ฅธ ํŒ€ ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋„๊ตฌ๋กœ์„œ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฐœ๋ฐœํŒ€๊ณผ ๊ธฐํšํŒ€ ์‚ฌ์ด์—์„œ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„๋˜๋Š”์ง€์— ๋Œ€ํ•œ ์‹œ๊ฐํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœํŒ€๊ณผ ์šด์˜ํŒ€ ์‚ฌ์ด์—์„œ๋Š” ์‹œ์Šคํ…œ ๊ตฌ์กฐ์™€ ๋กœ๊ทธ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ๋น ๋ฅด๊ฒŒ ๋ชจ๋‹ˆํ„ฐ๋ง ํฌ์ธํŠธ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ฌผ๋ก  ๊ฐœ๋ฐœํŒ€ ๋‚ด๋ถ€์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ๋ชจ๋‘ ์ฝ๊ณ  ๋””๋ฒ„๊น…์„ ํ†ตํ•ด ๋กœ์ง์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ด์•ผ๋งŒ ํ•˜์ง€๋งŒ ์ถ”์ƒํ™”๋œ ๋„์‹๋„๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์žฅ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋˜ํ•œ, ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ–ˆ์„ ๋•Œ ๋กœ์ง์„ ์ „๊ณผ ํ›„๋ฅผ ํ•œ ๋ˆˆ์— ๋น„๊ตํ•จ์œผ๋กœ์„œ ์„ ๋ก€๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. 

 ์•ˆ ๊ทธ๋ ค๋†“์œผ๋ฉด ๊ฐœ๋ฐœ ์ค‘์— ํ—ท๊ฐˆ๋ฆฌ๊ฑฐ๋‚˜ 1๋…„ ํ›„์˜ ๋‚ด๊ฐ€ ํ—ท๊ฐˆ๋ คํ•˜๋˜๋ฐ;; 

 

์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ ์‚ฌ์šฉํ•˜๋Š” UML ํ‘œ์ค€ ๋ฌธ๋ฒ• ์ •๋ฆฌ 

- UML ํ‘œ์ค€ ๋ฌธ๋ฒ•์€ Object Management Group(OMG)์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. 

๋งํฌ : https://www.omg.org/spec/UML (17.8 Sequence Diagrams)

 

About the Unified Modeling Language Specification Version 2.5.1

UML® Unified Modeling Language A specification defining a graphical language for visualizing, specifying, constructing, and documenting the artifacts of distributed object systems. Title: Unified Modeling Language Acronym: UML® Version: 2.5.1 Document St

www.omg.org

 

์ ์„  / ์‹ค์„  ๊ทธ๋ฆฌ๊ณ  ์ฑ„์›Œ์ง„ ํ™”์‚ดํ‘œ / ์—ด๋ฆฐ ํ™”์‚ดํ‘œ ์ฐจ์ด์ ์„ ํ™•์ธํ•ด๋ณด์ž

———โ–ถ
(์‹ค์„  + ์ฑ„์›Œ์ง„ ํ™”์‚ดํ‘œ)
๋™๊ธฐ ํ˜ธ์ถœ ๋ฉ”์‹œ์ง€ (Sync Call) ํ˜ธ์ถœ์ž๊ฐ€ ์‘๋‹ต์„ ๋ฐ›์„ ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ  REST API ํ˜ธ์ถœ, DB์ฟผ๋ฆฌ, ์ผ๋ฐ˜์ ์ธ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
———โ–ท
(์‹ค์„  + ์—ด๋ฆฐ ํ™”์‚ดํ‘œ)
๋น„๋™๊ธฐ ํ˜ธ์ถœ ๋ฉ”์‹œ์ง€ (Async Call) ํ˜ธ์ถœ์ž๊ฐ€ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ฆ‰์‹œ ๋‹ค์Œ ์ž‘์—… ์ˆ˜ํ–‰ ์ด๋ฒคํŠธ ๋ฐœํ–‰, ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ž‘์—… ์‹œ์ž‘, ์•Œ๋ฆผ ์ „์†ก
โ— - - -
(์ ์„  + ์—ด๋ฆฐ ํ™”์‚ดํ‘œ)
์‘๋‹ต ๋ฉ”์‹œ์ง€ (Reply Message) ๋™๊ธฐ ํ˜ธ์ถœ์— ๋Œ€ํ•œ ๋ฐ˜ํ™˜๊ฐ’์ด๋‚˜ ์™„๋ฃŒ ์‹ ํ˜ธ API์‘๋‹ต ๋ฐ์ดํ„ฐ, ๋ฉ”์„œ๋“œ ๋ฆฌํ„ด๊ฐ’, ์ฒ˜๋ฆฌ ์™„๋ฃŒ ํ™•์ธ
——lost—โ—
๋ถ„์‹ค ๋ฉ”์‹œ์ง€ (LostMessage) ๋ชฉ์ ์ง€๊ฐ€ ๋‹ค์ด์–ด๊ทธ๋žจ ๋ฐ–์— ์žˆ๋Š” ๋ฉ”์‹œ์ง€  ์™ธ๋ถ€ ์‹œ์Šคํ…œ์œผ๋กœ ๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€, ๋„คํŠธ์›Œํฌ ๋ฐ–์œผ๋กœ ๋‚˜๊ฐ€๋Š” ๋ฉ”์‹œ์ง€
โ——found—โ–ถ FoundMessage ๋ฐœ์‹ ์ž๋Š” ์•Œ ์ˆ˜ ์—†์ง€๋งŒ ์ˆ˜์‹ ์ž๋Š” ์•Œ๋ ค์ง„ ๋ฉ”์‹œ์ง€ ์™ธ๋ถ€์—์„œ ๋“ค์–ด์˜ค๋Š” ์ด๋ฒคํŠธ, ์‚ฌ์šฉ์ž ์ž…๋ ฅ, ์™ธ๋ถ€ ์‹œ์Šคํ…œ ์ฝœ๋ฐฑ
 
 
 
 
 

 

Frame opt (์กฐ๊ฑด์ด ์ฐธ์ผ ๋•Œ๋งŒ ์‹คํ–‰๋˜๋Š” ์„ ํƒ์  ํ๋ฆ„)
opt [์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ๋จ]
       ์‚ฌ์šฉ์ž -> ์‹œ์Šคํ…œ : ๋Œ€์‹œ๋ณด๋“œ ํ‘œ์‹œ 

loop (ํŠน์ • ์กฐ๊ฑด์ด ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต ์‹คํ–‰๋˜๋Š” ํ๋ฆ„)
loop [์•„์ดํ…œ์ด ๋‚จ์•„์žˆ๋Š” ๋™์•ˆ]
    ์‹œ์Šคํ…œ → ๊ฒฐ์ œ ๋ชจ๋“ˆ : ์•„์ดํ…œ ๊ฒฐ์ œ ์ฒ˜๋ฆฌ

alt (์กฐ๊ฑด ๋ถ„๊ธฐ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๋Œ€์•ˆ ํ๋ฆ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ)
alt [๋กœ๊ทธ์ธ์„ฑ๊ณต]
    ์‚ฌ์šฉ์ž -> ์‹œ์Šคํ…œ : ๋Œ€์‹œ๋ณด๋“œ ํ‘œ์‹œ
----
else [๋กœ๊ทธ์ธ ์‹คํŒจ]
     ์‹œ์Šคํ…œ -> ์‚ฌ์šฉ์ž : ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ 

par (์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ๋ฆ„์ด ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ตฌ๊ฐ„)
par
--------------------
[ํ๋ฆ„ A]
๊ฐ์ฒด1 -> ๊ฐ์ฒด2 : ๋ฉ”์‹œ์ง€ A
--------------------
[ํ๋ฆ„ B]
๊ฐ์ฒด1 -> ๊ฐ์ฒด3 : ๋ฉ”์‹œ์ง€ B

 

 

์ถ”์ฒœ ํˆด 

์˜ˆ์ „์—๋Š” draw.io ๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, ๋“œ๋ž˜๊ทธ์•ค ๋“œ๋ž์œผ๋กœ ํ•˜๋‚˜์”ฉ ์œ„์น˜์— ๋†“์•„์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค. 

Mermaid๋Š” ์ฝ”๋“œ๋กœ UML์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜์„œ ์ข‹๋‹ค

 

https://mermaid.js.org/

 

Mermaid

Create diagrams and visualizations using text and code.

mermaid.js.org

 

728x90

๊ด€๋ จ๊ธ€ ๋”๋ณด๊ธฐ