์๋ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ ์๊ฒฉ์ฆ ์ทจ๋์ ์ํด ๊ณต๋ถ๋ฅผ ํ๋ฉฐ Message Queue์ ๋ํด ๊ณต๋ถ๋ฅผ ํ ์ ์ด ์์๋ค.
์ด๋ก ์ ๋ํด์๋ง ๊ณต๋ถ๋ฅผ ํ์๊ธฐ ๋๋ฌธ์ ์ ์ฐ์ด๋ ์ง, ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง์ ๋ํด ๊น๊ฒ ์์ง๋ ๋ชปํ๋ค๊ณ ์๊ฐํ๋ค.
์ต๊ทผ ๋ง์ ๊ธฐ์ ๋ค์ด Message Queue๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๊ธฐ์ ๋ค์ ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
๋ถ๋ช , ๋ง์ด ์ฐ์ด๋ ๊ฒ์๋ ์ด์ ๊ฐ ์์ ๊ฒ์ด๋ค!
๊ทธ๋์ Message Queue์ ๋ํด ํ๋ฒ ์ ๋ฆฌ๋ฅผ ํด๋ณด๊ณ ์ ํ๋ค.
Message Queue(MQ)
๋ฉ์์ง ํ(Message Queue)๋ ํ๋ก์ธ์ค ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ๋ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก, ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด(Message Oriented Middleware:MOM)๋ฅผ ๊ตฌํํ ์์คํ ์ ์๋ฏธํ๋ค.
๊ทธ๋ ๋ค๋ฉด, ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด(Message Oriented Middleware:MOM)๋ ๋ฌด์์ผ๊น?
๋ฉ์ธ์ง๋ฅผ ํตํด ์ฌ๋ฌ ๋ถ์ฐ๋์ด ์๋ ์์คํ ๊ฐ์ Connector ์ญํ ๋ก ๊ฒฐํฉ์ฑ์ ๋ฎ์ถ๊ณ , ์ด๋ค์ด ์๋ก ์ค์๊ฐ ๋น๋๊ธฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋๋ก ํ๋ ์ํํธ์จ์ด์ด๋ค.
๋ง๋ก๋ง ํ๋ฉด ์ดํด๊ฐ ์ด๋ ค์ธ ์ ์์ผ๋ ๊ทธ๋ฆผ์ผ๋ก ์ดํด๋ณด์.
Producer, Consumer๊ฐ ์กด์ฌํ๋ฉฐ Producer๋ ๋ฉ์ธ์ง๋ฅผ ํ์ ์ ์กํ๊ณ Consumer๊ฐ ํ์ ๋ฉ์ธ์ง๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ค.
๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ ์ชฝ๊ณผ ๋ฐ๋ ์ชฝ์ ๋ํด์๋ Producer, Consumer ๋ฟ๋ง ์๋๋ผ ๋ค์ํ๊ฒ ์ ์๋์ด์ง๊ณ ์๋ค.
๋ณด๋ด๋ ์ชฝ | ๋ฐ๋ ์ชฝ |
Sender | Receiver |
Producer | Consumer |
Publisher | Subscriber |
๋ฉ์ธ์ง ํ๊ฐ ๋์ถฉ ์ด๋ป๊ฒ ๋์ํ๋์ง์ ๋ํด์๋ ์๊ฒ ๋๋ฐ ์ ๋ง์ ๊ธฐ์ ๋ค์ด ์ฌ์ฉํ๊ธฐ ์์ํ ๊ฑธ๊น?
๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ๋ ์ฌ๋๋ค์ด๋ผ๋ฉด ์์ฆ MSA๊ฐ ์ผ๋ง๋ ํซํ์ง ์๊ณ ์์๊ฑฐ๋ผ ์๊ฐ๋๋ค.
MSA๋ api๋ฅผ ํตํด ํต์ ํ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ ์๋น์ค์ ๋ชจ์์ผ๋ก ๊ตฌ์กฐํํ๋ *์๋น์ค ์งํฅ ์ํคํ ์ฒ(SOA) ์คํ์ผ์ ์ผ์ข ์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ธฐ๋ฒ์ ๋งํ๋ค.
์ด์ฒ๋ผ ์์ฆ ๊ฐ๋ฐ ํธ๋ ๋๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ ์ฝ๊ฒ ๊ฐ๋ฐ, ๋ฐฐํฌ ๋ฐ ์ ์ง ๊ด๋ฆฌํ ์ ์๋๋ก ๋ ์๊ณ ๋ ๋ฆฝ์ ์ธ ๋ชจ๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ ์ถ๊ตฌํ๊ณ ์๋ค. MQ๋ ์ด๋ฌํ ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ํต์ ๋ฐ ์กฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
MQ์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- MQ๋ ๊ฐ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๋ฉ์ ์๋นํ ๊ฐ์ํํ๋ฉด์ ๋์์ ์ฑ๋ฅ, ์์ ์ฑ ๋ฐ ํ์ฅ์ฑ์ ๊ฐ์ ํ ์ ์๋๋ก ํ๋ค.
- MQ๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ ์ ์๋ก ๋ค๋ฅธ ๋ถ๋ถ์ด ํต์ ํ๊ณ ๋น๋๊ธฐ์์ผ๋ก ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค.
- MQ๋ ๋ฉ์์ง๋ฅผ ์์๋ก ์ ์ฅํ๋ ๊ฐ๋จํ ๋ฒํผ๋ฅผ ์ ๊ณตํ๊ณ , ๋ฉ์์ง๋ฅผ ์ ์ก ๋ฐ ์์ ํ๊ธฐ ์ํด ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๊ฐ queue์ ์ฐ๊ฒฐํ๋๋ก ํ์ฉํ๋ ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๋ค.
- ๋ฉ์์ง๋ ๋ณดํต ํฌ๊ธฐ๊ฐ ์์ผ๋ฉฐ, ์์ฒญ, ์ค๋ฅ ๋ฉ์์ง ๋๋ ํ๋ฒํ ์ ๋ณด๊ฐ ๋ ์ ์๋ค.
- ๋ฉ์์ง๋ฅผ ์ ์กํ๋ ค๋ฉด ์์ฐ์(producer)๋ผ๊ณ ๋ถ๋ฅด๋ ๊ตฌ์ฑ ์์๊ฐ ๋ฉ์์ง๋ฅผ ๋๊ธฐ์ด์ ์ถ๊ฐํ๋ค.
- ํด๋น ๋ฉ์์ง๋ ์๋น์(consumer)๋ผ๊ณ ๋ถ๋ฅด๋ ๋ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๊ฐ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๊ณ ์ด๋ฅผ ์ฌ์ฉํด ์ด๋ค ์์ ์ ์ํํ ๋๊น์ง ํด๋น queue์ ์ ์ฅ๋๋ค.
Message Queue(MQ)๋ ์ธ์ ์ฐ๋์?
- ๋ฉ์์ง ํ๋ ์๋น์(Consumer)๊ฐ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ์ด๋ ์์ ์ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๋ ์ง๋ ๋ณด์ฅํ์ง ์๋๋ค.
- ์ธ์ ๊ฐ๋ ํ์ ๋ฃ์ด๋ ๋ฉ์์ง๊ฐ ์๋น๋์ด ์ฒ๋ฆฌ๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ๋ ๊ฒ์ด๋ค.
- ์ด๋ฌํ ๋น๋๊ธฐ์ ํน์ฑ ๋๋ฌธ์ ๋ฉ์์ง ํ๋ ์คํจํ๋ฉด ์น๋ช ์ ์ธ ํต์ฌ ์์ ๋ณด๋ค๋ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
์๋ฅผ ๋ค๋ฉด, ์ด๋ฉ์ผ์ ์ก๊ณผ ๊ฐ์ ์์
์ด ์์ ์ ์๋ค.
๋๋ ์ด๋ฏธ ์ด๋ฉ์ผ์ ์ ์กํ๊ณ , ์ค์ ๋ฐ๋ ์ฌ๋์ด ์ฝ์ ๋๊น์ง ์๊ฐ์ ๊ฑธ๋ฆฌ๊ฒ ์ง๋ง, ํด๋น ์์
์ด ์๋ฃ์ฒ๋ฆฌ ๋ ๊ฒ์ ์ฐ๋ฆฌ๋ ์๊ณ ์๋ค.
๋ฐ๋ก ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์๋ ์๋น์ค์ ํฌ๊ฒ ๋ฌธ์ ์๋ ์ด๋ฐ ์์
์ MQ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ฆ, MQ๋ ์ด๋ ์ ๋์ ์๋ต ์ง์ฐ์ด ํ์ฉ๋๋ฉฐ, ์ดํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๊ธฐ๋ฅ์ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
Message Queue์ ์ฅ์
- ๋น๋๊ธฐ(Asynchronous)
- ๋ฉ์์ง ํ๋ ์์ฐ๋ ๋ฉ์์ง์ ์ ์ฅ, ์ ์ก์ ๋ํด ๋๊ธฐํ ์ฒ๋ฆฌ๋ฅผ ์งํํ์ง ์๊ณ , ํ์ ๋ฃ์ด ๋๊ธฐ ๋๋ฌธ์ ๋์ค์ ์ฒ๋ฆฌํ ์ ์๋ค.
- ์ฌ๊ธฐ์, ๊ธฐ์กด ๋๊ธฐํ ๋ฐฉ์์ ๋ง์ ๋ฉ์์ง(๋ฐ์ดํฐ)๊ฐ ์ ์ก๋ ๊ฒฝ์ฐ ๋ณ๋ชฉ์ด ์๊ธธ ์ ์๊ณ , ๋ค์ ๋ค์ด์ค๋ ์์ฒญ์ ๋ํ ์๋ต์ด ์ง์ฐ๋ ๊ฒ์ด๋ค.
- ๋ฎ์ ๊ฒฐํฉ๋(Decoupling)
- ์์ฐ์ ์๋น์ค์ ์๋น์ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํ๋ํ๊ฒ ๋จ์ผ๋ก์จ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ค.
- ํ์ฅ์ฑ(Scalable)
- ์์ฐ์ ์๋น์ค ํน์ ์๋น์ ์๋น์ค๋ฅผ ์ํ๋ ๋๋ก ํ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ฅ์ฑ์ด ์ข๋ค.
- ํ๋ ฅ์ฑ(Resilience)
- ์๋น์ ์๋น์ค๊ฐ ๋ค์ด๋๋๋ผ๋ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ค๋จ๋๋ ๊ฒ์ ์๋๋ค. ๋ฉ์์ง๋ ๋ฉ์์ง ํ์ ๋จ์ ์๋ค. ์๋น์ ์๋น์ค๊ฐ ๋ค์ ์์๋ ๋๋ง๋ค ์ถ๊ฐ ์ค์ ์ด๋ ์์ ์ ์ํํ์ง ์๊ณ ๋ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์์ํ ์ ์๋ค.
- ๋ณด์ฅ์ฑ(Guarantees)
- ๋ฉ์์ง ํ๋ ํ์ ๋ณด๊ด๋๋ ๋ชจ๋ ๋ฉ์์ง๊ฐ ๊ฒฐ๊ตญ ์๋น์ ์๋น์ค์๊ฒ ์ ๋ฌ๋๋ค๋ ์ผ๋ฐ์ ์ธ ๋ณด์ฅ์ ์ ๊ณตํ๋ค.
Message Queue์ ์ข ๋ฅ
MQ์ ์ข ๋ฅ๋ก๋ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋๋ฐ Kafka, RabbitMQ, ActiveMQ(JMS)๊ฐ ๋ํ์ ์ด๋ค. Amazon SQS, Amazon MQ ๋ฑ๋ ์๋ค.
ActiveMQ(JMS)
- MOM์ ์๋ฐ์์ ์ง์ํ๋ ํ์ค API์ด๋ค. JMS๋ ๋ค๋ฅธ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ค๋ผ๋ฆฌ ํต์ ์ด ๊ฐ๋ฅํ์ง๋ง ๋ค๋ฅธ MOM์ ํต์ ์ ๋ถ๊ฐ๋ฅํ๋ค. (AMQP, SMTP ๊ฐ์)
- ActiveMQ์ JMS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋ค๋ผ๋ฆฌ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
- ํ์ง๋ง ๋ค๋ฅธ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ (Non ActiveMQ)์ JMS์๋ ํต์ ํ ์ ์๋ค.
RabbitMQ
- RabbitMQ๋ AMQP(Advanced Message Queuing Protocol)๋ฅผ ๊ตฌํํ ์คํ์์ค ๋ฉ์์ง ๋ธ๋ก์ปค์ด๋ค.
- AMQP๋ MQ๋ฅผ ์คํ ์์ค์ ๊ธฐ๋ฐํ ํ์ค ํ๋กํ ์ฝ์ด๋ค. ํ๋กํ ์ฝ๋ง ๋ง๋ค๋ฉด ๋ค๋ฅธ AMQP๋ฅผ ์ฌ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ๋ผ๋ฆฌ ํต์ ์ด ๊ฐ๋ฅํ๋ค.
- ํ๋ฌ๊ทธ์ธ์ ํตํด์ SMTP, STOMP ํ๋กํ ์ฝ๊ณผ์ ํ์ฅ์ด ๊ฐ๋ฅํ๋ค.
- AMQP๋ ๋ฉ์ธ์ง ์ ๋ฌ์ ์๋ 3๊ฐ์ง ๋ฐฉ์ ์ค ํ๋๋ฅผ ๋ณด์ฅํ๋ค.
- At-Most-Once: ๊ฐ ๋ฉ์์ง๋ ํ๋ฒ๋ง ์ ๋ฌ๋๊ฑฐ๋ ์ ๋ฌ๋์ง ์์
- At-Least-Once: ๊ฐ ๋ฉ์์ง๋ ์ต์ ํ๋ฒ ์ด์ ์ ๋ฌ๋จ์ ๋ณด์ฅ
- Exactly-Once: ๊ฐ ๋ฉ์์ง๋ ๋ฑ ํ๋ฒ๋ง ์ ๋ฌ๋จ
- AMQP๋ ๋ฉ์์ง ์ ๊ณต์์ ํด๋ผ์ด์ธํธ์ ๋์์ ๋ํด ๊ฐ๊ธฐ ๋ค๋ฅธ ๋ฒค๋๋ค์ ๊ตฌํ์ฒด๊ฐ ์ํธ ์ด์ฉ๋ ์ ์๋ ์ ๋๋ก๊น์ง ๊ถํ์ ์ค๋ค.
- ์ด๋ SMTP, HTTP, FTP ๋ฑ์ด ์ํธ ์ด์ฉ์ด ๊ฐ๋ฅํ ์์คํ ์ ๋ง๋ ๋ค๋ ์ ์์ ๋์ผํ๋ค.
- ๊ฐ๋จํ ๋งํ๋ฉด Exchange๊ฐ Producer๋ก๋ถํฐ ๋ฉ์์ง๋ฅผ ๋ฐ๊ณ Queue์ ์ ๋ฌํ๋ค. Queue๋ Consumer์๊ฒ ๋ฉ์์ง๋ฅผ ์ ๋ฌํ๋ค.
Apache Kafka
- Apache Kafka๋ LinkedIn์ด ๊ฐ๋ฐํ๊ณ Apache Software Foundation์ ๊ธฐ๋ถํ ์คํ ์์ค ์คํธ๋ฆผ ํ๋ก์ธ์ฑ ์ํํธ์จ์ด ํ๋ซํผ์ด๋ค.
- ๋์ ์ฒ๋ฆฌ๋์ ์๊ตฌํ๋ ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋ ์ฒ๋ฆฌ๋ ๋๊ธฐ ์๊ฐ์ด ์งง์ ํ๋ซํผ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฉฐ TCP ๊ธฐ๋ฐ ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ค.
- ํด๋ฌ์คํฐ๋ฅผ ์ค์ฌ์ผ๋ก Producer์ Consumer๊ฐ ๋ฐ์ดํฐ๋ฅผ Pushํ๊ณ Pullํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
- ํน์ง
- Publisher / Subscriber ๋ชจ๋ธ
- ๊ณ ๊ฐ์ฉ์ฑ
- ํ์ฅ์ฑ
- ๋์คํฌ ์์ฐจ ์ ์ฅ ๋ฐ ์ฒ๋ฆฌ
- ๋ถ์ฐ ์ฒ๋ฆฌ (Partitioning)
- ์นดํ์นด๋ ๋ด๊ตฌ์ฑ์ด ๋ฐ์ด๋ ๋ฉ์์ง ์ ์ฅ์๋ก, ๊ณ ๊ฐ๋ค์ ๋ฉ์์ง๊ฐ ํ ๋ฒ ๋ฐฐ๋ฌ๋๋ฉด ๋๊ธฐ์ด์์ ์ ๊ฑฐ๋๋ ์ ํต์ ์ธ ๋ฉ์์ง ์ค๊ฐ์ ์๋ค๊ณผ๋ ๋ฌ๋ฆฌ, ํ์์ ๋ฐ๋ผ ์ด๋ฒคํธ ์คํธ๋ฆผ์ ์ฌ์ํ ์ ์๋ค.
- ๋์ฉ๋์ ์ค์๊ฐ ๋ก๊ทธ ์ฒ๋ฆฌ์ ํนํ๋์ด ์ค๊ณ๋ ๋ฉ์์ง ์์คํ ์ผ๋ก์จ ๊ธฐ์กด ๋ฒ์ฉ ๋ฉ์์ง ์์คํ ๋๋น TPS(Transaction per second)๊ฐ ๋งค์ฐ ์ฐ์ํ๋ค. ๋จ, ํนํ๋ ์์คํ ์ด๊ธฐ ๋๋ฌธ์ ๋ฒ์ฉ ๋ฉ์์ง ์์คํ ์์ ์ ๊ณตํ๋ ๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ ๊ณต๋์ง ์๋๋ค.
- ๋ถ์ฐ ์์คํ ์ ๊ธฐ๋ณธ์ผ๋ก ์ค๊ณ๋์๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด ๋ฉ์์ง ์์คํ ์ ๋นํด ๋ถ์ฐ ๋ฐ ๋ณต์ ๊ตฌ์ฑ์ ์์ฝ๊ฒ ํ ์ ์๋ค.
- AMQP ํ๋กํ ์ฝ์ด๋ JMS API๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋จ์ํ ๋ฉ์์ง ํค๋๋ฅผ ์ง๋ TCP๊ธฐ๋ฐ์ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํ๋กํ ์ฝ์ ์ํ ์ค๋ฒํค๋๋ฅผ ๊ฐ์์์ผฐ๋ค.
- Producer๊ฐ Broker์๊ฒ ๋ค์์ ๋ฉ์์ง๋ฅผ ์ ์กํ ๋ ๊ฐ ๋ฉ์์ง๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ์กํด์ผํ๋ ๊ธฐ์กด ๋ฉ์์ง ์์คํ ๊ณผ๋ ๋ฌ๋ฆฌ, ๋ค์์ ๋ฉ์์ง๋ฅผ batchํํ๋ก Broker์๊ฒ ํ ๋ฒ์ ์ ๋ฌํ ์ ์์ด TCP/IP ๋ผ์ด๋ ํธ๋ฆฝ ํ์๋ฅผ ์ค์ผ ์ ์๋ค.
- ๋ฉ์์ง๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ ๊ธฐ๋ณธ ๋ฉ์์ง ์์คํ ๊ณผ๋ ๋ฌ๋ฆฌ ๋ฉ์์ง๋ฅผ ํ์ผ ์์คํ ์ ์ ์ฅํ๋ค. (RabbitMQ๋ ram or disk ์ ํ๊ฐ๋ฅ)
- ํ์ผ ์์คํ ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ค์ ์ ํ์ง ์์๋ ๋ฐ์ดํฐ์ ์์์ฑ์ด ๋ณด์ฅ๋๋ค.
- ๊ธฐ์กด ๋ฉ์์ง ์์คํ ์์๋ ์ฒ๋ฆฌ๋์ง ์๊ณ ๋จ์์๋ ๋ฉ์์ง์ ์๊ฐ ๋ง์์๋ก ์์คํ ์ ์ฑ๋ฅ์ด ํฌ๊ฒ ๊ฐ์ํ์์ผ๋, Kafka์์๋ ๋ฉ์์ง๋ฅผ ํ์ผ ์์คํ ์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง๋ฅผ ๋ง์ด ์์๋์ด๋ ์ฑ๋ฅ์ด ํฌ๊ฒ ๊ฐ์ํ์ง ์๋๋ค. ๋ํ ๋ง์ ๋ฉ์์ง๋ฅผ ์์๋ ์ ์๊ธฐ ๋๋ฌธ์, ์ค์๊ฐ ์ฒ๋ฆฌ๋ฟ๋ง ์๋๋ผ ์ฃผ๊ธฐ์ ์ธ batch ์์ ์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ฅผ ์์๋๋ ์ฉ๋๋ก๋ ์ฌ์ฉํ ์ ์๋ค.
- Consumer์ ์ํด ์ฒ๋ฆฌ๋ ๋ฉ์์ง(ack)๋ฅผ ๊ณง๋ฐ๋ก ์ญ์ ํ๋ ๊ธฐ์กด ๋ฉ์์ง ์์คํ ๊ณผ๋ ๋ฌ๋ฆฌ ์ฒ๋ฆฌ๋ ๋ฉ์์ง๋ฅผ ์ญ์ ํ์ง ์๊ณ ํ์ผ ์์คํ ์ ๊ทธ๋๋ก ๋์๋ค๊ฐ ์ค์ ๋ ์๋ช ์ด ์ง๋๋ฉด ์ญ์ ํ๋ค. ์ฒ๋ฆฌ๋ ๋ฉ์์ง๋ฅผ ์ผ์ ๊ธฐ๊ฐ๋์ ์ญ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง ์ฒ๋ฆฌ ๋์ค์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์๊ฑฐ๋ ์ฒ๋ฆฌ ๋ก์ง์ด ๋ณ๊ฒฝ๋์์ ๊ฒฝ์ฐ Consumer๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์ฒ๋ฆฌ(rewind)ํ๋๋ก ํ ์ ์๋ค.
- ๊ธฐ์กด์ ๋ฉ์์ง ์์คํ ์์๋ Broker๊ฐ Consumer์๊ฒ ๋ฉ์์ง๋ฅผ Pushํด์ฃผ๋ ๋ฐฉ์์ธ๋ฐ ๋ฐํด, Kafka๋ Consumer๊ฐ Broker๋ก๋ถํฐ ์ง์ ๋ฉ์์ง๋ฅผ ๊ฐ์ง๊ณ ๊ฐ๋ pull(poliing)๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
- ๋ฐ๋ผ์ Consumer๋ ์์ ์ ์ฒ๋ฆฌ๋ฅ๋ ฅ๋งํผ์ ๋ฉ์์ง๋ง Broker๋ก๋ถํฐ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ์ต์ ์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ค.
- ๋ฉ์์ง๋ฅผ Pull ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์ค๋ฏ๋ก, ๋ฉ์์ง๋ฅผ ์์๋์๋ฐ๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ Batch Consumer์ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
- ํ์ ๊ธฐ๋ฅ์ JMS, AMQP ๊ธฐ๋ฐ์ RabbitMQ๋ฑ์ ๋นํด์๋ ๋ง์ด ๋ถ์กฑํ์ง๋ง ๋์ฉ๋ ๋ฉ์์ง๋ฅผ ์ง์ํ ์ ์๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ํน์ง์ด๋ค. ํนํ ๋ถ์ฐ ํ๊ฒฝ์์ ๋ณต์ฌ๋ณธ์ ๋ค๋ฅธ ๋ ธ๋์ ์ ์ฅํจ์ผ๋ก์จ ๋ ธ๋ ์ฅ์ ์ ๋ํ ์ฅ์ ๋์์ฑ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ด ์๋ค.
์ฐธ๊ณ
๋ฉ์ธ์ง ์งํฅ ๋ฏธ๋ค์จ์ด(MOM)
๋ฉ์ธ์ง ์งํฅ ๋ฏธ๋ค์จ์ด(Message Oriented Middleware > MOM) ๋ฏธ๋ค์จ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์ฐ๊ฒฐํด ์ด๋ค์ด ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๊ฒ ํด์ฃผ๋ ์ํํธ์จ์ด ๋ฉ์ธ์ง ์งํฅ ์์คํ ์ด๋ ๋ฉ์ธ์ง API๋ฅผ ํตํด ๊ฐ
velog.io
https://goyunji.tistory.com/125
Message Queue ๋? MQ ์ข ๋ฅ
ํ์ฌ์์ ๋ด๋นํ๋ ์๋น์ค์์ kafka๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ MQ์ ๋ํด ์ฐพ์๋ณธ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋ค. ๋๋ ๋ค๋ฅธ ์ฌ๋ฌ ์ฌ์ดํธ์์ ๋ง์ ์ ๋ณด๋ฅผ ์ป์๊ธฐ์ ๋๊ตฐ๊ฐ์๊ฒ๋ ๋์์ด ๋์์ผ๋ฉด ํด์ใ ,ใ Message Queu
goyunji.tistory.com
https://tecoble.techcourse.co.kr/post/2021-09-19-message-queue/
๋ฉ์์ง ํ์ ๋ํด ์์๋ณด์!
๋ฉ์์ง ํ๋ ๋ฉ์์ง ํ(Message Queue)๋ ํ๋ก์ธ์ค ๋๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ๋ ์ฌ์ฉํ๋ ํต์ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก, ๋ฉ์์ง ์งํฅ ๋ฏธ๋ค์จ์ด(Message Oriented Middleware:MOM…
tecoble.techcourse.co.kr
https://velog.io/@rlaghwns1995/MOM-Message-Oriented-Middleware-%EB%9E%80
MOM (Message Oriented Middleware) ๋?
๋ ๋ฆฝ๋ ์๋น์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํํ์ ๋ฏธ๋ค์จ์ด๋ฅผ ๋งํ๋ค. ์ฌ๊ธฐ์ ๋ฏธ๋ค์จ์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ ์ฐ๊ฒฐํด ์ด๋ค์ด ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๊ฒ ํด์ฃผ๋ ์ํํธ์จ์ด์ด๋ค. ๋ฉ์ธ์ง ์ง
velog.io
'Backend๐ฑ > Infra' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ํ์น์ Nginx ์ดํด, ์ํ์น vs Nginx ๋น๊ต์ ์ฐจ์ด์ (0) | 2023.06.27 |
---|---|
[AWS] S3์ ์ดํด - 1 (0) | 2022.12.30 |
[AWS] Elastic Load Balancer(ELB)๋? (0) | 2022.12.29 |
[AWS] EC2 ์๋ช ์ฃผ๊ธฐ (0) | 2022.12.29 |
[AWS] EBS, Snapshot, AMI ์ดํด (0) | 2022.12.29 |