Architecture
Software Architecture
Distributed System
ποΈ[Architecture] Message(λ©μμ§)λ 무μμΌκΉ?
π Intro.
- βοΈ λ©μμ§(Message)λ μμ€ν
, μλΉμ€ λλ μ ν리μΌμ΄μ
κ°μ μ£Όκ³ λ°λ λ°μ΄ν° λ¨μμ
λλ€.
- βοΈ μ£Όλ‘ νλμ μμ€ν
μ΄ λ€λ₯Έ μμ€ν
μ μ 보, λͺ
λ Ή, μ΄λ²€νΈ, μν, λ°μ΄ν°λ₯Ό μ λ¬ν λ μ¬μ©λ©λλ€.
1οΈβ£ λ©μμ§(Message)μ κΈ°λ³Έ κ°λ
.
- π― μ μ : μλ‘ λ€λ₯Έ μμ€ν
κ°μ μ£Όκ³ λ°λ λ°μ΄ν° ν¨ν· λλ μ 보 λ¨μ.
- π― μν : μμ€ν
κ°μ λͺ
ννκ³ κ΅¬μ‘°νλ λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ λ¬.
- π― νν : ν
μ€νΈ, JSON, XML, λ°μ΄λ리 λ°μ΄ν° λ± λ€μν ννλ‘ μ‘΄μ¬ν μ μμ.
2οΈβ£ λ©μμ§(Message)μ κ΅¬μ± μμ.
-
1οΈβ£ ν€λ(Header)
- βοΈ λ©μμ§μ λ©νλ°μ΄ν° (μ: ID, νμμ€ν¬ν, λ°μ μ, μμ μ)
- βοΈ λ©μμ§ λΌμ°ν
λ° μ°μ μμ μ 보 ν¬ν¨
-
2οΈβ£ λ³Έλ¬Έ(Body)
- βοΈ μ€μ μ λ¬νλ €λ λ°μ΄ν° (μ: μ¬μ©μ μμ², κ²°κ³Ό κ°, μν μ 보)
- βοΈ JSON, XML, Plain Text, λ°μ΄λ리 λ± λ€μν νν
-
3οΈβ£ μμ±(Properties)
- βοΈ μΆκ°μ μΈ λ©νλ°μ΄ν° (μ: λ©μμ§ νμ
, λ§λ£ μκ° λ±)
3οΈβ£ λ©μμ§(Message)μ μμ.
- π 1. μ΄λ²€νΈ(Event) κΈ°λ° λ©μμ§
- βοΈ μ€λͺ
: νΉμ μμ€ν
μμ λ°μν μ΄λ²€νΈλ₯Ό λ€λ₯Έ μμ€ν
μ μ리λ μ©λ.
- βοΈ μμ : μ£Όλ¬Έ μμ€ν
β βμ£Όλ¬Έμ΄ μλ£λμμ΅λλ€.β
- π 2. λͺ
λ Ή(Command) κΈ°λ° λ©μμ§
- βοΈ μ€λͺ
: ν μμ€ν
μ΄ λ€λ₯Έ μμ€ν
μ νΉμ μμ
μ μ§μ.
- βοΈ μμ : μ¬μ©μ μλΉμ€ β βμ¬μ©μ νλ‘νμ μ
λ°μ΄νΈνμΈμ.β
- π 3. μμ²/μλ΅(Request/Response) λ©μμ§
- βοΈ μ€λͺ
: μμ²μ 보λ΄κ³ , κ·Έμ λν μλ΅μ λ°μ.
- βοΈ μμ : ν΄λΌμ΄μΈνΈ β βμ£Όλ¬Έ μνλ₯Ό νμΈν΄μ£ΌμΈμ.β, μλ² β βμ£Όλ¬Έμ΄ λ°°μ‘ μ€μ
λλ€.β
- π 4. λ°μ΄ν° μ λ¬ λ©μμ§
- βοΈ μ€λͺ
: μμ€ν
κ° λ°μ΄ν° μ λ¬.
- βοΈ μμ : κ²°μ μλΉμ€ β βκ²°μ μλ£ μ 보λ₯Ό μ μ‘ν©λλ€.β
4οΈβ£ λ©μμ§(Message)μ μ€μμ±.
-
1οΈβ£ λΉλκΈ° ν΅μ μ§μ : μμ€ν
μ΄ μ¦κ°μ μΈ μλ΅μ κΈ°λ€λ¦¬μ§ μκ³ λ
립μ μΌλ‘ μλ.
-
2οΈβ£ μμ€ν
κ°μ λμ¨ν κ²°ν©(Loose Coupling) : ν μμ€ν
μ΄ λ€λ₯Έ μμ€ν
μ μνλ μΈλΆμ¬νμ λͺ°λΌλ μνΈμμ© κ°λ₯.
-
3οΈβ£ νμ₯μ±(Scalability) : μμ€ν
μΆκ° λ° λ³κ²½ μ μ΅μνμ μν₯.
-
4οΈβ£ μμ μ±(Reliability) : λ©μμ§λ₯Ό μμ νκ² μ μ₯ λ° μ λ¬.
5οΈβ£ λ©μμ§(Message) μμ μλ리μ€.
- π μΌνλͺ° μ£Όλ¬Έ μ²λ¦¬ μμ
- βοΈ 1. μ¬μ©μ μλΉμ€ : βμ¬μ©μκ° μ£Όλ¬Έμ μμ±νμ΅λλ€.β β λ©μμ§ λΈλ‘μ»€λ‘ λ©μμ§ μ μ‘
- βοΈ 2. κ²°μ μλΉμ€ : λ©μμ§ λΈλ‘컀λ‘λΆν° λ©μμ§ μμ β κ²°μ μ²λ¦¬ μμ
- βοΈ 3. λ°°μ‘ μλΉμ€ : λ©μμ§ λΈλ‘컀λ‘λΆν° κ²°μ μλ£ λ©μμ§ μμ β λ°°μ‘ μ²λ¦¬ μμ
6οΈβ£ λ©μμ§ λΈλ‘컀μμμ λ©μμ§.
- π― λ°ν(Publish) : λ©μμ§λ₯Ό λΈλ‘컀μ 보λ.
- π― ꡬλ
(Subscribe) : λΈλ‘컀λ‘λΆν° νΉμ μ£Όμ μ λ©μμ§λ₯Ό μμ .
- π― λΌμ°ν
(Routing) : λΈλ‘μ»€κ° λ©μμ§λ₯Ό μ¬λ°λ₯Έ λμμκ² μ λ¬.
π κ²°λ‘ .
- βοΈ λ©μμ§(Message)λ μμ€ν
κ° ν΅μ μ μν λ°μ΄ν° λ¨μ.
- βοΈ μ£Όμ μν : μ 보 μ λ¬, μν μ
λ°μ΄νΈ, μ΄λ²€νΈ μλ¦Ό, λͺ
λ Ή μ€ν.
- βοΈ μ€μμ± : λΉλκΈ° ν΅μ , λμ¨ν κ²°ν©, νμ₯μ± λ³΄μ₯.
- π λ©μμ§(Message)λ λ©μμ§ λΈλ‘컀(Message Broker)λ₯Ό ν΅ν΄ μμ νκ³ ν¨μ¨μ μΌλ‘ μ‘μμ λλ©°, λ€μν μμ€ν
κ°μ ν΅ν© λ° νλ ₯μ κ°λ₯νκ² ν¨.