--- id: P-REINFORCE-WIKI-9411F7D5 category: "10_Wiki/๐Ÿ’ก Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['event-driven-architecture', 'broker-topology', 'mediator-topology', 'eventual-consistency', 'complex-event-processing', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Event-Driven Architecture]] ## ๐Ÿ“Œ Brief ์†Œ๊ณ  Summary Event-Driven Architecture(EDA)๋Š” ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์ง์ ‘์ ์ธ ์š”์ฒญ์ด ์•„๋‹Œ ๋น„๋™๊ธฐ์ ์ธ ์ด๋ฒคํŠธ(์ƒํƒœ์˜ ์˜๋ฏธ ์žˆ๋Š” ๋ณ€ํ™”๋‚˜ ์ž‘์—…)์˜ ์ƒ์„ฑ, ๊ฐ์ง€ ๋ฐ ๋ฐ˜์‘์„ ํ†ตํ•ด ํ†ต์‹ ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด์ž…๋‹ˆ๋‹ค [1-3]. ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ์ด๋ฒคํŠธ ์ƒ์‚ฐ์ž, ์†Œ๋น„์ž, ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์ฑ„๋„๋กœ ๊ตฌ์„ฑ๋˜์–ด ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ทน๋„๋กœ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค [4-6]. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋†’์€ ํ™•์žฅ์„ฑ, ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ์‹ค์‹œ๊ฐ„ ์‘๋‹ต์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ IoT, ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ๋Œ€๊ทœ๋ชจ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์‹œ์Šคํ…œ ๋“ฑ์— ๋„๋ฆฌ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [4, 7, 8]. ## ๐Ÿ“– Core Content ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ์ฃผ๋กœ ๋‹ค์Œ์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์„ค๊ณ„ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. * **ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ (Core Components):** * **Event Producers (์ด๋ฒคํŠธ ์ƒ์‚ฐ์ž):** ์‚ฌ์šฉ์ž ํด๋ฆญ์ด๋‚˜ ์„ผ์„œ ๋ฐ์ดํ„ฐ ํฌ์ฐฉ ๋“ฑ ํŠน์ • ๋™์ž‘์ด๋‚˜ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค [4, 9]. * **Event Consumers (์ด๋ฒคํŠธ ์†Œ๋น„์ž/Sinks):** ๋ฐœ์ƒํ•œ ์ด๋ฒคํŠธ์— ๋ฐ˜์‘ํ•˜์—ฌ ํŠน์ • ์ž‘์—…์ด๋‚˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ƒ์‚ฐ์ž๋Š” ์†Œ๋น„์ž์˜ ์กด์žฌ๋‚˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค [4, 9]. * **Event Channels (์ด๋ฒคํŠธ ์ฑ„๋„):** ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ์‚ฌ์ด์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒฝ๋กœ๋กœ, ๋ณดํ†ต Kafka, RabbitMQ์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋‚˜ ํ๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค [4, 10]. * **Event Processors (์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ):** ์ด๋ฒคํŠธ๋ฅผ ์†Œ๋น„์ž์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ํ•„ํ„ฐ๋ง, ๋ณ€ํ™˜ ๋˜๋Š” ๋ผ์šฐํŒ…ํ•˜๋Š” ์ค‘๊ฐ„ ๊ตฌ์„ฑ ์š”์†Œ์ž…๋‹ˆ๋‹ค [4]. * **์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์Šคํƒ€์ผ (Event Processing Styles):** * **๋‹จ์ˆœ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ (Simple event processing):** ํŠน์ • ์กฐ๊ฑด์˜ ๋ณ€ํ™”์— ์ง์ ‘์ ์œผ๋กœ ๊ด€๋ จ๋œ ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฒ˜๋ฆฌํ•˜์—ฌ ํ›„์† ์ž‘์—…์„ ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค [11]. * **์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ (Event stream processing):** ์ผ๋ฐ˜์ ์ด๊ณ  ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฒคํŠธ๋“ค์„ ๊ตฌ๋…์ž์—๊ฒŒ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ์ •๋ณด ํ๋ฆ„์„ ์ฃผ๋„ํ•ฉ๋‹ˆ๋‹ค [12]. * **๋ณตํ•ฉ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ (Complex event processing, CEP):** ์žฅ๊ธฐ๊ฐ„์— ๊ฑธ์ณ ๋ฐœ์ƒํ•˜๋Š” ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ์˜ ์ธ๊ณผ์ , ์‹œ๊ฐ„์ , ๊ณต๊ฐ„์  ํŒจํ„ด์„ ๋ถ„์„ํ•˜์—ฌ ์ด์ƒ ์ง•ํ›„๋‚˜ ์œ„ํ˜‘, ๊ธฐํšŒ ๋“ฑ์„ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค [13, 14]. * **์ฃผ์š” ํ† ํด๋กœ์ง€ (Topologies):** * **Broker Topology (๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€):** ์ค‘์•™ ์กฐ์ •์ž ์—†์ด ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์‹œ์Šคํ…œ ์ „์ฒด๋‚˜ ํŠน์ • ์ฑ„๋„๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [15, 16]. ์ด๋ฅธ๋ฐ” 'Dumb pipe' ์—ญํ• ์„ ํ•˜๋ฉฐ, ํ™•์žฅ์ด ์šฉ์ดํ•˜๊ณ  ๊ฒฐํ•ฉ๋„๊ฐ€ ๊ทนํžˆ ๋‚ฎ์•„ ์‘๋‹ต์„ฑ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ์ด ๋›ฐ์–ด๋‚˜์ง€๋งŒ ๋ถ„์‚ฐ๋œ ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ธฐ๋Š” ์–ด๋ ต์Šต๋‹ˆ๋‹ค [15, 17]. * **Mediator Topology (๋ฉ”๋””์—์ดํ„ฐ ํ† ํด๋กœ์ง€):** ์ค‘์•™์˜ ์ด๋ฒคํŠธ ๋ฉ”๋””์—์ดํ„ฐ(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ)๊ฐ€ ์ด๋ฒคํŠธ์˜ ํ๋ฆ„, ์—๋Ÿฌ ์ฒ˜๋ฆฌ, ๋ณต๊ตฌ ๋“ฑ์„ ์ œ์–ดํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค [15, 18, 19]. 'Smart pipe'๋กœ์„œ ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋‚˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌํ•˜์ง€๋งŒ, ๋ฉ”๋””์—์ดํ„ฐ๊ฐ€ ๋ณ‘๋ชฉ ํ˜„์ƒ์ด๋‚˜ ๋‹จ์ผ ์žฅ์• ์ (Single Point of Failure)์ด ๋  ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค [15, 17]. * **์ด๋ฒคํŠธ ๊ตฌ์กฐ ๋ฐ ํŽ˜์ด๋กœ๋“œ ์ „๋žต (Event Structure & Payload):** ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ(๋ณธ๋ฌธ)๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ๋ชจ๋“  ํ•„์š” ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ• ์ง€(๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ์ด ์ปค์ง€์ง€๋งŒ ์ฆ‰๊ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ), ํ˜น์€ ์ฐธ์กฐ ํ‚ค(Key/ID)๋งŒ ํฌํ•จํ•˜์—ฌ ์†Œ๋น„์ž๊ฐ€ ๋ณ„๋„ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์กฐํšŒํ•˜๊ฒŒ ํ• ์ง€(๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์€ ๋†’์œผ๋‚˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Œ)๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [20, 21]. ## โš–๏ธ Trade-offs & Caveats ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๋†’์€ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋šœ๋ ทํ•œ ์ œ์•ฝ๊ณผ ๊ณ ๋ ค ์‚ฌํ•ญ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. * **์ตœ์ข… ์ผ๊ด€์„ฑ (Eventual Consistency):** ๋น„๋™๊ธฐ์  ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๊ฐ„์˜ ์ƒํƒœ๊ฐ€ ์ฆ‰๊ฐ์ ์œผ๋กœ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์‹œ๊ฐ„์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [22, 23]. ํŠน์ • ์ž‘์—…์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ง€์—ฐ์„ ํ—ˆ์šฉํ•˜๋„๋ก ์‹œ์Šคํ…œ๊ณผ ์ฝ๊ธฐ ์ž‘์—…์„ ์„ค๊ณ„ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์€ํ–‰ ๊ฑฐ๋ž˜์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ(Strong consistency)์ด ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์—๋Š” ๋ถ€์ ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [23, 24]. * **๋””๋ฒ„๊น… ๋ฐ ๊ด€์ธก์„ฑ์˜ ๋ณต์žก์„ฑ:** ๋‹จ์ผ ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์…˜์ด ๋‹ค์ˆ˜์˜ ๋…๋ฆฝ์ ์ธ ์ƒ์‚ฐ์ž, ์ฑ„๋„, ์†Œ๋น„์ž๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝœ ์Šคํƒ์„ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค [25]. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ์ด๋ฒคํŠธ์— Correlation ID๋ฅผ ํฌํ•จํ•˜์—ฌ ๋กœ๊ทธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์‚ฌ์ „ ์„ค๊ณ„๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [25]. * **์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ์œ ์‹ค ์œ„ํ—˜:** ๋™๊ธฐ์‹ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์—์„œ์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋Š” ๊นŒ๋‹ค๋กญ์Šต๋‹ˆ๋‹ค [23]. ์ฒ˜๋ฆฌ ์ค‘ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์šด๋˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ์œ ์‹ค๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์žฌ์ „์†ก ๋งค์ปค๋‹ˆ์ฆ˜, ์ „์šฉ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ํ”„๋กœ์„ธ์„œ, ๋ฐ๋“œ ๋ ˆํ„ฐ ํ(Dead-Letter Queue), ์ฒ˜๋ฆฌ ํ™•์ธ ์ „๊นŒ์ง€ ํ์— ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹(Client acknowledge mode) ๋“ฑ์„ ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [23]. ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๊ฑธ์นœ ํŠธ๋žœ์žญ์…˜ ์‹คํŒจ ์‹œ์—๋Š” ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(Compensating Transaction)์„ ํ†ตํ•ด ์™„๋ฃŒ๋œ ๋‹จ๊ณ„๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋กค๋ฐฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [23]. * **๊ตฌ์กฐ์  ์˜ค๋ฒ„ํ—ค๋“œ ๋ฐ ๋น„์šฉ:** ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Kafka ๋“ฑ)์˜ ๊ด€๋ฆฌ ๋ฐ ํด๋ผ์šฐ๋“œ ์ธํ”„๋ผ ์œ ์ง€ ๋น„์šฉ์ด ์ถ”๊ฐ€๋˜๋ฉฐ, ๋‹จ์ˆœํ•œ CRUD ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉํ•  ๊ฒฝ์šฐ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง(Over-engineering)์˜ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค [22, 26]. * **์ด๋ฒคํŠธ ์ˆœ์„œ ๋ฐ ์ค‘๋ณต ์ฒ˜๋ฆฌ:** ์ˆ˜๋งŽ์€ ์†Œ๋น„์ž๊ฐ€ ๋ณ‘๋ ฌ๋กœ ๋™์ž‘ํ•  ๋•Œ ์ด๋ฒคํŠธ๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ค‘๋ณต ์ฒ˜๋ฆฌ๋  ์œ„ํ—˜์ด ์žˆ์œผ๋ฏ€๋กœ, ๋ฉฑ๋“ฑ์„ฑ(Idempotent)์„ ๊ฐ–์ถ˜ ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ ๋กœ์ง ๊ตฌํ˜„์ด ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [23]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ ํ† ํด๋กœ์ง€ (Architecture Topologies)] - [[Broker Topology]] - ์—ฐ๊ฒฐ ์ด์œ : ์ค‘์•™ ํ†ต์ œ ์—†์ด ์ด๋ฒคํŠธ ์ฑ„๋„์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋“ค์ด ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ†ต์‹ ํ•˜๋Š” EDA์˜ ํ•ต์‹ฌ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ค‘์•™ ์กฐ์ •์ž ์—†์ด ๋†’์€ ์„ฑ๋Šฅ, ๋ฐ˜์‘์„ฑ, ํ™•์žฅ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์›๋ฆฌ [15, 27]. - [[Mediator Topology]] - ์—ฐ๊ฒฐ ์ด์œ : ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค์˜ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜๊ณผ ์ œ์–ด๋ฅผ ์œ„ํ•ด ์ค‘์•™ ๋ฉ”๋””์—์ดํ„ฐ๋ฅผ ๋„์ž…ํ•˜๋Š” ๋Œ€์•ˆ์  ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ณต์žกํ•œ ์ด๋ฒคํŠธ ์›Œํฌํ”Œ๋กœ์šฐ ์ œ์–ด, ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์˜ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์˜ค๋ฅ˜ ๋ณต๊ตฌ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ [15, 18]. #### [์‹œ์Šคํ…œ ํŠน์„ฑ ๋ฐ ์„ค๊ณ„ ์ œ์•ฝ (System Characteristics & Constraints)] - [[Eventual Consistency]] - ์—ฐ๊ฒฐ ์ด์œ : EDA ์‹œ์Šคํ…œ์ด ๊ฐ•ํ•œ ์ผ๊ด€์„ฑ์„ ํฌ๊ธฐํ•˜๊ณ  ๊ฐ€์šฉ์„ฑ๊ณผ ํŒŒํ‹ฐ์…˜ ํ—ˆ์šฉ์„ฑ์„ ์„ ํƒํ•จ์— ๋”ฐ๋ผ ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์ง€์—ฐ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ๋น„๋™๊ธฐ ํ†ต์‹  ์‹œ ๋ฐ์ดํ„ฐ ์ƒํƒœ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ์™€ ์ด๋ฅผ ์‹œ์Šคํ…œ์ ์œผ๋กœ ์ˆ˜์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• [22, 23]. - [[Complex Event Processing]] - ์—ฐ๊ฒฐ ์ด์œ : ๋‹จ์ˆœํ•œ ์ด๋ฒคํŠธ๋ฅผ ๋„˜์–ด ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ์˜ ์‹œ๊ฐ„์ , ๊ณต๊ฐ„์  ์ƒํ˜ธ์ž‘์šฉ์„ ํ‰๊ฐ€ํ•˜์—ฌ ์˜๋ฏธ ์žˆ๋Š” ํŒจํ„ด์„ ์ฐพ์•„๋‚ด๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์—์„œ ์ด์ƒ ์ง•ํ›„๋‚˜ ์œ„ํ˜‘, ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐํšŒ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ณ ๊ธ‰ ์ด๋ฒคํŠธ ํ•ด์„ ๊ธฐ๋ฒ• [13, 14]. #### [์ƒํ˜ธ ๋ณด์™„์  ์•„ํ‚คํ…์ฒ˜ ๋ฐ ํŒจํ„ด (Complementary Architectures & Patterns)] - [[Event Sourcing]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฐ์ดํ„ฐ์˜ ํ˜„์žฌ ์ƒํƒœ๋งŒ ์ €์žฅํ•˜๋Š” ๋Œ€์‹ , ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•œ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ๋ถˆ๋ณ€์˜ ๋กœ๊ทธ๋กœ ์ €์žฅํ•˜๋Š” ์„ค๊ณ„ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: CQRS์™€ ๊ฒฐํ•ฉํ•˜๊ฑฐ๋‚˜ EDA์˜ ๊ฐ์‚ฌ ํŠธ๋ ˆ์ผ, ์‹œ์Šคํ…œ ์ƒํƒœ ๋ณต์› ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”ํ•˜๋Š” ์›๋ฆฌ [28, 29]. ### Deeper Research Questions - EDA ํ™˜๊ฒฝ์—์„œ ์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency)์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ์‹œ์Šคํ…œ์˜ ๋ถ€๋ถ„์  ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๊ธฐ๊ฐ„ ๋™์•ˆ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - ๋น„์ฆˆ๋‹ˆ์Šค ์›Œํฌํ”Œ๋กœ์šฐ์˜ ๋ณต์žก์„ฑ์— ๋”ฐ๋ผ ๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€์™€ ๋ฉ”๋””์—์ดํ„ฐ ํ† ํด๋กœ์ง€๋ฅผ ํ˜ผํ•ฉ(Hybrid)ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์„ค๊ณ„ ๊ธฐ์ค€๊ณผ ๊ธฐ์ˆ ์  ๊ฒฝ๊ณ„๋Š” ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์‹คํŒจ ์‹œ, EDA ๋ชจ๋ธ์—์„œ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(Compensating Transaction)์ด๋‚˜ Saga ํŒจํ„ด์€ ์–ด๋–ป๊ฒŒ ์„ค๊ณ„๋˜๊ณ  ์ž‘๋™ํ•˜๋Š”๊ฐ€? - ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์— ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ‚ค(Key)๊ฐ’๋งŒ ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹ ๊ฐ„์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๊ฐ€ ๋„คํŠธ์›Œํฌ ๋Œ€์—ญํญ ๋ฐ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์— ๋ฏธ์น˜๋Š” ์žฅ๊ธฐ์  ์˜ํ–ฅ์€ ๋ฌด์—‡์ธ๊ฐ€? - ๋Œ€๋Ÿ‰์˜ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” IoT ํ™˜๊ฒฝ ๋“ฑ์—์„œ ๋ฐ์ดํ„ฐ ์†์‹ค(Data Loss)์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ด๋ฒคํŠธ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์ŠคํŠธ๋ฆผ(Stream)๊ณผ ํ(Queue)๋Š” ๊ฐ๊ฐ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅด๊ฒŒ ์ตœ์ ํ™”๋˜์–ด ํ™œ์šฉ๋˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** RabbitMQ๋‚˜ Apache Kafka์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ ์ฑ„๋„ ๋ฐ ํ/์ŠคํŠธ๋ฆผ์„ ๊ตฌ์„ฑํ•˜๊ณ , ์‹œ์Šคํ…œ ๊ฐ„ ํ†ต์‹ ์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค [4, 13, 30]. - **System Design:** ๋„๋ฉ”์ธ ์ด๋ฒคํŠธ์™€ ํ†ตํ•ฉ ์ด๋ฒคํŠธ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ (Bounded Context ๊ฒฝ๊ณ„ ๊ฐ„ ํ†ต์‹ ), ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”์–ด(Loose coupling) ํ•œ ์„œ๋น„์Šค์˜ ์žฅ์• ๊ฐ€ ๋‹ค๋ฅธ ์„œ๋น„์Šค๋กœ ์ „ํŒŒ๋˜์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค [31, 32]. - **Operation / Maintenance:** ๊ฐœ๋ณ„ ์ด๋ฒคํŠธ๋งˆ๋‹ค Correlation ID๋ฅผ ๋ถ€์—ฌํ•˜์—ฌ ๋น„๋™๊ธฐ ํ™˜๊ฒฝ ์ „๋ฐ˜์— ๊ฑธ์นœ ๋กœ๊ทธ ํŠธ๋ ˆ์ด์‹ฑ(๊ด€์ธก์„ฑ)์„ ํ™•๋ณดํ•˜๊ณ , ์‹คํŒจํ•œ ์ด๋ฒคํŠธ๋ฅผ Dead-Letter Queue (DLQ)๋กœ ๋ณด๋‚ด ์šด์˜์ž๊ฐ€ ํ›„์† ์กฐ์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค [23, 25]. - **Learning Path:** ๊ธฐ์กด์˜ CRUD ์ค‘์‹ฌ์ ์ด๊ณ  ๋™๊ธฐ์ ์ธ ์‚ฌ๊ณ ๋ฐฉ์‹(Request-Response)์—์„œ ๋ฒ—์–ด๋‚˜, ์‹œ์Šคํ…œ์˜ ๋ณ€ํ™”๋ฅผ ์ด๋ฒคํŠธ ๋‹จ์œ„๋กœ ์ƒ๊ฐํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๋ฒคํŠธ ์ฃผ๋„์  ์‚ฌ๊ณ ๋กœ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์ „ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [28]. - **My Project Relevance:** ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ ์„œ๋น„์Šค, ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ์˜ ์ „์ž์ƒ๊ฑฐ๋ž˜ ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ, ์ฃผ์‹ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ, ํ˜น์€ ์„ผ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ์•„ ๋ถ„์„ํ•ด์•ผ ํ•˜๋Š” IoT ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ์‹œ ์ ์šฉ์„ ์ ๊ทน ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [13, 24, 33]. ### Adjacent Topics - [[Microservices Architecture]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ƒํ˜ธ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅ๋˜๊ณ  ๋ฐฐํฌ๋  ๋•Œ, EDA๊ฐ€ ๊ฐ ์„œ๋น„์Šค ๊ฐ„์˜ ํšจ์œจ์ ์ด๊ณ  ๊ฒฐํ•ฉ๋„ ๋‚ฎ์€ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์–ด๋–ป๊ฒŒ ์ง€์›ํ•˜๋Š”์ง€ ๋น„๊ต ๋ฐ ํƒ๊ตฌ [23, 34, 35]. - [[Command Query Responsibility Segregation (CQRS)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์ž‘์—…์„ ๋ถ„๋ฆฌํ•˜๋Š” ํŒจํ„ด์œผ๋กœ, EDA ๋ฐ ์ด๋ฒคํŠธ ์†Œ์‹ฑ(Event Sourcing)๊ณผ ์–ด๋–ป๊ฒŒ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ด์–ด ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์กฐํšŒ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š”์ง€ ์กฐ์‚ฌ [36-38]. - [[Service-Oriented Architecture (SOA)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์ „ํ†ต์ ์ธ ์„œ๋น„์Šค ์ง€ํ–ฅ ์•„ํ‚คํ…์ฒ˜๊ฐ€ EDA์™€ ๊ฒฐํ•ฉ๋œ SOA 2.0์œผ๋กœ ์ง„ํ™”ํ•˜๋ฉฐ, ๊ธฐ์—… ํ™˜๊ฒฝ์—์„œ ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅํ•œ ์ธ๊ณผ ๊ด€๊ณ„ ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ํŒŒ์•… [39, 40]. --- *Last updated: 2026-05-02*