Home > Architecture > πŸ—οΈ[Architecture] Message(λ©”μ‹œμ§€)λž€ λ¬΄μ—‡μΌκΉŒ?

πŸ—οΈ[Architecture] Message(λ©”μ‹œμ§€)λž€ λ¬΄μ—‡μΌκΉŒ?
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)λ₯Ό 톡해 μ•ˆμ „ν•˜κ³  효율적으둜 μ†‘μˆ˜μ‹ λ˜λ©°, λ‹€μ–‘ν•œ μ‹œμŠ€ν…œ κ°„μ˜ 톡합 및 ν˜‘λ ₯을 κ°€λŠ₯ν•˜κ²Œ 함.