πŸ“‘

Publish-Subscribe

λ©”μ‹œμ§€ 브둜컀λ₯Ό ν†΅ν•œ 비동기 톡신

Pub/Sub νŒ¨ν„΄μ—μ„œ λ°œν–‰μžμ™€ κ΅¬λ…μžλŠ” μ„œλ‘œλ₯Ό 직접 μ•Œμ§€ λͺ»ν•©λ‹ˆλ‹€. λ©”μ‹œμ§€ 브둜컀(쀑간 계측)κ°€ λ©”μ‹œμ§€λ₯Ό κ΄€λ¦¬ν•˜λ©°, ν† ν”½ 기반으둜 λ©”μ‹œμ§€λ₯Ό λΆ„λ°°ν•©λ‹ˆλ‹€.

ꡬ쑰 λ‹€μ΄μ–΄κ·Έλž¨

πŸ“
Publisher
λ©”μ‹œμ§€ λ°œν–‰μž
β‘  λ°œν–‰
πŸ“‘
Message Broker
ν† ν”½ 관리 + λ©”μ‹œμ§€ λΆ„λ°°
Topic A Topic B
β‘‘ λΆ„λ°°
πŸ“₯
Subscriber A
πŸ“₯
Subscriber B
πŸ“₯
Subscriber C
흐름 μ„€λͺ…
  1. κ΅¬λ…μžκ°€ 관심 토픽을 λΈŒλ‘œμ»€μ— 등둝 (ꡬ독)
  2. λ°œν–‰μžκ°€ λ©”μ‹œμ§€λ₯Ό νŠΉμ • ν† ν”½μœΌλ‘œ λ°œν–‰
  3. λΈŒλ‘œμ»€κ°€ ν•΄λ‹Ή ν† ν”½μ˜ λͺ¨λ“  κ΅¬λ…μžμ—κ²Œ λ©”μ‹œμ§€ λΆ„λ°°
  4. 각 κ΅¬λ…μžκ°€ λ…λ¦½μ μœΌλ‘œ λ©”μ‹œμ§€ 처리

λ™μž‘ 흐름

1

κ΅¬λ…μžκ°€ λ©”μ‹œμ§€ 브둜컀의 νŠΉμ • 토픽을 ꡬ독

2

λ°œν–‰μžκ°€ λ©”μ‹œμ§€λ₯Ό νŠΉμ • ν† ν”½μœΌλ‘œ λ°œν–‰

3

λ©”μ‹œμ§€ λΈŒλ‘œμ»€κ°€ ν•΄λ‹Ή ν† ν”½μ˜ λͺ¨λ“  κ΅¬λ…μžμ—κ²Œ λ©”μ‹œμ§€ λΆ„λ°°

4

각 κ΅¬λ…μžκ°€ λ…λ¦½μ μœΌλ‘œ λ©”μ‹œμ§€ 처리

μž₯점

  • λ°œν–‰μž-κ΅¬λ…μž κ°„ λŠμŠ¨ν•œ κ²°ν•©
  • ν™•μž₯μ„± 뛰어남
  • 비동기 처리 κ°€λŠ₯
  • λ‹€μˆ˜μ˜ κ΅¬λ…μžμ—κ²Œ λ™μ‹œ 전달

단점

  • λ©”μ‹œμ§€ 브둜컀 의쑴
  • λ©”μ‹œμ§€ μˆœμ„œ 보μž₯ 볡작
  • 디버깅 어렀움
  • λ©”μ‹œμ§€ μœ μ‹€ κ°€λŠ₯μ„±

μ‚¬μš© 사둀

Redis Pub/Sub Apache Kafka AWS SNS/SQS Google Cloud Pub/Sub RabbitMQ