โข
์ต์ ํด๋ผ์ฐ๋ ์ํคํ
์ฒ์์๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ข ๋ ์ฝ๊ฒ ๊ฐ๋ฐ, ๋ฐฐํฌ ๋ฐ ์ ์ง ๊ด๋ฆฌํ ์ ์๋๋ก ๋ ์๊ณ ๋
๋ฆฝ์ ์ธ ๋ชจ๋๋ก ๊ตฌ์ฑํ๋ค.
โข
MQ๋ ์ด๋ฌํ ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ํต์ ๋ฐ ์กฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
โข
MQ๋ ๊ฐ ๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๋ฉ์ ์๋นํ ๊ฐ์ํํ๋ฉด์ ๋์์ ์ฑ๋ฅ, ์์ ์ฑ ๋ฐ ํ์ฅ์ฑ์ ๊ฐ์ ํ ์ ์๋๋ก ํ๋ค.
โข
MQ๋ฅผ ์ฌ์ฉํ๋ฉด ์์คํ
์ ์๋ก ๋ค๋ฅธ ๋ถ๋ถ์ด ํต์ ํ๊ณ ๋น๋๊ธฐ์์ผ๋ก ์์
์ ์ฒ๋ฆฌํ ์ ์๋ค.
โข
MQ๋ ๋ฉ์์ง๋ฅผ ์์๋ก ์ ์ฅํ๋ ๊ฐ๋จํ ๋ฒํผ๋ฅผ ์ ๊ณตํ๊ณ , ๋ฉ์์ง๋ฅผ ์ ์ก ๋ฐ ์์ ํ๊ธฐ ์ํด ์ํํธ์จ์ด ๊ตฌ์ฑ ์์๊ฐ queue์ ์ฐ๊ฒฐํ๋๋ก ํ์ฉํ๋ ์๋ํฌ์ธํธ๋ฅผ ์ ๊ณตํ๋ค.
โข
๋ฉ์์ง๋ ๋ณดํต ํฌ๊ธฐ๊ฐ ์์ผ๋ฉฐ, ์์ฒญ, ์ค๋ฅ ๋ฉ์์ง ๋๋ ํ๋ฒํ ์ ๋ณด๊ฐ ๋ ์ ์๋ค.
โข
๋ฉ์์ง๋ฅผ ์ ์กํ๋ ค๋ฉด ์์ฐ์(producer)๋ผ๊ณ ๋ถ๋ฅด๋ ๊ตฌ์ฑ ์์๊ฐ ๋ฉ์์ง๋ฅผ ๋๊ธฐ์ด์ ์ถ๊ฐํ๋ค.
โข
ํด๋น ๋ฉ์์ง๋ ์๋น์(consumer)๋ผ๊ณ ๋ถ๋ฅด๋ ๋ ๋ค๋ฅธ ๊ตฌ์ฑ ์์๊ฐ ๋ฉ์์ง๋ฅผ ๊ฒ์ํ๊ณ ์ด๋ฅผ ์ฌ์ฉํด ์ด๋ค ์์
์ ์ํํ ๋๊น์ง ํด๋น queue์ ์ ์ฅ๋๋ค.
โข
๋ฉ์์ง ํ๋ ์๋น์(Consumer)๊ฐ ์ค์ ๋ก ๋ฉ์์ง๋ฅผ ์ด๋ ์์ ์ ๊ฐ์ ธ๊ฐ์ ์ฒ๋ฆฌํ๋ ์ง๋ ๋ณด์ฅํ์ง ์๋๋ค.
โข
์ธ์ ๊ฐ๋ ํ์ ๋ฃ์ด๋ ๋ฉ์์ง๊ฐ ์๋น๋์ด ์ฒ๋ฆฌ๋ ๊ฒ์ด๋ผ๊ณ ๋ฏฟ๋ ๊ฒ์ด๋ค.
โข
์ด๋ฌํ ๋น๋๊ธฐ์ ํน์ฑ ๋๋ฌธ์ ๋ฉ์์ง ํ๋ ์คํจํ๋ฉด ์น๋ช
์ ์ธ ํต์ฌ ์์
๋ณด๋ค๋ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
์๋ฅผ ๋ค๋ฉด, ์ด๋ฉ์ผ์ ์ก๊ณผ ๊ฐ์ ์์
์ด ์์ ์ ์๋ค.๋๋ ์ด๋ฏธ ์ด๋ฉ์ผ์ ์ ์กํ๊ณ , ์ค์ ๋ฐ๋ ์ฌ๋์ด ์ฝ์ ๋๊น์ง ์๊ฐ์ ๊ฑธ๋ฆฌ๊ฒ ์ง๋ง, ํด๋น ์์
์ด ์๋ฃ์ฒ๋ฆฌ ๋ ๊ฒ์ ์ฐ๋ฆฌ๋ ์๊ณ ์๋ค.๋ฐ๋ก ์ค์๊ฐ์ผ๋ก ์ฒ๋ฆฌ๋์ง ์์๋ ์๋น์ค์ ํฌ๊ฒ ๋ฌธ์ ์๋ ์ด๋ฐ ์์
์ MQ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.์ฆ, MQ๋ย ์ด๋ ์ ๋์ ์๋ต ์ง์ฐ์ด ํ์ฉ๋๋ฉฐ, ์ดํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๊ธฐ๋ฅ์ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
message queue ์ฅ์
โข
๋น๋๊ธฐ(Asynchronous)
โฆ
๋ฉ์์ง ํ๋ ์์ฐ๋ ๋ฉ์์ง์ ์ ์ฅ, ์ ์ก์ ๋ํด ๋๊ธฐํ ์ฒ๋ฆฌ๋ฅผ ์งํํ์ง ์๊ณ , ํ์ ๋ฃ์ด ๋๊ธฐ ๋๋ฌธ์ ๋์ค์ ์ฒ๋ฆฌํ ์ ์๋ค.
โฆ
์ฌ๊ธฐ์, ๊ธฐ์กด ๋๊ธฐํ ๋ฐฉ์์ ๋ง์ ๋ฉ์์ง(๋ฐ์ดํฐ)๊ฐ ์ ์ก๋ ๊ฒฝ์ฐ ๋ณ๋ชฉ์ด ์๊ธธ ์ ์๊ณ , ๋ค์ ๋ค์ด์ค๋ ์์ฒญ์ ๋ํ ์๋ต์ด ์ง์ฐ๋ ๊ฒ์ด๋ค.
โข
๋ฎ์ ๊ฒฐํฉ๋(Decoupling)
โฆ
์์ฐ์ ์๋น์ค์ ์๋น์ ์๋น์ค๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ํ๋ํ๊ฒ ๋จ์ผ๋ก์จ ์๋น์ค ๊ฐ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ค.
โข
ํ์ฅ์ฑ(Scalable)
โฆ
์์ฐ์ ์๋น์ค ํน์ ์๋น์ ์๋น์ค๋ฅผ ์ํ๋ ๋๋ก ํ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ฅ์ฑ์ด ์ข๋ค.
โข
ํ๋ ฅ์ฑ(Resilience)
โฆ
์๋น์ ์๋น์ค๊ฐ ๋ค์ด๋๋๋ผ๋ ์ดํ๋ฆฌ์ผ์ด์
์ด ์ค๋จ๋๋ ๊ฒ์ ์๋๋ค. ๋ฉ์์ง๋ ๋ฉ์์ง ํ์ ๋จ์ ์๋ค. ์๋น์ ์๋น์ค๊ฐ ๋ค์ ์์๋ ๋๋ง๋ค ์ถ๊ฐ ์ค์ ์ด๋ ์์
์ ์ํํ์ง ์๊ณ ๋ ๋ฉ์์ง ์ฒ๋ฆฌ๋ฅผ ์์ํ ์ ์๋ค.
โข
๋ณด์ฅ์ฑ(Guarantees)
โฆ
๋ฉ์์ง ํ๋ ํ์ ๋ณด๊ด๋๋ ๋ชจ๋ ๋ฉ์์ง๊ฐ ๊ฒฐ๊ตญ ์๋น์ ์๋น์ค์๊ฒ ์ ๋ฌ๋๋ค๋ ์ผ๋ฐ์ ์ธ ๋ณด์ฅ์ ์ ๊ณตํ๋ค.
Kafka
ํน์ง
โข
๋์ ์ฒ๋ฆฌ๋์ ์๊ตฌํ๋ ์ค์๊ฐ ๋ฐ์ดํฐ ํผ๋ ์ฒ๋ฆฌ๋ ๋๊ธฐ ์๊ฐ์ด ์งง์ ํ๋ซํผ์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ฉฐ 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๋ฑ์ ๋นํด์๋ ๋ง์ด ๋ถ์กฑํ์ง๋ง ๋์ฉ๋ ๋ฉ์์ง๋ฅผ ์ง์ํ ์ ์๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ํน์ง์ด๋ค. ํนํ ๋ถ์ฐ ํ๊ฒฝ์์ ๋ณต์ฌ๋ณธ์ ๋ค๋ฅธ ๋
ธ๋์ ์ ์ฅํจ์ผ๋ก์จ ๋
ธ๋ ์ฅ์ ์ ๋ํ ์ฅ์ ๋์์ฑ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ์ด ์๋ค.