λͺ©μ°¨
- λ―Έλ€μ¨μ΄λ?
- MOM μ΄λ?
- MOM ꡬμ±μμ
- MOM vs without MOM
- Messaging μ 2κ°μ§ λ°©μ
- PTP Messaging
- Pub/Sub Messaging
- Message Broker
- λνμ μΈ MOM μ루μ
μ€λμ μμ¦ λ§μ λΆμΌμμ μ±νλμ΄ μ¬μ©λκ³ μλ Message Oriented Middleware μ λν΄μ μμλ³΄λ € νλ€.
Message Oriented Middleware, MOM μ΄λ νλμ μννΈμ¨μ΄λ μ루μ 보λ€λ λ μμ κ°λ μΌλ‘ μν€ν μ² ν¨ν΄μ΄λ νλ‘κ·Έλλ° κΈ°λ²μ ν΄λΉνλ€κ³ μκ°νλ€.
λ¬Όλ‘ MOMμ μν€νΌλμμμλ μμ© μννΈμ¨μ΄ κ°μ λ°μ΄ν° ν΅μ μ μν μννΈμ¨μ΄λΌκ³ λΆλ₯΄μ§λ§ μ°λ¦¬λ μ‘°κΈ λ ν° κ°λ μμ μ΄ν΄ν΄λ³΄μ.
μ΄λ° MOM μ μ΄ν΄νκΈ° μν΄μλ μ°μ Middlewareμ λν μ΄ν΄κ° μ νλμ΄μΌ νλ€.
κ°λ¨νκ² λ―Έλ€μ¨μ΄κ° 무μμΈμ§ μμ보λλ‘ νμ.
Middleware, λ―Έλ€μ¨μ΄ λ?
λ―Έλ€μ¨μ΄λ λ¨μ΄ λ» κ·Έλλ‘ μ€κ°μ μ‘΄μ¬νλ μ νμ μλ―Ένλ€.
λ―Έλ€μ¨μ΄λ μ²μ λ€μ΄λ³΄μμ μλ μκ³ μ΄λ―Έ μ΅μν μλ μμ§λ§ μ°λ¦¬λ μ΄λ―Έ λ―Έλ€μ¨μ΄λ₯Ό μ¬μ©νκ³ μμ μλ μλ€.
λ°±μλ κ°λ°μ ν΄λ³΄μλ€λ©΄ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©ν΄ λ°μ΄ν°μ μμμ±μ κ΄λ¦¬νμ κ²μ΄λ€.
μ΄ λ°μ΄ν°λ² μ΄μ€μ ODBC, JDBC λ±λ± μ΄ λ°λ‘ λ―Έλ€μ¨μ΄μ ν μ’ λ₯λΌκ³ λ³Ό μ μλ€.
λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°λ² μ΄μ€ λ²€λμμ μ 곡νλ ν΄λΌμ΄μΈνΈμμ μ격μΌλ‘ DBμ μ°κ²°νκΈ° μν λ―Έλ€μ¨μ΄λΌκ³ νλλ°, μ°λ¦¬κ° μκ³ μλ κ°μ₯ μ λͺ ν λ―Έλ€μ¨μ΄λ μμμ μ΄μΌκΈ°νλ κ² μ²λΌ JDBCκ° μλ€.
Javaλ‘ μλ₯Ό λ€μ΄ 보μ.
μ°λ¦¬λ JDBC νλ‘κ·Έλλ°μ νλ©΄μ νΉμ JPA νλ‘κ·Έλλ°μ νλ©΄μ SQLμ μ§μ νΉμ κ°μ μ μΌλ‘ (κ°μ²΄ νμ μΌλ‘) μ§λλΌλ JDBC Template μ΄ μμμ DBμ λ§κ² λ³νμ μμΌμ£Όλλ°, μ΄ λ μ¬μ©λλ κ²μ΄ λ°λ‘ λ―Έλ€μ¨μ΄μΈ JDBC μ΄λ€.
μ°λ¦¬λ μ€μ SQL μ κ΄λ ¨λ μΈν μ μ§μ νμ§ μλλΌλ μ΄λμ λ λ―Έλ€μ¨μ΄κ° μ΄λ₯Ό ν΄κ²°ν΄μ£Όμ΄ νΈλ¦¬νκ² μ¬μ©ν μ μκ² λλ κ²μ΄λ€.
μΌλ¨ μ΄ λ―Έλ€μ¨μ΄μ λν΄μ λ¨Όμ μ°λ¦¬λΌλ¦¬ μ μλ₯Ό νκ³ λμ΄κ°μ
λ―Έλ€μ¨μ΄λ μννΈμ¨μ΄μ μννΈμ¨μ΄ μ¬μ΄μ μ€κ°μ μμΉν΄μ μ΄ λ μννΈμ¨μ΄λ₯Ό μ½κ² ν΅ν©νκΈ° μν΄ μ‘°μ κ³Ό μ€κ°λ₯Ό νλ μννΈμ¨μ΄λ€!
Message Oriented Middleware, MOM μ΄λ?
λ©μμ§ κΈ°λ° λ―Έλ€μ¨μ΄, Message Oriented Middlewareλ λ―Έλ€μ¨μ΄ μ’ λ₯ μ€ νλλ‘ λΉλκΈ° λ©μμ§ μ λ¬μ κΈ°μ΄ν λ―Έλ€μ¨μ΄μ΄λ€.
MOMμ λλΆλΆ Message Queue λ₯Ό κΈ°λ°μΌλ‘ λ©μμ§λ₯Ό μ λ¬νλ©° Microserviceμ κ°μ λΆμ° νκ²½μμ λ©μμ§λ₯Ό μ£Όκ³ λ°μΌλ©΄μ λ°μ΄ν°λ₯Ό κ΅νν μ μλλ‘ ν΄μ€λ€.
λͺ¨λ MOMμ΄ Message Queue λ₯Ό κΈ°λ°μΌλ‘ λμνλ κ²μ μλλ€. μ°λ¦¬κ° κ°μ₯ λ§μ΄ μ¬μ©νλ MOM μ루μ μΈ RabbitMQλ Kafkaκ° Message queueλ₯Ό μ¬μ©νμ§ λ€λ₯Έ MOM μμλ λΈλ‘λμΊμ€νΈ νμμ΄λ λ©ν° μΊμ€νΈ νμμ λ©μμ§ μμ€ν λ μλ€.
MOM κ΅¬μ± μμ
MOMμ κ΅¬μ± μμλ μ΄ 4κ°μ§κ° μ‘΄μ¬νλ€κ³ ν μ μλ€.
- λ°μ΄ν°μ ν΄λΉνλ λ©μμ§
- λ©μμ§λ₯Ό 보λ΄λ Sender, λ°μ μ
- λ©μμ§λ₯Ό λ°λ Receiver, μμ μ
- λ©μμ§λ₯Ό κ΄λ¦¬νλ λ©μμ§ Provider λ©μμ§ μ 곡μ
Senderμ Receiverλ κ°κ° λ©μμ§λ₯Ό μ‘, μμ νλ μ£Όμ²΄κ° λλ€.
μ΄λ€μ μ§μ μ μΌλ‘ ProviderμΈ MOMμ μ°κ²°λμ΄ κ°κ°μ νμν μμ μ μννλ€.
κ·Έλ¦¬κ³ μ‘μ 주체μκ² λ°μ λ°μ΄ν°λ₯Ό Providerκ° μ§μ ν destination μ μ μ₯ν΄μ μμ²μ΄ λ°μν λκΉμ§ 보κ΄νκ² λλ€.
MOM vs without MOM
λ§μ½ MOMμ΄ μλ€λ©΄ μ΄λ»κ² λ κΉ?
μΌλ°μ μΈ μν©μμ MOMμ νμμ±μ ν¬κ² λλλ¬μ§μ§ μμ§λ§ λΆμ° νκ²½μμ κ·Έ μ‘΄μ¬κ°μ νμΈν μ μλ€.
λ³΄ν΅ λ§μ΄ν¬λ‘μλΉμ€μ μΈμ€ν΄μ€κ° νμ₯μ΄ λλ©΄ λΆμ° μμ€ν λ° λ°μ΄ν°μ λκΈ°νμ λν μ΄μκ° λ°μνκ² λκ³ ν΄λΉ μ΄μκ° λ°μνλ μ ν리μΌμ΄μ μΌλ‘ λ°μ΄ν°λ₯Ό μμ²νμμ λ, λμΌν μ°μ°μ μννλλΌλ 무결νμ§ μμ λ°μ΄ν°λ₯Ό λ°μ κ°λ₯μ±μ΄ 컀μ§λ€.
μμΈν μ΄μΌκΈ°λ MSAμ ν΅μ¬ κ΅¬μ± μμ - Message Queueingμμ νμΈν μ μλ€.
MOMμ΄ λ©μμ§λ₯Ό μ λ¬νλ λ°©μ
MOMμμ λ©μμ§λ₯Ό μ λ¬νλ λ°©μμλ ν¬κ² 2 κ°μ§ λ°©μμ΄ μ‘΄μ¬νλ€.
- Point To Point Messaging
- Publish-Subscribe Messaging
Point To Point Messaging
μ§μ κ° λ©μμ§ μ΄λΌκ³ νλ Point-To-Point λ©μμ§ λͺ¨λΈμ μμμ λ΄€λ κ·Έλ¦Όμ κ·Έλλ‘ μ΄ν΄νλ©΄ λλ€.
λ©μμ§λ₯Ό μμ±νλ μμ±μ(sender)λ λ©μμ§λ₯Ό μμ±νκ³ λ©μμ§ νλ‘ μ μ‘νλ€.
λ©μμ§ νλ λ©μμ§λ₯Ό μ μ₯νκ³ μμ μ(receiver)κ° μ¬μ©νκΈ° μ κΉμ§ λ°μ΄ν°λ₯Ό 보κ΄νμ¬ μμ μμκ² λ©μμ§λ₯Ό μ μ‘νκ² λλ€.
Publish-Subscribe Messaging
κ²μ-ꡬλ λ©μμ§λΌκ³ νλ Pub/Sub Messaging λͺ¨λΈμ λ©μμ§λ₯Ό μμ°νλ κ²μμ (publisher)μ λ©μμ§λ₯Ό μλΉνλ ꡬλ μ (subscriber)λΌκ³ νλ©°, λ κ°μ λ©μμ§ κ΅νμ μν΄ ν ν½ (topic)μ μ΄μ©νκ² λλ€.
κ²μμκ° ν ν½μ λν λ©μμ§λ₯Ό μμ±νλ©΄ ꡬλ μλ ꡬλ μ€μΈ ν ν½μμ λ©μμ§λ₯Ό μλΉν μ μλ€.
λνμ μΈ λΉλκΈ° λ©μμ§ λͺ¨λΈμ΄λ€.
μ§μ κ° λ©μμ§κ³Ό λλΉλλ κ°λ μ λ°λ‘ ꡬλ μ€μΈ λͺ¨λ μμ μκ° ν΄λΉ λ©μμ§λ₯Ό μ΄μ©ν μμλ€λ κ²μ΄λ€.
Message Broker λ?
λ©μμ§ λΈλ‘컀λ MOMκ³Ό λμ‘°λλ κ°λ μ΄ μλλΌ MOM λ΄μ μ‘΄μ¬νλ Message Provider λ₯Ό μλ―Ένλ€.
Message Providerκ° μ΄λ€ λ°©μμΌλ‘ λ©μμ§λ₯Ό μ 곡νλμ§μ λ°λΌμ Brokerμ μ€νκ³Ό λ°©μμ΄ λ¬λΌμ§λ©° μμμ λ³Έ 2κ°μ§ λ©μμ§ μ λ¬ λ°©μμ΄ λ°λ‘ Message Broker μ λν μ λ¬ λ°©μμ΄λΌκ³ ν μ μλ€.
IBM μμλ Message Brokerλ₯Ό λ€μκ³Ό κ°μ΄ μ μνκ³ μλ€.
Message brokers are an inter-application communication technology to help build a common integration mechanism to support cloud native, microservices-based, serverless and hybrid cloud architectures.
λ©μμ§ λΈλ‘컀(Message Broker)λ ν΄λΌμ°λ λ€μ΄ν°λΈ, λ§μ΄ν¬λ‘μλΉμ€ κΈ°λ°, μλ²λ¦¬μ€ λ° νμ΄λΈλ¦¬λ ν΄λΌμ°λ μν€ν μ²λ₯Ό μ§μνλ κ³΅ν΅ ν΅ν© λ©μ»€λμ¦μ ꡬμΆνλ λ° λμμ΄ λλ μ ν리μΌμ΄μ κ° ν΅μ κΈ°μ μ λλ€.
Message Broker λ λ©μμ§λ₯Ό μμ±νλ μ‘μ μμ λ©μμ§λ₯Ό λ°λ μμ μμ μν΄μ λμνκ² λλ©°, μ‘μ μκ° Message Queueμ λ°μ΄ν°λ₯Ό μ°¨λ‘λ‘ λ£μΌλ©΄ μμ μκ° ν΄λΉ Messageλ₯Ό μ°¨λ‘λλ‘ μ΄μ©νκ² λλ Store-And-Forward λ°©μμ΄λ€.
λνμ μΈ Message Broker μ루μ
μ°λ¦¬λ μ΄ Message Brokerλ₯Ό μ΄μ©ν΄μ MOMμ ꡬμΆνκ² λ κ²μΈλ°, λνμ μΌλ‘λ λ€μκ³Ό κ°μ λ©μμ§ λΈλ‘μ»€κ° μ‘΄μ¬νλ€
- AWSμ Simple Queue Servier, SQS
- Apacheμ Kafka
- Mozilaμ RabbitMQ
'π¬μν€ν μ² > - Enterprise Integration' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Event-Driven-Architecture μ λν Overview μ μ¬λ¬ κ³ λ €μ¬νλ€ (0) | 2022.08.22 |
---|---|
CQRS ν¨ν΄μ λν μ€ν΄ νκΈ° (3) | 2022.06.11 |
λκΈ