Home > Architecture > πŸ—οΈ[Architecture] 이벀트 브둜컀(Event Broker)λž€ λ¬΄μ—‡μΌκΉŒ?

πŸ—οΈ[Architecture] 이벀트 브둜컀(Event Broker)λž€ λ¬΄μ—‡μΌκΉŒ?
Architecture Software Architecture Distributed System

πŸ—οΈ[Architecture] 이벀트 브둜컀(Event Broker)λž€ λ¬΄μ—‡μΌκΉŒ?

πŸ“Œ Intro.

  • β†˜οΈŽ 이벀트 브둜컀(Event Broker)λŠ” μ‹œμŠ€ν…œμ΄λ‚˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 산에 이벀트(Event)λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „λ‹¬ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” μ€‘κ°œμž 역할을 ν•˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄.
    • β†˜οΈŽ 주둜 이벀트 쀑심 μ•„ν‚€ν…μ²˜(Event-Driven Architecture, EDA)μ—μ„œ μ‚¬μš©λ˜λ©°, 비동기식 톡신과 μ‹œμŠ€ν…œκ°„μ˜ λŠμŠ¨ν•œ κ²°ν•©(Loose Coupling)을 지원함.

βœ…1️⃣ 이벀트(Event)λž€?

  • β†˜οΈŽ 이벀트(Event)λŠ” μ‹œμŠ€ν…œ λ‚΄μ—μ„œ λ°œμƒν•œ νŠΉμ • μƒν™©μ΄λ‚˜ λ³€κ²½ 사항을 μ˜λ―Έν•¨.
  • β†˜οΈŽ 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ 주문을 μƒμ„±ν–ˆμ„ λ•Œ(Order Created), μƒν’ˆ μž¬κ³ κ°€ λΆ€μ‘±ν•  λ•Œ(Stock Depleted) 등이 이벀트(Event)μž„.

βœ…2️⃣ 이벀트 브둜컀의 μ—­ν• .

  • 1. 이벀트 μˆ˜μ§‘(Event Ingestion)
    • β†˜οΈŽ λ‹€μ–‘ν•œ μ†ŒμŠ€(μ• ν”Œλ¦¬μΌ€μ΄μ…˜, μ„œλΉ„μŠ€ IoT μž₯치 λ“±)둜 λΆ€ν„° 이벀트λ₯Ό μˆ˜μ§‘ν•¨.
  • 2. 이벀트 λΌμš°νŒ…(Event Routing)
    • β†˜οΈŽ νŠΉμ • 쑰건에 따라 μ μ ˆν•œ λŒ€μƒ(ꡬ쑱자, μ„œλΉ„μŠ€)μ—κ²Œ 이벀트λ₯Ό 전달함.
  • 3. 이벀트 νμž‰(Event Queuing)
    • β†˜οΈŽ 이벀트λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜μ—¬ 이벀트 손싀을 λ°©μ§€ν•©λ‹ˆλ‹€.
  • 4. 비동기 처리(Asynchronous Processing)
    • β†˜οΈŽ 이벀트λ₯Ό λ°œν–‰ν•œ μ‹œμŠ€ν…œκ³Ό μ†ŒλΉ„ν•˜λŠ” μ‹œμŠ€ν…œμ΄ λ…λ¦½μ μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.
  • 5. ν™•μž₯μ„±(Scalability)
    • β†˜οΈŽ λ§Žμ€ μ–‘μ˜ 이벀트λ₯Ό λ™μ‹œμ— μ²˜λ¦¬ν•  수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€.
  • 6. 내ꡬ성(Durability)
    • β†˜οΈŽ μ΄λ²€νŠΈκ°€ μ†μ‹€λ˜μ§€ μ•Šλ„λ‘ μ•ˆμ „ν•˜κ²Œ μ €μž₯ν•©λ‹ˆλ‹€.

βœ…3️⃣ 이벀트 브둜컀의 λ™μž‘ 방식.

  • 1. 이벀트 λ°œν–‰(Publish)
    • β†˜οΈŽ 이벀트 μƒμ‚°μž(Producer)κ°€ 이벀트 λΈŒλ‘œμ»€μ— 이벀트λ₯Ό λ°œν–‰ν•¨.
  • 2. 이벀트 μ €μž₯(Store)
    • β†˜οΈŽ 이벀트 λΈŒλ‘œμ»€λŠ” 받은 이벀트λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ μΌμ‹œμ μœΌλ‘œ 보관함.
  • 3. 이벀트 λΌμš°νŒ…(Routing)
    • β†˜οΈŽ μ €μž₯된 이벀트λ₯Ό κ·œμΉ™μ— 따라 νŠΉμ • κ΅¬λ…μž(Consumer)μ—κ²Œ 전달함.
  • 4. 이벀트 μ†ŒλΉ„(Consume)
    • β†˜οΈŽ 이벀트 μ†ŒλΉ„μž(Consumer)κ°€ 이벀트λ₯Ό λ°›μ•„ μ²˜λ¦¬ν•¨.

βœ…4️⃣ 이벀트 브둜컀(Event Broker) vs λ©”μ‹œμ§€ 브둜컀(Message Broker)

ꡬ뢄 이벀트 브둜컀(Event Broker) λ©”μ‹œμ§€ 브둜컀(Message Broker)
μ£Όμš” κ°œλ… 이벀트(Event)λ₯Ό 전달 λ©”μ‹œμ§€(Message)λ₯Ό 전달
λ°œμƒ μ‹œμ  μ‹œμŠ€ν…œμ—μ„œ μƒνƒœ 변경이 λ°œμƒν•  λ•Œ μ‹œμŠ€ν…œ κ°„ 톡신이 ν•„μš”ν•  λ•Œ
λͺ¨λΈ 주둜 Pub/Sub (νΌλΈ”λ¦¬μ‹œ-μ„œλΈŒμŠ€ν¬λΌμ΄λΈŒ) 주둜 P2P (포인트-투-포인트)
μ˜ˆμ‹œ Apache Kafka, AWS EventBridge RabbitMQ, AWS SQS
μ£Όμš” μ‚¬μš© 사둀 이벀트 슀트림 처리, μ‹€μ‹œκ°„ 뢄석 비동기 μž‘μ—… 처리, 큐 기반 톡신

βœ…5️⃣ 이벀트 브둜컀의 μ£Όμš” νŠΉμ§•.

  • 1. Publisher-Subscriber νŒ¨ν„΄(Pub/Sub)
    • β†˜οΈŽ 이벀트 λ°œν–‰μžλŠ” 이벀트λ₯Ό λΈŒλ‘œμ»€μ— μ „λ‹¬ν•˜κ³ , κ΅¬λ…μžλŠ” 관심 μžˆλŠ” 이벀트λ₯Ό μˆ˜μ‹ ν•¨.
  • 2. 비동기 톡신
    • β†˜οΈŽ μ΄λ²€νŠΈκ°€ 브둜컀λ₯Ό 톡해 μ „λ‹¬λ˜λ―€λ‘œ μ‹œμŠ€ν…œ κ°„ 동기화가 ν•„μš”ν•˜μ§€ μ•ŠμŒ.
  • 3. λŠμŠ¨ν•œ κ²°ν•©(Loose Coupling)
    • β†˜οΈŽ μƒμ‚°μžμ™€ μ†ŒλΉ„μžλŠ” μ„œλ‘œ 직접 μ—°κ²°λ˜μ§€ μ•Šκ³  브둜컀λ₯Ό 톡해 톡신함.
  • 4. 이벀트 μ†Œμ‹±(Event Sourcing)
    • β†˜οΈŽ λͺ¨λ“  이벀트λ₯Ό κΈ°λ‘ν•˜κ³  ν•„μš”ν•  λ•Œ μž¬μƒν•  수 있음.
  • 5. ν™•μž₯μ„± 및 μ‹ λ’°μ„±
    • β†˜οΈŽ 수백만 개의 이벀트λ₯Ό μ²˜λ¦¬ν•  수 있고, 이벀트 손싀을 방지함.

βœ…6️⃣ 이벀트 브둜컀의 μ‚¬μš© 사둀.

  • 1. μ‹€μ‹œκ°„ 데이터 처리.
    • β†˜οΈŽ μ‹€μ‹œκ°„ 거래, μ‚¬μš©μž ν™œλ™ 둜그 처리.
  • 2. λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜.
    • β†˜οΈŽ μ„œλ‘œ λ…λ¦½λœ μ„œλΉ„μŠ€ κ°„μ˜ 이벀트 전달.
  • 3. IoT 데이터 슀트림.
    • β†˜οΈŽ IoT μž₯μΉ˜λ‘œλΆ€ν„° λŒ€λŸ‰μ˜ 데이터λ₯Ό μˆ˜μ§‘ 및 뢄석.
  • 4. μ•Œλ¦Ό μ‹œμŠ€ν…œ(Notification System).
    • β†˜οΈŽ 이벀트 λ°œμƒ μ‹œ μ‚¬μš©μžμ—κ²Œ μ•Œλ¦Ό 전솑.
  • 5. 데이터 νŒŒμ΄ν”„λΌμΈ(Data Pipeline).
    • β†˜οΈŽ 데이터 처리 단계 κ°„ 이벀트 전달.

βœ…7️⃣ λŒ€ν‘œμ μΈ 이벀트 브둜컀 도ꡬ.

이벀트 브둜컀 μ£Όμš” νŠΉμ§•
Apache Kafka λŒ€λŸ‰μ˜ 데이터 슀트림, 높은 μ²˜λ¦¬λŸ‰
AWS EventBridge AWS μ„œλΉ„μŠ€ κ°„ 이벀트 톡합
Google Cloud Pub/Sub μ‹€μ‹œκ°„ λ©”μ‹œμ§• 및 데이터 슀트림
Azure Event Hubs λŒ€μš©λŸ‰ 데이터 μˆ˜μ§‘ 및 뢄석
RabbitMQ 이벀트 및 λ©”μ‹œμ§€ 큐 지원

βœ…8️⃣ 이벀트 브둜컀λ₯Ό μ‚¬μš©ν•  λ•Œμ˜ 고렀사항.

  • 1. μ²˜λ¦¬λŸ‰(Throughput):
    • β†˜οΈŽ μ–Όλ§ˆλ‚˜ λ§Žμ€ 이벀트λ₯Ό λ™μ‹œμ— μ²˜λ¦¬ν•  수 μžˆλŠ”κ°€?
  • 2. μ§€μ—° μ‹œκ°„(Latency):
    • β†˜οΈŽ μ΄λ²€νŠΈκ°€ μ–Όλ§ˆλ‚˜ λΉ λ₯΄κ²Œ μ „λ‹¬λ˜λŠ”κ°€?
  • 3. μ‹ λ’°μ„±(Reliability):
    • β†˜οΈŽ μ΄λ²€νŠΈκ°€ μ†μ‹€λ˜μ§€ μ•ŠλŠ”κ°€?
  • 4. ν™•μž₯μ„±(Scalability):
    • β†˜οΈŽ μ¦κ°€ν•˜λŠ” 이벀트 수λ₯Ό μ²˜λ¦¬ν•  수 μžˆλŠ”κ°€?
  • 5. λ³΄μ•ˆ(Security):
    • β†˜οΈŽ 이벀트 λ°μ΄ν„°λŠ” μ•ˆμ „ν•˜κ²Œ λ³΄ν˜Έλ˜λŠ”κ°€?

βœ…9️⃣ 이벀트 브둜컀 λ„μž…μ˜ 이점.

  • 1. μ‹œμŠ€ν…œ κ°„ λŠμŠ¨ν•œ κ²°ν•©.
  • 2. ν™•μž₯μ„± 및 μœ μ—°μ„±.
  • 3. κ³ κ°€μš©μ„±(High Availability)
  • 4. 비동기 이벀트 처리
  • 5, μ‹€μ‹œκ°„ 데이터 뢄석 및 처리

πŸš€ κ²°λ‘ 

  • 이벀트 브둜컀(Event Broker)λŠ” μ‹œμŠ€ν…œ κ°„ 이벀트λ₯Ό μ•ˆμ „ν•˜κ²Œ μ „λ‹¬ν•˜κ³  λΌμš°νŒ…ν•˜λŠ” 쀑앙 ν—ˆλΈŒ 역할을 함.
  • Apache Kafka, AWS EventBridge, Google Cloud Pub/Sub 등이 λŒ€ν‘œμ μΈ 이벀트 브둜컀.
  • 이벀트 브둜컀λ₯Ό λ„μž…ν•¨μœΌλ‘œμ¨ ν™•μž₯μ„±, μœ μ—°μ„±, 신뒰성을 확보할 수 있음.

πŸ”‘ 핡심 μš”μ•½

  • 이벀트 λΈŒλ‘œμ»€λž€? : 이벀트 쀑심 톡신을 μ€‘μž¬ν•˜λŠ” μ‹œμŠ€ν…œ.
  • μ£Όμš” νŠΉμ§• : 비동기 처리, ν™•μž₯μ„±, μ‹ λ’°μ„±.
  • μ‚¬μš© 사둀 : μ‹€μ‹œκ°„ 데이터 처리, 마이크둜 μ„œλΉ„μŠ€ 톡신.