--- id: P-REINFORCE-WIKI-814CB048 category: Dev confidence_score: 0.95 tags: ['message-brokers', 'event-driven-architecture', 'microservices-architecture-pattern', 'apache-kafka-/-rabbitmq', 'cqrs', 'architecture-principles'] last_reinforced: 2026-05-02 --- # [[Message Brokers]] ## ๐Ÿ“Œ Brief Summary ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Message Brokers)๋Š” ์ด๋ฒคํŠธ ์ฃผ๋„ ์•„ํ‚คํ…์ฒ˜(Event-Driven Architecture) ๋ฐ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ(์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž) ๊ฐ„์˜ ๋ฉ”์‹œ์ง€๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ผ์šฐํŒ…ํ•˜๊ณ  ์ „์†กํ•˜๋Š” ์ค‘์•™ ์ค‘๊ฐœ ์š”์†Œ์ž…๋‹ˆ๋‹ค [1-3]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„ ์„œ๋น„์Šค ๊ฐ„์˜ ์ง์ ‘์ ์ธ ํ†ต์‹  ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ฒฐํ•ฉ๋„(Coupling)๋ฅผ ๋‚ฎ์ถ”๊ณ , ์‹œ์Šคํ…œ์˜ ํ™•์žฅ์„ฑ๊ณผ ๋‚ด๊ฒฐํ•จ์„ฑ(Fault tolerance)์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ“– Core ์†Œ์Šค Content - **์ด๋ฒคํŠธ ์ฑ„๋„ ๋ฐ ํ†ต์‹  ์ค‘๊ฐœ:** ์ด๋ฒคํŠธ ์ฃผ๋„ ์•„ํ‚คํ…์ฒ˜์—์„œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ์ด๋ฒคํŠธ ์ƒ์‚ฐ์ž๊ฐ€ ์ƒ์„ฑํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ด๋ฒคํŠธ ์†Œ๋น„์ž์—๊ฒŒ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” '์ด๋ฒคํŠธ ์ฑ„๋„' ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [1, 2]. ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž๋Š” ์„œ๋กœ๋ฅผ ์•Œ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ๋ธŒ๋กœ์ปค๊ฐ€ ์ด๋ฅผ ์ค‘๊ฐ„์—์„œ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค [2]. - **ํ(Queues)์™€ ์ŠคํŠธ๋ฆผ(Streams) ๋ฉ”์ปค๋‹ˆ์ฆ˜:** ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ์ฃผ๋กœ ํ๋‚˜ ์ŠคํŠธ๋ฆผ ํ˜•ํƒœ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค [6-8]. ํ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ์‹œํ‚ค๋Š” ๋ฐ ์œ ์šฉํ•˜๋ฉฐ ๊ฐ ์ด๋ฒคํŠธ๊ฐ€ ๊ณ ์œ ํ•˜๊ฒŒ ํ•œ ๋ฒˆ๋งŒ ์ฒ˜๋ฆฌ๋˜๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค [6, 8]. ๋ฐ˜๋ฉด ์ŠคํŠธ๋ฆผ์€ ์ด๋ฒคํŠธ๋ฅผ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜์—ฌ ์—ฌ๋Ÿฌ ์†Œ๋น„์ž๊ฐ€ ๊ฐ์ž์˜ ์†๋„์— ๋งž์ถฐ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ฑฐ๋‚˜ ๊ณผ๊ฑฐ ์ด๋ฒคํŠธ๋ฅผ ์žฌ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [7, 8]. - **๋ธŒ๋กœ์ปค ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด(Broker Architecture Pattern):** ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ๋‚ด์—์„œ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์ด๋‚˜ ์ด๋ฒคํŠธ๋ฅผ ์ ์ ˆํ•œ ์„œ๋ฒ„๋‚˜ ์„œ๋น„์Šค๋กœ ์ „๋‹ฌํ•˜๊ณ  ํ†ต์‹ ์„ ์กฐ์ •ํ•˜๋Š” ์ค‘์•™ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค [3, 9]. ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ๋ฉ”๋””์—์ดํ„ฐ(Mediator) ํ† ํด๋กœ์ง€์™€ ๋‹ฌ๋ฆฌ, ๋ธŒ๋กœ์ปค๋Š” ์ฃผ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ์‹œ์Šคํ…œ ์ „์ฒด์— ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ฑ„๋„๋กœ ์ „๋‹ฌํ•˜๋Š” "๋‹จ์ˆœํ•œ ํŒŒ์ดํ”„(dumb pipe)"์˜ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [10, 11]. - **์ฃผ์š” ํ™œ์šฉ ์‚ฌ๋ก€ ๋ฐ ๋„๊ตฌ:** ์‹œ์Šคํ…œ์˜ ์ฝ๊ธฐ ๋ชจ๋ธ๊ณผ ์“ฐ๊ธฐ ๋ชจ๋ธ์„ ๋™๊ธฐํ™”ํ•ด์•ผ ํ•˜๋Š” CQRS ํŒจํ„ด ๋“ฑ์—์„œ ํ•„์ˆ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค [12]. ์—…๊ณ„์—์„œ๋Š” ์ฃผ๋กœ Apache Kafka, RabbitMQ, ActiveMQ, JBoss Messaging๊ณผ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด๋‚˜ AWS SQS, AWS MQ, Google Cloud Pub/Sub๊ณผ ๊ฐ™์€ ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค [1, 5, 13]. ## โš–๏ธ Trade-offs & Caveats - **์•„ํ‚คํ…์ฒ˜์  ์ด์ :** ์„œ๋น„์Šค ๊ฐ„ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ๋Š์–ด๋‚ด์–ด(Decoupling) ์ˆ˜ํ‰์  ํ™•์žฅ์ด ์šฉ์ดํ•ด์ง€๋ฉฐ, ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ์‹คํŒจํ•˜๋”๋ผ๋„ ์ด๋ฒคํŠธ๊ฐ€ ํ์— ์ €์žฅ๋˜์–ด ๋ณต๊ตฌ ํ›„ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์ด ๋งค์šฐ ๋†’์•„์ง‘๋‹ˆ๋‹ค [4, 5, 11]. - **์ธํ”„๋ผ ๋น„์šฉ ๋ฐ ๋ณต์žก์„ฑ:** ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์˜ ๋„์ž…์€ ์ธํ”„๋ผ ์˜ค๋ฒ„ํ—ค๋“œ์™€ ๋น„์šฉ ์ฆ๊ฐ€๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค [14]. ๋˜ํ•œ, ์ ์ ˆํ•œ ํŽ˜์ผ์˜ค๋ฒ„(Failover) ๋งค์ปค๋‹ˆ์ฆ˜์ด๋‚˜ ํŽ˜๋”๋ ˆ์ด์…˜(Federation) ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ๋ธŒ๋กœ์ปค ์ž์ฒด๊ฐ€ ๋‹จ์ผ ์žฅ์• ์ (Single Point of Failure)์ด ๋˜์–ด ์ „์ฒด ์‹œ์Šคํ…œ์„ ๋งˆ๋น„์‹œํ‚ฌ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค [9, 15]. - **๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฐ ์ง€์—ฐ ์‹œ๊ฐ„:** ์ง์ ‘์ ์ธ ๋™๊ธฐ์‹ ํ˜ธ์ถœ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ‰์‹œ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์ตœ์ข… ์ผ๊ด€์„ฑ(Eventual Consistency) ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ [14, 16], ๋ธŒ๋กœ์ปค๋ฅผ ๊ฑฐ์ณ ๋ฉ”์‹œ์ง€๊ฐ€ ๋ผ์šฐํŒ…๋˜๋Š” ๊ณผ์ •์—์„œ ๋„คํŠธ์›Œํฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„(Latency)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 17]. - **๋””๋ฒ„๊น… ๋ฐ ํ…Œ์ŠคํŠธ ๋‚œ์ด๋„ ์ฆ๊ฐ€:** ์ˆ˜๋งŽ์€ ์„œ๋น„์Šค ๊ฐ„์— ๋น„๋™๊ธฐ์ ์ด๊ณ  ๋ถ„์‚ฐ๋œ ์ด๋ฒคํŠธ ์ „๋‹ฌ์ด ์ผ์–ด๋‚˜๋ฏ€๋กœ, ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ์žฅ์• ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ณผ์ •์ด ๊ธฐ์กด ๋™๊ธฐ ์‹œ์Šคํ…œ๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค [14, 16, 18]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [์•„ํ‚คํ…์ฒ˜ / ๊ธฐ๋ฐ˜ ๊ธฐ์ˆ ] - [[Event-Driven Architecture]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋Š” ์ด๋ฒคํŠธ ์ฃผ๋„ ์•„ํ‚คํ…์ฒ˜์—์„œ ์ด๋ฒคํŠธ๋ฅผ ๋ถ„๋ฐฐํ•˜๋Š” ํ•ต์‹ฌ ์ธํ”„๋ผ(์ด๋ฒคํŠธ ์ฑ„๋„)๋กœ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [1, 2]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ, ์‹ค์‹œ๊ฐ„ ๋ฐ˜์‘ํ˜• ์‹œ์Šคํ…œ์˜ ๋™์ž‘ ์›๋ฆฌ ๋ฐ ๋ธŒ๋กœ์ปค ํ† ํด๋กœ์ง€์™€ ๋ฉ”๋””์—์ดํ„ฐ ํ† ํด๋กœ์ง€์˜ ์ฐจ์ด. - [[Microservices Architecture Pattern]] - ์—ฐ๊ฒฐ ์ด์œ : ๋…๋ฆฝ์ ์ธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„์˜ ๋А์Šจํ•œ ๊ฒฐํ•ฉ์„ ์œ ์ง€ํ•˜๊ณ  ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง•์ด ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [19, 20]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ถ„์‚ฐ ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ์˜ ์„œ๋น„์Šค ์ž์œจ์„ฑ(Autonomy) ๋ฐ ํ†ต์‹  ๋ณ‘๋ชฉ ํ•ด๊ฒฐ ์ „๋žต. #### [๊ตฌํ˜„ / ํ™œ์šฉ ๋„๊ตฌ ๋ฐ ์„ค๊ณ„ ๊ธฐ๋ฒ•] - [[Apache Kafka / RabbitMQ]] - ์—ฐ๊ฒฐ ์ด์œ : ์†Œ์Šค์—์„œ ๋ช…์‹œ์ ์œผ๋กœ ์–ธ๊ธ‰๋œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ์†Œํ”„ํŠธ์›จ์–ด์˜ ์‹ค์ œ ๊ตฌํ˜„์ฒด์ž…๋‹ˆ๋‹ค [1, 5, 13]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์‹ค์ œ ํ(Queue)์™€ ์ŠคํŠธ๋ฆผ(Stream) ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง•์ด ์†Œํ”„ํŠธ์›จ์–ด ๋ ˆ๋ฒจ์—์„œ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ ๋ฐ ์„ค์ •๋˜๋Š”์ง€. - [[CQRS]] - ์—ฐ๊ฒฐ ์ด์œ : ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๋ชจ๋ธ๊ณผ ์“ฐ๋Š” ๋ชจ๋ธ์„ ๋ถ„๋ฆฌํ•˜๋Š” CQRS์—์„œ ๋‘ ๋ชจ๋ธ ๊ฐ„์˜ ๋™๊ธฐํ™” ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๊ฐ€ ํ•„์ˆ˜์ ์œผ๋กœ ์š”๊ตฌ๋ฉ๋‹ˆ๋‹ค [12]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ฐ์ดํ„ฐ ์ง‘์•ฝ์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋กœ์ปค์˜ ์‹ค๋ฌด ์ ์šฉ ๋ฐฉ๋ฒ•. ### Deeper Research Questions - ์ด๋ฒคํŠธ ์ฑ„๋„์„ ํ(Queue)๋กœ ๊ตฌํ˜„ํ•  ๋•Œ์™€ ์ŠคํŠธ๋ฆผ(Stream)์œผ๋กœ ๊ตฌํ˜„ํ•  ๋•Œ์˜ ๊ตฌ์กฐ์  ์ฐจ์ด์ ์€ ๋ฌด์—‡์ด๋ฉฐ, ๊ฐ๊ฐ ์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค(์˜ˆ: ์ด์ปค๋จธ์Šค vs ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ๋ถ„์„)์— ์ ํ•ฉํ•œ๊ฐ€? - ์ค‘์•™ ์ง‘์ค‘ํ˜• ๋ฉ”๋””์—์ดํ„ฐ(Mediator)์™€ ๋‹ฌ๋ฆฌ ๋ธŒ๋กœ์ปค(Broker) ํ† ํด๋กœ์ง€๋งŒ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ํŠธ๋žœ์žญ์…˜ ๋„์ค‘ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ(Error)์˜ ๋กค๋ฐฑ ๋ฐ ๋ณด์ƒ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€? - ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๊ฐ€ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋‹จ์ผ ์žฅ์• ์ (Single Point of Failure)์ด ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ์—์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜๋”๋ ˆ์ด์…˜(Federation) ๋ฐ ํ™•์žฅ ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - ๋™๊ธฐ์  HTTP REST ํ†ต์‹ ๊ณผ ๋น„๊ตํ•˜์—ฌ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹ ์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ์ง€์—ฐ(Latency)๊ณผ ์‹œ์Šคํ…œ ์ „์ฒด ์ฒ˜๋ฆฌ๋Ÿ‰(Throughput)์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ์–ด๋–ป๊ฒŒ ์ธก์ •๋˜๊ณ  ์ตœ์ ํ™”๋˜๋Š”๊ฐ€? - ์ด๋ฒคํŠธ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด๋‚˜ ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•  ๋•Œ, ์ˆ˜๋งŽ์€ ์†Œ๋น„์ž๊ฐ€ ์—ฐ๊ฒฐ๋œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ํ™˜๊ฒฝ์—์„œ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ(Backward compatibility)์„ ์œ ์ง€ํ•˜๋Š” ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? ### Practical Application Contexts - **Implementation:** ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•ด Apache Kafka๋‚˜ RabbitMQ๋ฅผ ์„ค์ •ํ•˜์—ฌ ๋ฐœํ–‰/๊ตฌ๋…(Publish/Subscribe) ์ฑ„๋„์„ ๋งŒ๋“ค๊ณ  ์„œ๋น„์Šค ๋กœ์ง์—์„œ ์ง์ ‘์  API ํ˜ธ์ถœ์„ ๋Œ€์ฒดํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค [1, 2, 5]. - **System Design:** ํŠธ๋ž˜ํ”ฝ ๊ธ‰์ฆ(Spike)์ด ์˜ˆ์ƒ๋˜๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ, ์š”์ฒญ์„ ๋ฐ›์•„๋‚ด๋Š” ์›น ์„œ๋ฒ„์™€ ์š”์ฒญ์„ ์‹ค์ œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์›Œ์ปค(Worker) ์„œ๋ฒ„ ์‚ฌ์ด์— ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค๋ฅผ ๋ฐฐ์น˜ํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ถ€ํ•˜๋ฅผ ๋ฒ„ํผ๋งํ•˜๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค [4, 21, 22]. - **Operation / Maintenance:** ๋ฉ”์‹œ์ง€๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•˜๊ณ  ์Œ“์ด๋Š” ๋ณ‘๋ชฉ ํ˜„์ƒ์„ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„์‚ฐ ์ถ”์ (Distributed tracing) ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•˜๊ณ , ๋ฌธ์ œ ๋ฐœ์ƒ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฉ๋ฆฌ๋œ ๋ฐ๋“œ ๋ ˆํ„ฐ ํ(Dead Letter Queue) ๋˜๋Š” ์—๋Ÿฌ ํ•ธ๋“ค๋Ÿฌ ํ”„๋กœ์„ธ์„œ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [14, 16]. - **Learning Path:** ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํŒจํ„ด์—์„œ์˜ ๋™๊ธฐ ํ†ต์‹  ํ•œ๊ณ„์  ํ•™์Šต -> ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋„์ž…์— ๋”ฐ๋ฅธ ๊ฒฐํ•ฉ๋„ ๋ฌธ์ œ ํŒŒ์•… -> ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋น„๋™๊ธฐ์‹ ์ด๋ฒคํŠธ ์ฃผ๋„ ์•„ํ‚คํ…์ฒ˜ ํ•™์Šต -> ์‹ค์ œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ๊ธฐ์ˆ ๊ณผ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ์ตœ์ ํ™” ๊ธฐ๋ฒ• ์ˆœ์œผ๋กœ ํ•™์Šต์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค [2, 20, 23]. - **My Project Relevance:** ๋‹ค์ˆ˜์˜ ๋ชจ๋“ˆ์ด ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๊ณ ์œ ์˜ ์†๋„์— ๋งž์ถฐ ๋Œ€์šฉ๋Ÿ‰์˜ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ๋ถ„์„, ์•Œ๋ฆผ ์ „์†ก ์‹œ์Šคํ…œ, ์ด์ปค๋จธ์Šค ํŠธ๋žœ์žญ์…˜ ๋“ฑ์˜ ํ”„๋กœ์ ํŠธ ๊ธฐํš ๋ฐ ๊ฐœ๋ฐœ ์‹œ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜์˜ ์ค‘์‹ฌ ์ปดํฌ๋„ŒํŠธ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [21, 24, 25]. ### Adjacent Topics - [[Event Sourcing]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ƒํƒœ๊ฐ€ ์•„๋‹Œ ์ด๋ฒคํŠธ ๋กœ๊ทธ์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ์ €์žฅํ•˜์—ฌ ๊ณผ๊ฑฐ์˜ ํŠน์ • ์‹œ์ ์œผ๋กœ ์ƒํƒœ๋ฅผ ๋ณต์›ํ•˜๊ฑฐ๋‚˜ ๊ฐ์‚ฌ(Audit) ํŠธ๋ ˆ์ผ์„ ๊ตฌํ˜„ํ•˜๋Š” ์„ค๊ณ„ ๊ธฐ๋ฒ•์œผ๋กœ ํ™•์žฅํ•˜์—ฌ ์—ฐ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [26]. - [[Saga Pattern]] - ํ™•์žฅ ๋ฐฉํ–ฅ: ๊ฐ์ž ๋…๋ฆฝ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง€๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค์˜ ์ด๋ฒคํŠธ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ผ๋ จ์˜ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜๊ณผ ์—๋Ÿฌ ๋ณด์ƒ(Compensating transaction)์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„ ํŒจํ„ด์œผ๋กœ ์ง€์‹์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [16, 23]. --- *Last updated: 2026-05-02*