--- id: P-REINFORCE-WIKI-8AE6A842 category: Unified confidence_score: 0.95 tags: ['choreography', 'broker-topology', 'event-driven-architecture', 'saga-pattern', 'mediator-topology', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Choreography]] ## ๐Ÿ“Œ Brief Summary Choreography(์•ˆ๋ฌด)๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ์กฐ์ •์ž(Central Coordinator)๋‚˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ์—†์ด, ์‹œ์Šคํ…œ์˜ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์ž์œจ์ ์œผ๋กœ ์„œ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [1, 2]. ์ฃผ๋กœ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(Event-Driven Architecture)์˜ ๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€(Broker Topology)์—์„œ ํ™œ์šฉ๋˜๋ฉฐ, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ์„œ๋น„์Šค ๊ฐ„์˜ ๋ฉ”์‹œ์ง€ ํ๋ฆ„์„ ์•ˆ์ •์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Saga ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค [2, 3]. ๊ฐ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐ˜์‘ํ•˜๋ฏ€๋กœ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๊ณ  ํ™•์žฅ์„ฑ๊ณผ ๋ฐ˜์‘์„ฑ์ด ๋งค์šฐ ๋›ฐ์–ด๋‚˜๋‹ค๋Š” ํŠน์ง•์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค [1, 2]. ## ๐Ÿ“– Core Content * **์ž์œจ์ ์ธ ์ด๋ฒคํŠธ ํ๋ฆ„ ์ œ์–ด**: Choreography ๋ฐฉ์‹์—์„œ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ํ†ต์ œํ•˜๋Š” ์ค‘์•™์˜ ์ด๋ฒคํŠธ ๋ฉ”๋””์—์ดํ„ฐ(Mediator)๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [1, 2]. ๋Œ€์‹ , ๊ตฌ์„ฑ ์š”์†Œ(์„œ๋น„์Šค)๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด์— ์ด๋ฒคํŠธ๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๋ฉด, ๋‹ค๋ฅธ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์ด๋ฅผ ์ž์œจ์ ์œผ๋กœ ๊ฐ์ง€ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ฌด์‹œํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค [1]. * **๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€(Broker Topology)์™€์˜ ๊ฒฐํ•ฉ**: ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์˜ ํ๋ฆ„ ์ œ์–ด ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ธ ๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€์˜ ๊ทผ๋ณธ์ ์ธ ๋™์ž‘ ์›๋ฆฌ๊ฐ€ ๋ฐ”๋กœ ์ด ์•ˆ๋ฌด(Choreography) ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [2]. ๋ณต์žกํ•œ ์ค‘์•™ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์—†์ด, ๋‹ค์ˆ˜์˜ ์„œ๋น„์Šค ๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐœํ–‰ ๋ฐ ๊ตฌ๋…ํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์™„์ˆ˜ํ•ฉ๋‹ˆ๋‹ค [1, 3]. * **๋†’์€ ๋น„๊ฒฐํ•ฉ์„ฑ(Decoupling) ๋ฐ ์‹œ์Šคํ…œ ํ™•์žฅ์„ฑ**: ์ค‘์•™ ํ†ต์ œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ „์ฒด ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์…˜์˜ ์ƒํƒœ๋ฅผ ๋‹จ๋…์œผ๋กœ ์†Œ์œ ํ•˜๊ฑฐ๋‚˜ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค [1]. ์ด๋กœ ์ธํ•ด ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ฒŒ(Highly decoupled) ์œ ์ง€๋˜๋ฉฐ, ๋…๋ฆฝ์ ์ธ ์ปดํฌ๋„ŒํŠธ์˜ ํ™•์žฅ์„ฑ, ์‹œ์Šคํ…œ์˜ ๋น ๋ฅธ ์‘๋‹ต์„ฑ, ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ณ„ ๋ชจ๋“ˆ์˜ ๋‚ด๊ฒฐํ•จ์„ฑ(Fault tolerance)์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค [1, 2]. * **Saga ํŒจํ„ด์„ ํ†ตํ•œ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ**: ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฑธ์ณ ์žˆ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์—์„œ ์ผ๊ด€๋œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด Choreography ๋ฐฉ์‹์€ Saga ํŒจํ„ด๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ(Choreographed Saga) ๋ถ„์‚ฐ ๋ช…๋ น๊ณผ ๋ฉ”์‹œ์ง€ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [3, 4]. ## โš–๏ธ Trade-offs & Caveats * **์—๋Ÿฌ ํŒŒ์•… ๋ฐ ๋ณต๊ตฌ์˜ ์–ด๋ ค์›€**: ์ค‘์•™์—์„œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ œ์–ดํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ „์ฒด์ ์ธ ํ”„๋กœ์„ธ์Šค ํ๋ฆ„์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฅผ ์ถ”์ ํ•˜๊ณ  ์ž๋™์œผ๋กœ ๋ณต๊ตฌํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค [2, 5]. * **๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์˜ ๋‚ด์žฌ์  ์œ„ํ—˜์„ฑ**: ์‹œ์Šคํ…œ์— ์‹คํŒจํ•œ ์ž‘์—…์„ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ์žฌ์‹คํ–‰(Replaying)ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์— ์œ„ํ—˜์ด ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [1]. ๋”ฐ๋ผ์„œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ˆ˜๋™ ๊ฐœ์ž…(Manual intervention) ์ „๋žต์„ ๋ฐ˜๋“œ์‹œ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1]. * **๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ(Data Inconsistency) ๋ฌธ์ œ**: ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ž์œจ ๋™์ž‘ํ•˜๋Š” ๊ตฌ์กฐ ํŠน์„ฑ์ƒ, ์ผ์‹œ์ ์œผ๋กœ ์‹œ์Šคํ…œ ๋‚ด ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ์›์ธ์ด ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค [1]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ํ† ํด๋กœ์ง€ ๋ฐ ํŒจํ„ด] - [[Broker Topology]] - ์—ฐ๊ฒฐ ์ด์œ : Choreography ๋ฐฉ์‹์ด ๊ทผ๊ฐ„์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜์˜ ํ•ต์‹ฌ ํ† ํด๋กœ์ง€์ž…๋‹ˆ๋‹ค [1, 2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ค‘์•™ ์กฐ์ •์ž ์—†์ด ์ด๋ฒคํŠธ ์ฑ„๋„(ํ ๋“ฑ)๊ณผ ํ”„๋กœ์„ธ์„œ๋งŒ์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…ํ•˜๋ฉฐ ๋™์ž‘ํ•˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ์  ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 6]. - [[Event-Driven Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : Choreography ๋ฐฉ์‹์ด ๊ตฌํ˜„๋˜๋Š” ์ƒ์œ„ ์•„ํ‚คํ…์ฒ˜ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ, ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์ด ์ƒํ˜ธ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค [7, 8]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ƒํƒœ ๋ณ€ํ™”(์ด๋ฒคํŠธ)์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ˜์‘ํ•˜๋ฉฐ ํ™•์žฅ์„ฑ์ด ๊ทน๋Œ€ํ™”๋˜๋Š” ์‹œ์Šคํ…œ ์ „์ฒด์˜ ํŒจ๋Ÿฌ๋‹ค์ž„๊ณผ ์„ค๊ณ„ ๋ฐฉ์‹์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [7, 9]. - [[Saga Pattern]] - ์—ฐ๊ฒฐ ์ด์œ : Choreography ๋ฐฉ์‹์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋ฉ”์‹œ์ง€ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ˜‘์—… ํŒจํ„ด์ž…๋‹ˆ๋‹ค [3, 10]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋กœ์ปฌ ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜์—ฌ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐฉ์‹(Eventual Consistency)์œผ๋กœ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ธฐ์ˆ ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 10]. #### [๋น„๊ต ๋ฐ ๋Œ€์กฐ ๊ฐœ๋…] - [[Mediator Topology]] (๋˜๋Š” Orchestration) - ์—ฐ๊ฒฐ ์ด์œ : Choreography์˜ ๋Œ€์ฒ™์ ์— ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ค‘์•™์˜ ์ด๋ฒคํŠธ ๋ฉ”๋””์—์ดํ„ฐ๊ฐ€ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Orchestration)ํ•˜์—ฌ ํ†ต์ œํ•ฉ๋‹ˆ๋‹ค [1, 2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ค‘์•™ ์ œ์–ด์˜ ๋ถ€์žฌ(Choreography)๊ฐ€ ์ฃผ๋Š” ์ด์ (ํ™•์žฅ์„ฑ)๊ณผ ์ค‘์•™ ์ œ์–ด์˜ ์กด์žฌ(Orchestration)๊ฐ€ ์ฃผ๋Š” ์ด์ (๊ฐ•๋ ฅํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ํŠธ๋žœ์žญ์…˜ ๋ณต๊ตฌ) ๊ฐ„์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋ฅผ ๋ช…ํ™•ํžˆ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 2]. ### Deeper Research Questions - Choreography ๋ฐฉ์‹์—์„œ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency)์„ ํšจ๊ณผ์ ์œผ๋กœ ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(Compensating Transaction)์€ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์ „์ฒด ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์šด Choreography์˜ ์น˜๋ช…์ ์ธ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด, ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ(Distributed Tracing) ๋ฐ ๊ด€์ธก์„ฑ(Observability) ๋„๊ตฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ์ค‘์•™ ์ง‘์ค‘ํ˜•์ธ Orchestration(Mediator Topology) ๋ฐฉ์‹๊ณผ ๋น„๊ตํ•˜์—ฌ Choreography ๋ฐฉ์‹์ด ๊ตฌ์กฐ์ ์œผ๋กœ ๋” ์ ํ•ฉํ•œ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ์ด๋‚˜ ์‹œ์Šคํ…œ ๊ทœ๋ชจ(ํŠธ๋ž˜ํ”ฝ, ์„œ๋น„์Šค ์ˆ˜ ๋“ฑ)๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ƒํƒœ๊ณ„ ๋‚ด์—์„œ Choreography ๊ธฐ๋ฐ˜์˜ ํ†ต์‹ ์„ ๊ตฌํ˜„ํ•  ๋•Œ, ์ด๋ฒคํŠธ ๋ฒ„์ „ ๊ด€๋ฆฌ(Event schema evolution)์™€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์€ ์–ด๋–ค ์ „๋žต์œผ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ์ค‘์•™ ์กฐ์ •์ž๊ฐ€ ์—†๋Š” ์ƒํƒœ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ์›Œํฌํ”Œ๋กœ์šฐ์˜ ์ง„ํ–‰ ์ƒํƒœ์™€ ์ด๋ฒคํŠธ ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋ก ์€ ๋ฌด์—‡์ธ๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋ฉ”์‹œ์ง• ๋ธŒ๋กœ์ปค(์˜ˆ: Kafka, RabbitMQ)๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ ๋ฐœํ–‰/๊ตฌ๋…(Publish-Subscribe)ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ, ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ๋‚ด๋ถ€ ๊ตฌํ˜„๊ณผ ์ฒ ์ €ํžˆ ๋ถ„๋ฆฌ๋˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. - **System Design:** ํŠธ๋ž˜ํ”ฝ ๋ณ€๋™์ด ์‹ฌํ•˜๊ณ  ๊ณ ๋„์˜ ํ™•์žฅ์„ฑ์ด ์ตœ์šฐ์„ ์œผ๋กœ ์š”๊ตฌ๋˜๋‚˜ ์ค‘์•™ ์กฐ์ •์ž๋กœ ์ธํ•œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ(Bottleneck)์ด ์šฐ๋ ค๋  ๋•Œ, ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ๊ธฐ๋ฐ˜์˜ Choreography ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค. - **Operation / Maintenance:** ๊ฐœ๋ณ„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์˜ค๋ฅ˜ ๊ฒฉ๋ฆฌ(Fault isolation)์—๋Š” ์œ ๋ฆฌํ•˜์ง€๋งŒ ๋น„์ฆˆ๋‹ˆ์Šค ํ๋ฆ„ ์ „์ฒด์˜ ์—๋Ÿฌ ํŒŒ์•…์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์ด๋ฒคํŠธ์— ์ƒ๊ด€๊ด€๊ณ„ ID(Correlation ID)๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋ถ„์‚ฐ๋œ ๊ตฌ์„ฑ ์š”์†Œ ์ „๋ฐ˜์˜ ํ๋ฆ„์„ ์ถ”์ (Trace)ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ”„๋ผ ์šด์˜์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. - **Learning Path:** ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(EDA)์˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๊ธฐ๋ณธ ๊ฐœ๋… ํ•™์Šต โ†’ ๋ธŒ๋กœ์ปค(Broker)์™€ ๋ฉ”๋””์—์ดํ„ฐ(Mediator) ํŒจํ„ด์˜ ์žฅ๋‹จ์  ๋น„๊ต โ†’ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ Saga ํŒจํ„ด์„ ํ†ตํ•œ Choreography ๊ตฌํ˜„ ๋ฐ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ํ•™์Šต์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค. - **My Project Relevance:** ํ˜„์žฌ ์ง„ํ–‰ํ•˜๋Š” ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋„์ž… ์‹œ, ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™”ํ•˜์—ฌ ์ž์œจ์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•  ๊ฒƒ์ธ์ง€(Choreography), ์—๋Ÿฌ ์ œ์–ด์™€ ์›Œํฌํ”Œ๋กœ์šฐ ๊ฐ€์‹œ์„ฑ์„ ์œ„ํ•ด ๋‹ค์†Œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ์ˆ˜ํ•  ๊ฒƒ์ธ์ง€(Mediator/Orchestration)๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ „๋žต์  ํŒ๋‹จ ๊ธฐ์ค€์ด ๋ฉ๋‹ˆ๋‹ค. ### Adjacent Topics - [[CQRS]] (Command Query Responsibility Segregation) - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜์—์„œ Choreography ๋ฐฉ์‹์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•˜์—ฌ ์กฐํšŒ์šฉ(Read-only) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(๋˜๋Š” ๋ณต์ œ๋ณธ)๋ฅผ ์ตœ์‹  ์ƒํƒœ๋กœ ๋™๊ธฐํ™”ํ•˜๋Š” ๋“ฑ, ๋น„๋™๊ธฐ ์‹œ์Šคํ…œ์˜ ์กฐํšŒ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋ฒ•์œผ๋กœ ์ดํ•ด๋ฅผ ๋„“ํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 10]. - [[Asynchronous Message Passing]] - ํ™•์žฅ ๋ฐฉํ–ฅ: Choreography ํŒจํ„ด์ด ์‹œ์Šคํ…œ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•ต์‹ฌ ํ†ต์‹  ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ๋™๊ธฐ์  ํ†ต์‹  ๋ฐฉ์‹๊ณผ์˜ ์ฐจ์ด์  ๋ฐ ๋ฉ”์‹œ์ง€ ํ ์‹œ์Šคํ…œ์˜ ํ™œ์šฉ ์›๋ฆฌ๋กœ ํ•™์Šต์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [11]. --- *Last updated: 2026-05-02*