Home > Architecture > πŸ—οΈ[Architecture] 큐(Queue)와 ν† ν”½(Topic)?

πŸ—οΈ[Architecture] 큐(Queue)와 ν† ν”½(Topic)?
Architecture Software Architecture Distributed System System Design

πŸ—οΈ[Architecture] 큐(Queue)와 ν† ν”½(Topic)?

πŸ“Œ Intro.

  • β†˜οΈŽ λ©”μ‹œμ§€ 브둜컀(Message Broker)λŠ” 큐(Queue)와 ν† ν”½(Topic)μ΄λΌλŠ” 두 가지 μ£Όμš” λ°©μ‹μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.
    • β†˜οΈŽ 이 두 방식은 전솑 방식, μˆ˜μ‹ μž 수, μ‚¬μš© μ‚¬λ‘€μ—μ„œ 차이λ₯Ό λ³΄μž…λ‹ˆλ‹€.

βœ…1️⃣ 큐(Queue)

  • μ„€λͺ…:
    • β†˜οΈŽ 큐(Queue)λŠ” λ©”μ‹œμ§€λ₯Ό 일렬둜 μ €μž₯ν•˜λŠ” ꡬ쑰
    • β†˜οΈŽ λ©”μ‹œμ§€λŠ” ν•œ 번만 μ†ŒλΉ„λ˜λ©°, 단일 μ†ŒλΉ„μž(Single Consumer)κ°€ 이λ₯Ό μ²˜λ¦¬ν•¨.
    • β†˜οΈŽ FIFO(First-In-First-Out) λ°©μ‹μœΌλ‘œ λ©”μ‹œμ§€λ₯Ό 전달.
    • β†˜οΈŽ ν•œ λ©”μ‹œμ§€λŠ” ν•˜λ‚˜μ˜ μ†ŒλΉ„μžλ§Œ μ²˜λ¦¬ν•  수 있음.
  • νŠΉμ§•:
    • β†˜οΈŽ 단일 μ†ŒλΉ„μž νŒ¨ν„΄ : ν•˜λ‚˜μ˜ λ©”μ‹œμ§€λŠ” ν•œ 번만 처리 됨.
    • β†˜οΈŽ μˆœμ„œ 보μž₯ : λ©”μ‹œμ§€λŠ” μ‚½μž…λœ μˆœμ„œλŒ€λ‘œ 전달됨.
    • β†˜οΈŽ λΆ€ν•˜ λΆ„μ‚° : μ—¬λŸ¬ μ†ŒλΉ„μžκ°€ λ™μ‹œμ— 큐에 μ—°κ²°λ˜λ©΄, λ©”μ‹œμ§€κ°€ λΆ„μ‚°λ˜μ–΄ 처리됨.
  • μ‚¬μš© 사둀:
    • β†˜οΈŽ μž‘μ—… λŒ€κΈ°μ—΄(Task Queue) : λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…, 이메일 전솑, λΉ„λ””μ˜€ 인코딩 λ“±.
    • β†˜οΈŽ 단일 λ©”μ‹œμ§€ 처리 : ν•œ 번만 μ²˜λ¦¬ν•΄μ•Ό ν•˜λŠ” μž‘μ—….
  • μ˜ˆμ‹œ 기술:
    • β†˜οΈŽ Amazon SQS (Simple Queue Service)
    • β†˜οΈŽ RabbitMQ (Queue λͺ¨λ“œ)
    • β†˜οΈŽ Apache Active MQ

βœ…2️⃣ ν† ν”½(Topic)

  • μ„€λͺ…:
    • β†˜οΈŽ 토픽은 λ°œν–‰-ꡬ독(Pub/Sub) λͺ¨λΈμ„ μ‚¬μš©.
    • β†˜οΈŽ ν•˜λ‚˜μ˜ λ©”μ‹œμ§€κ°€ μ—¬λŸ¬ κ΅¬λ…μž(Subscribers)μ—κ²Œ λ™μ‹œμ— 전달 될 수 있음.
    • β†˜οΈŽ λ©”μ‹œμ§€λŠ” 주제(Topic)에 κ²Œμ‹œλ˜κ³ , ν•΄λ‹Ή 주제(Topic)λ₯Ό ꡬ독(Subscribe)ν•œ λͺ¨λ“  κ΅¬λ…μž(Subscribers)κ°€ λ©”μ‹œμ§€λ₯Ό λ°›μŒ.
  • νŠΉμ§•:
    • β†˜οΈŽ 닀쀑 μ†ŒλΉ„μž νŒ¨ν„΄ : ν•˜λ‚˜μ˜ λ©”μ‹œμ§€κ°€ μ—¬λŸ¬ μ†ŒλΉ„μžμ—κ²Œ λ™μ‹œμ— 전달됨.
    • β†˜οΈŽ μœ μ—°ν•œ ꡬ독 λͺ¨λΈ : 각 κ΅¬λ…μžλŠ” νŠΉμ • 토픽을 ν•„ν„°λ§ν•˜μ—¬ 관심 μžˆλŠ” λ©”μ‹œμ§€λ§Œ μˆ˜μ‹ ν•  수 있음.
    • β†˜οΈŽ λΈŒλ‘œλ“œ 캐슀트 : λ©”μ‹œμ§€κ°€ μ—¬λŸ¬ μˆ˜μ‹ μžμ—κ²Œ λ™μ‹œμ— 전달됨.
  • μ‚¬μš© 사둀:
    • β†˜οΈŽ 이벀트 μ•Œλ¦Ό : μ£Όλ¬Έ μ™„λ£Œ μ•Œλ¦Ό, μ‚¬μš©μž κ°€μž… μ•Œλ¦Ό λ“±
    • β†˜οΈŽ μ‹€μ‹œκ°„ 데이터 슀트리밍 : μ‹€μ‹œκ°„ 가격 정보, 둜그 μˆ˜μ§‘ λ“±
    • β†˜οΈŽ 닀쀑 μ‹œμŠ€ν…œ 동기화 : μ—¬λŸ¬ μ„œλΉ„μŠ€ κ°„ 동기화가 ν•„μš”ν•  λ•Œ
  • μ˜ˆμ‹œ 기술:
    • β†˜οΈŽ Apache Kafka(Topic 기반 λ©”μ‹œμ§•)
    • β†˜οΈŽ Amazon SNS(Simple Notification Service)
    • β†˜οΈŽ RabbitMQ(Topic Exchange λͺ¨λ“œ)

βœ…3️⃣ 큐(Queue) vs ν† ν”½(Topic) 비ꡐ.

ꡬ뢄 큐(Queue) ν† ν”½(Topic)
λ©”μ‹œμ§€ μ†ŒλΉ„ ν•œ λ©”μ‹œμ§€λŠ” ν•˜λ‚˜μ˜ μ†ŒλΉ„μžλ§Œ 처리 ν•œ λ©”μ‹œμ§€λŠ” μ—¬λŸ¬ κ΅¬λ…μžμ—κ²Œ 전달
톡신 방식 Point-to-Point(P2P) Publish-Subscribe(Pub/Sub)
μˆœμ„œ 보μž₯ FIFO μˆœμ„œ 보μž₯ μˆœμ„œλŠ” 보μž₯λ˜μ§€ μ•Šμ„ μˆ˜λ„ 있음
μ‚¬μš© 사둀 λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…, 비동기 μš”μ²­ 처리 μ‹€μ‹œκ°„ μ•Œλ¦Ό, λΈŒλ‘œλ“œμΊμŠ€νŠΈ 이벀트
ꡬ성 μš”μ†Œ Producer ➞ Queue ➞ Consumer Producer ➞ Topic ➞ Subscribers

βœ…4️⃣ μš”μ•½.

  • 1. 큐(Queue):
    • λ©”μ‹œμ§€λ₯Ό 단일 μ†ŒλΉ„μžμ—κ²Œ 전달
    • μˆœμ„œ 보μž₯(FIFO)
    • μ‚¬μš© 사둀: λ°±κ·ΈλΌμš΄λ“œ μž‘μ—…, μž‘μ—… λŒ€κΈ°μ—΄
  • 2. ν† ν”½(Topic):
    • λ©”μ‹œμ§€λ₯Ό μ—¬λŸ¬ κ΅¬λ…μžμ—κ²Œ λ™μ‹œμ— 전달
    • λΈŒλ‘œλ“œμΊμŠ€νŠΈ 및 μ‹€μ‹œκ°„ 이벀트 처리
    • μ‚¬μš© 사둀: μ‹€μ‹œκ°„ μ•Œλ¦Ό, 이벀트 μ•Œλ¦Ό

βœ…5️⃣ 핡심 포인트.

  • 큐(Queue) : ν•˜λ‚˜μ˜ λ©”μ‹œμ§€λŠ” ν•œ 번만 μ†ŒλΉ„λ¨(단일 μ†ŒλΉ„μž)
  • ν† ν”½(Topic) : ν•˜λ‚˜μ˜ λ©”μ‹œμ§€λŠ” μ—¬λŸ¬ μ†ŒλΉ„μžμ—κ²Œ λ™μ‹œμ— 전달됨(닀쀑 κ΅¬λ…μž)

πŸ‘‰ μ˜¬λ°”λ₯Έ 선택:

  • μž‘μ—… λŒ€κΈ°μ—΄, λ°±κ·ΈλΌμš΄λ“œ 처리 ➞ 큐(Queue)
  • 이벀트 λΈŒλ‘œλ“œμΊμŠ€νŠΈ, μ‹€μ‹œκ°„ μ•Œλ¦Ό ➞ ν† ν”½(Topic)