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)