--- id: P-REINFORCE-WIKI-DB427E96 category: "10_Wiki/๐Ÿ’ก Topics/02_Architecture_Principles" confidence_score: 0.95 tags: ['event-driven-architecture-(eda)', 'broker-topology', 'mediator-topology', 'microservices-architecture', 'complex-event-processing-(cep)', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Event-Driven Architecture (EDA)]] ## ๐Ÿ“Œ Brief Summary ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜(EDA)๋Š” ์‹œ์Šคํ…œ ๋‚ด์—์„œ ์˜๋ฏธ ์žˆ๋Š” ์ƒํƒœ ๋ณ€ํ™”(์ด๋ฒคํŠธ)์˜ ์ƒ์„ฑ, ๊ฐ์ง€, ์†Œ๋น„ ๋ฐ ๋ฐ˜์‘์„ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋น„๋™๊ธฐ์‹ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค[1, 2]. ์ด๋ฒคํŠธ ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ์ง์ ‘์ ์ธ ์š”์ฒญ์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ์ด๋ฒคํŠธ ์ฑ„๋„์„ ํ†ตํ•ด ์†Œํ†ตํ•˜๋ฏ€๋กœ, ๊ตฌ์„ฑ ์š”์†Œ ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋งค์šฐ ๋‚ฎ๊ฒŒ ์œ ์ง€๋œ๋‹ค[1, 3, 4]. ์ด ์•„ํ‚คํ…์ฒ˜๋Š” ๊ณ ๋„์˜ ํ™•์žฅ์„ฑ, ๋‚ด๊ฒฐํ•จ์„ฑ ๋ฐ ์‘๋‹ต์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, IoT ์›Œํฌ๋กœ๋“œ ๋ฐ ๋ณต์žกํ•˜๊ณ  ๋™์ ์ธ ์‹œ์Šคํ…œ์— ํŠนํžˆ ์ ํ•ฉํ•˜๋‹ค[4-6]. ## ๐Ÿ“– Core ๋Œ€Content ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ์‹œ์Šคํ…œ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ๋น„๋™๊ธฐ์  ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ํ•ต์‹ฌ ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ† ํด๋กœ์ง€๋ฅผ ํ™œ์šฉํ•œ๋‹ค. * **์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ** * **์ด๋ฒคํŠธ ์ƒ์‚ฐ์ž(Event Producers):** ํŠน์ • ๋™์ž‘์ด๋‚˜ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฐ์ง€ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค[3, 7]. * **์ด๋ฒคํŠธ ์ฑ„๋„(Event Channels):** ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋‚˜ ํ(์˜ˆ: Kafka, RabbitMQ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ƒ์‚ฐ์ž๋กœ๋ถ€ํ„ฐ ์†Œ๋น„์ž์—๊ฒŒ ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ „์†กํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ์—ญํ• ์„ ํ•œ๋‹ค[7, 8]. * **์ด๋ฒคํŠธ ์†Œ๋น„์ž(Event Consumers) / ์ฒ˜๋ฆฌ๊ธฐ(Processors):** ์ „๋‹ฌ๋œ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜์—ฌ ํŠน์ • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค[3, 7]. ์ƒ์‚ฐ์ž๋Š” ๋ˆ„๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์†Œ๋น„ํ•˜๋Š”์ง€ ์•Œ ํ•„์š”๊ฐ€ ์—†๋‹ค[9]. * **์ฃผ์š” ํ† ํด๋กœ์ง€(Topologies)** * **๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€(Broker Topology):** ์ค‘์•™์˜ ์กฐ์ •์ž ์—†์ด ๊ตฌ์„ฑ ์š”์†Œ๋“ค์ด ์ด๋ฒคํŠธ๋ฅผ ์‹œ์Šคํ…œ ์ „์ฒด์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๋Š” ๋ฐฉ์‹(Choreography)์ด๋‹ค[10, 11]. ํ๋ฆ„์ด ๋‹จ์ˆœํ•˜๊ณ  ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’์„ ๋•Œ ์œ ๋ฆฌํ•˜๋ฉฐ, ํ™•์žฅ์„ฑ๊ณผ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์œผ๋‚˜ ์ค‘์•™ ์ œ์–ด๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ „์ฒด ํŠธ๋žœ์žญ์…˜์„ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๋ฅผ ๋ณต๊ตฌํ•˜๊ธฐ๋Š” ์–ด๋ ต๋‹ค[10, 12]. * **๋ฉ”๋””์—์ดํ„ฐ ํ† ํด๋กœ์ง€(Mediator Topology):** ์ด๋ฒคํŠธ ๋ฉ”๋””์—์ดํ„ฐ๋ผ๋Š” ์ค‘์•™ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์กด์žฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜(Orchestration)ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค[10, 11, 13]. ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค๋‚˜ ์—๋Ÿฌ ํ•ธ๋“ค๋ง์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ ํ•ฉํ•˜์ง€๋งŒ, ๋ฉ”๋””์—์ดํ„ฐ ์ž์ฒด๊ฐ€ ์„ฑ๋Šฅ์˜ ๋ณ‘๋ชฉ(Bottleneck)์ด๋‚˜ ๋‹จ์ผ ์žฅ์• ์ (Single Point of Failure)์ด ๋  ์œ„ํ—˜์ด ์žˆ๋‹ค[10, 11]. * **์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ ๊ตฌ์กฐ ์ „๋žต** * **๋ชจ๋“  ์†์„ฑ ํฌํ•จ:** ์†Œ๋น„์ž๊ฐ€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์กฐํšŒํ•  ํ•„์š” ์—†๋„๋ก ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ๋น ๋ฅด์ง€๋งŒ ํŽ˜์ด๋กœ๋“œ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ ๋Œ€์—ญํญ ์†Œ๋น„๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ , ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ์œผ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค[14, 15]. * **ํ‚ค(Key)/ID๋งŒ ํฌํ•จ:** ์ตœ์†Œํ•œ์˜ ์‹๋ณ„์ž๋งŒ ํฌํ•จํ•˜๋ฉฐ ์†Œ๋น„์ž๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง์ ‘ ์กฐํšŒํ•œ๋‹ค. ์ผ๊ด€์„ฑ ์œ ์ง€๋Š” ์šฉ์ดํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์กฐํšŒ๊ฐ€ ๋นˆ๋ฒˆํ•ด์ ธ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค[14, 15]. * **์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์Šคํƒ€์ผ** * **๋‹จ์ˆœ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ(Simple Event Processing):** ๋‹จ์ผ ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ ์ฆ‰๊ฐ์ ์ธ ํ›„์† ์กฐ์น˜๋ฅผ ์œ ๋„ํ•œ๋‹ค[16]. * **์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ(Event Stream Processing):** ์ˆ˜๋งŽ์€ ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜์—ฌ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ •๋ณด๋ฅผ ๊ฑธ๋Ÿฌ๋‚ธ๋‹ค[17]. * **๋ณตํ•ฉ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ(Complex Event Processing, CEP):** ์žฅ์‹œ๊ฐ„์— ๊ฑธ์นœ ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ ๊ฐ„์˜ ํŒจํ„ด์„ ๋ถ„์„ํ•˜์—ฌ ์ด์ƒ ์ง•ํ›„๋‚˜ ๊ธฐํšŒ ๋“ฑ ๋ณตํ•ฉ์ ์ธ ์ƒํ™ฉ์„ ์ถ”๋ก ํ•œ๋‹ค[18]. ## โš–๏ธ Trade-offs & Caveats ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋Š” ๊ณ ๋„์˜ ํ™•์žฅ์„ฑ๊ณผ ๋น„๊ฒฐํ•ฉ์„ฑ์„ ์ œ๊ณตํ•˜์ง€๋งŒ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํŠน์œ ์˜ ๋ณต์žก์„ฑ์œผ๋กœ ์ธํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•œ๊ณ„์™€ ๋ฐ˜๋Œ€ ๊ธ‰๋ถ€๊ฐ€ ๋”ฐ๋ฅธ๋‹ค. * **์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency) ๊ฐ์ˆ˜:** ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋น„๋™๊ธฐ ์ฑ„๋„๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์ฒด ์‹œ์Šคํ…œ์— ๋™๊ธฐํ™”๋˜๋Š” ๋ฐ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ์€ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜ ์ƒํƒœ๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์•„ํ‚คํ…ํŠธ๋Š” ์†Œ๋น„์ž๊ฐ€ ๊ณผ๊ฑฐ์˜(stale) ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•ด ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค[19, 20]. * **๋ณต์žกํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ:** ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์—์„œ๋Š” ์š”์ฒญ-์‘๋‹ต ๋ชจ๋ธ์ฒ˜๋Ÿผ ์ฆ‰๊ฐ์ ์ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ์–ด๋ ต๋‹ค. ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๋ณ„๋„์˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๊ธฐ๋‚˜ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ(DLQ)๋ฅผ ๊ตฌ์ถ•ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ณต์ˆ˜์˜ ์„œ๋น„์Šค์— ๊ฑธ์นœ ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ์ด๋ฅผ ์ทจ์†Œํ•˜๊ธฐ ์œ„ํ•ด ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(Compensating Transaction)์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค[20]. * **๊ด€์ธก์„ฑ(Observability) ๋ฐ ๋””๋ฒ„๊น…์˜ ์–ด๋ ค์›€:** ๊ณต์œ ๋œ ํ˜ธ์ถœ ์Šคํƒ(Call stack)์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ผ ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์…˜์„ ์ถ”์ ํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ์ด๋ฅผ ๊ทน๋ณตํ•˜๋ ค๋ฉด ๋ชจ๋“  ์ด๋ฒคํŠธ์— ์ƒ๊ด€๊ด€๊ณ„ ID(Correlation ID)๋ฅผ ํฌํ•จ์‹œ์ผœ ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๋กœ๊ทธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ์„ ๋„์ž…ํ•ด์•ผ ํ•œ๋‹ค[21]. * **์ˆœ์„œ ๋ณด์žฅ ๋ฐ ๋ฉฑ๋“ฑ์„ฑ ๋ฌธ์ œ:** ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ๋™์ผํ•œ ์ฒ˜๋ฆฌ๊ธฐ์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋  ๊ฒฝ์šฐ, ์ด๋ฒคํŠธ์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ๊ฐ€ ๋’ค์„ž์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋กœ์ง์„ ๋ฉฑ๋“ฑ์„ฑ(Idempotent, ์—ฌ๋Ÿฌ ๋ฒˆ ์ฒ˜๋ฆฌํ•ด๋„ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•จ) ์žˆ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ˆœ์„œ๋ฅผ ๊ฐ•์ œํ•˜๋Š” ์ถ”๊ฐ€์ ์ธ ์„ค๊ณ„๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค[20]. * **์Šคํ‚ค๋งˆ ์ง„ํ™”(Schema Evolution) ๊ด€๋ฆฌ:** ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ๋˜๋ฏ€๋กœ, ์ƒ์‚ฐ์ž๊ฐ€ ์ด๋ฒคํŠธ์˜ ๊ตฌ์กฐ(์Šคํ‚ค๋งˆ)๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ ์ด๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ตฌ๋ฒ„์ „ ์†Œ๋น„์ž์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์ดˆ๊ธฐ์— ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋žต์ด ์ˆ˜๋ฆฝ๋˜์–ด์•ผ ํ•œ๋‹ค[21]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [ํ† ํด๋กœ์ง€ ๋ฐ ์„ค๊ณ„ ๊ตฌ์กฐ] - [[Broker Topology]] - ์—ฐ๊ฒฐ ์ด์œ : EDA์˜ ์ด๋ฒคํŠธ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ค‘์•™ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ์—†์ด ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ์™€ ์ž์œจ์ ์ธ ๊ตฌ๋…์„ ํ†ตํ•ด ์‹œ์Šคํ…œ์ด ์„ฑ๋Šฅ๊ณผ ํ™•์žฅ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ์‹ ๋ฐ ๊ทธ์— ๋”ฐ๋ฅธ ํ•œ๊ณ„์ [10, 11, 22]. - [[Mediator Topology]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ณต์žกํ•œ ์ด๋ฒคํŠธ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ค‘์•™์—์„œ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ EDA์˜ ๋Œ€์•ˆ์  ๊ตฌ์กฐ์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ค‘์•™ ์ง‘์ค‘์‹ ํ์™€ ๋ฉ”๋””์—์ดํ„ฐ๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜ ๋ณต๊ตฌ์™€ ์กฐ๊ฑด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•[10, 11, 13, 23]. #### [์•„ํ‚คํ…์ฒ˜ ๋ฐ ์‹œ์Šคํ…œ ํŒจํ„ด] - [[Microservices Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : EDA์™€ ๊ฒฐํ•ฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๊ฐ€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ํ†ต์‹ ํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ฐœ๋ณ„ ์„œ๋น„์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ  ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š”์ง€[24, 25]. - [[Complex Event Processing (CEP)]] - ์—ฐ๊ฒฐ ์ด์œ : EDA ์‹œ์Šคํ…œ์ด ๊ณ ๋„ํ™”๋  ๋•Œ ์ ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ด๋ฒคํŠธ ๋ถ„์„ ๋ฐ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹œ๊ณต๊ฐ„์  ์ธ๊ณผ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ๋‹ค์–‘ํ•œ ๋‹จ์ˆœ ์ด๋ฒคํŠธ๋ฅผ ์œตํ•ฉํ•˜์—ฌ ์ด์ƒ ์ง•ํ›„, ์œ„ํ˜‘ ๋˜๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ธฐํšŒ๋กœ ์ถ”๋ก ํ•ด ๋‚ด๋Š” ์›๋ฆฌ[18]. #### [๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐ ์ผ๊ด€์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜] - [[Eventual Consistency]] - ์—ฐ๊ฒฐ ์ด์œ : EDA์—์„œ ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ๋น„๋™๊ธฐ์  ๊ฒฐํ•ฉ ํ•ด์ œ๋กœ ์ธํ•ด ํ•„์—ฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๋ฐ์ดํ„ฐ ํŠน์„ฑ์ด๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์ฆ‰๊ฐ์ ์ธ ์ผ๊ด€์„ฑ(Strong Consistency)์„ ํฌ๊ธฐํ•˜๋Š” ๋Œ€์‹  ์‹œ์Šคํ…œ ๊ฐ€์šฉ์„ฑ(Availability)๊ณผ ํ™•์žฅ์„ฑ์„ ์–ป๊ฒŒ ๋˜๋Š” ๋ถ„์‚ฐ ์ปดํ“จํŒ…์˜ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„ ์›๋ฆฌ[20]. - [[Event Sourcing]] - ์—ฐ๊ฒฐ ์ด์œ : ์ƒํƒœ์˜ ์ตœ์ข… ๊ฒฐ๊ณผ๋งŒ ์ €์žฅํ•˜๋Š” ๋Œ€์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ ๋ณ€ํ™”(์ด๋ฒคํŠธ) ์ „์ฒด๋ฅผ ๋ถˆ๋ณ€์˜ ๋กœ๊ทธ๋กœ ์ €์žฅํ•˜๋Š” ํŒจํ„ด์œผ๋กœ, EDA์™€ ๊ฐ•ํ•œ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ธ๋‹ค. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๊ณผ๊ฑฐ ์ด๋ฒคํŠธ ์žฌ์‹คํ–‰(Replay)์„ ํ†ตํ•œ ์‹œ์Šคํ…œ ์ƒํƒœ ๋ณต์›, ์™„๋ฒฝํ•œ ๊ฐ์‚ฌ(Audit) ์ถ”์ , ๋น„์ฆˆ๋‹ˆ์Šค ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ ๊ธฐ๋ฒ•[26, 27]. ### Deeper Research Questions - ๋Œ€๊ทœ๋ชจ ๋ถ„์‚ฐ EDA ์‹œ์Šคํ…œ์—์„œ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์˜ ์ˆœ์„œ ๋ณด์žฅ(Ordering)๊ณผ '์ •ํ™•ํžˆ ํ•œ ๋ฒˆ ์ฒ˜๋ฆฌ(Exactly-once processing)'๋ฅผ ๊ธฐ์ˆ ์ ์œผ๋กœ ์–ด๋–ป๊ฒŒ ์ตœ์ ํ™”ํ•˜์—ฌ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - ์ด๋ฒคํŠธ ๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€์™€ ๋ฉ”๋””์—์ดํ„ฐ ํ† ํด๋กœ์ง€๋ฅผ ํ˜ผํ•ฉํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ๊ฐ ํ† ํด๋กœ์ง€๋ฅผ ์ ์šฉํ•  ๊ฒฝ๊ณ„(Bounded Context)๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ตœ์ ์˜ ๊ธฐ์ค€์€ ๋ฌด์—‡์ธ๊ฐ€? - EDA์—์„œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์— ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹๊ณผ ํ‚ค(Key)๋งŒ ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ๋•Œ, ๋Œ€์šฉ๋Ÿ‰ ํŠธ๋ž˜ํ”ฝ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ(๋Œ€์—ญํญ ์†Œ๋น„) ๋ฐ ์ผ๊ด€์„ฑ ์ฐจ์ด์˜ ์‹ค์ œ ์‚ฌ๋ก€๋Š” ์–ด๋– ํ•œ๊ฐ€? - ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๊ณผ์ • ์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ๋“œ ๋ ˆํ„ฐ ํ(DLQ)์™€ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜(Compensating Transaction)์„ ๊ฒฐํ•ฉํ•œ ์—๋Ÿฌ ๋ณต๊ตฌ ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ค‘๋‹จ ์—†์ด ์—…๋ฐ์ดํŠธ๋˜๊ธฐ ์œ„ํ•ด, ์ด๋ฒคํŠธ ์Šคํ‚ค๋งˆ์˜ ์ง„ํ™”(Schema Evolution)์™€ ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ „๋žต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ๋น„์ฆˆ๋‹ˆ์Šค ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด Kafka, RabbitMQ ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ๋˜๋Š” ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆฌ๋ฐ ํ”Œ๋žซํผ์„ ์‹œ์Šคํ…œ ๊ฐ„์˜ ํ†ต์‹  ์ฑ„๋„๋กœ ๊ตฌ์ถ•ํ•œ๋‹ค[7, 8]. - **System Design:** ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถ”์–ด ์ค‘์•™์ง‘์ค‘์  ์›Œํฌํ”Œ๋กœ์šฐ ์ œ์–ด๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋ฉ”๋””์—์ดํ„ฐ ํŒจํ„ด์„, ๊ทน๋‹จ์ ์ธ ํ™•์žฅ์„ฑ๊ณผ ๋น ๋ฅธ ์‘๋‹ต์ด ํ•„์š”ํ•˜๋ฉด ๋ธŒ๋กœ์ปค ํŒจํ„ด์„ ์ฑ„ํƒํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ ํŽ˜์ด๋กœ๋“œ ์„ค๊ณ„(Keys vs All attributes)๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค[10, 14, 28]. - **Operation / Maintenance:** ๊ฐœ๋ณ„ ์ด๋ฒคํŠธ๋งˆ๋‹ค Correlation ID๋ฅผ ํ•„์ˆ˜์ ์œผ๋กœ ํฌํ•จ์‹œ์ผœ ๋ถ„์‚ฐ ํŠธ๋ ˆ์ด์‹ฑ(Distributed Tracing) ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•จ์œผ๋กœ์จ, ๋น„๋™๊ธฐ ํ˜ธ์ถœ๋กœ ํฉ์–ด์ง„ ์‹œ์Šคํ…œ ๋‚ด์˜ ๋ฌธ์ œ ๋ฐœ์ƒ ์ง€์ ์„ ํšจ์œจ์ ์œผ๋กœ ์‹๋ณ„ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•œ๋‹ค[21]. - **Learning Path:** ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ์Šคํ…œ ๊ฐ„์˜ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ๋ฐ ํ/์ŠคํŠธ๋ฆผ์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•œ ํ›„, ์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency)์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜ ์„ค๊ณ„(Saga ํŒจํ„ด ๋“ฑ) ๋ฐ ์—๋Ÿฌ ๋ณต์› ์ „๋žต์œผ๋กœ ์ง€์‹์„ ํ™•์žฅํ•œ๋‹ค[20, 29, 30]. - **My Project Relevance:** ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋‚˜ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์‹œ์Šคํ…œ(์˜ˆ: IoT ์„ผ์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘, ์ฃผ์‹ ๊ฑฐ๋ž˜ ํ”Œ๋žซํผ, ๋Œ€๊ทœ๋ชจ ์ด์ปค๋จธ์Šค ๋“ฑ) ํ˜น์€ ๋ชจ๋†€๋ฆฌ์‹ ์‹œ์Šคํ…œ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ํ†ต์‹  ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”์–ด์•ผ ํ•  ๋•Œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ์„ค๊ณ„ ์ „๋žต์œผ๋กœ ๊ฒ€ํ† ๋œ๋‹ค[5, 7, 8, 31]. ### Adjacent Topics - [[Service-Oriented Architecture (SOA)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ์„œ๋น„์Šค๋ฅผ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ์ ์€ ์œ ์‚ฌํ•˜๋‚˜, EDA์˜ ๋น„๋™๊ธฐ ํŠธ๋ฆฌ๊ฑฐ ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ๋™๊ธฐ์‹ ์š”์ฒญ-์‘๋‹ต(Request-Response) ํŒจํ„ด์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜๋กœ์„œ ๋ถ„์‚ฐ ํ†ต์‹ ์˜ ์„ค๊ณ„ ์ฐจ์ด๋ฅผ ๋น„๊ต ๋ถ„์„ํ•œ๋‹ค[32, 33]. - [[Space-Based Architecture]] - ํ™•์žฅ ๋ฐฉํ–ฅ: EDA์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ณ ํŠธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ ๋ฐ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜๋กœ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ณ‘๋ชฉ์„ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๋“œ(In-memory Data Grid)๋กœ ๋Œ€์ฒดํ•˜์—ฌ ํ™•์žฅ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ์›๋ฆฌ๋ฅผ ํ™•์žฅ ํ•™์Šตํ•œ๋‹ค[34-36]. --- *Last updated: 2026-05-02*