๊ณต๋ถ/TIL
[20250314] Kafka์ RabbitMQ ์ฝ๊ฒ ์ดํดํด๋ณด์!
dvlpsy๐ผ
2025. 3. 14. 10:27
๋ฐ์ํ
๐ Kafka์ RabbitMQ๋ ๋ฌด์์ธ๊ฐ์?
๋ ๋ค ์๋น์ค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ **๋ฉ์์ง ๋ธ๋ก์ปค(Message Broker)**์์.
ํ์ง๋ง ์ค๊ณ ๋ชฉ์ ๊ณผ ๋์ ๋ฐฉ์์ด ๋ฌ๋ผ์ ๊ฐ๊ฐ ์ ๋ง๋ ์ํฉ์ด ์์ด์.
- Kafka: ๋์ฉ๋ ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ๊ณผ ์ด๋ฒคํธ ๋ก๊ทธ์ ํนํ
- RabbitMQ: ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ๋ฉ์์ง ์ ๋ฌ๊ณผ ๋น๋๊ธฐ ์์ ์ฒ๋ฆฌ์ ์ ํฉ
๐ ๋น์ ๋ก ์ดํดํ๊ธฐ
- Kafka๋ CCTV ๋
นํ ์์คํ
- ๋ชจ๋ ์ด๋ฒคํธ(๋ก๊ทธ)๋ฅผ ์์๋๋ก ๊ธฐ๋กํ๊ณ ํ์ํ ๋ ๋ค์ ๋๋ ค๋ด
- ๋ฐ์ดํฐ๊ฐ ๋ง์๋ ๋๊น ์์ด ๋น ๋ฅด๊ฒ ์ ์ฅ
- RabbitMQ๋ ํ๋ฐฐ ๋ฌผ๋ฅ ์ผํฐ
- ๋์ฐฉํ ํ๋ฐฐ(๋ฉ์์ง)๋ฅผ ์ฆ์ ๋ฐฐ๋ฌ
- ๋ฐฐ๋ฌ(์ฒ๋ฆฌ)์ด ๋๋๋ฉด ์ฐฝ๊ณ ์์ ์ญ์
๐ง Kafka์ RabbitMQ์ ๋์ ๋ฐฉ์ ์ฐจ์ด์
| ๊ฐ๋ | ๐๏ธ Kafka | ๐ฌ RabbitMQ |
| ๋ฉ์์ง ์ ์ฅ | ํ๋๋์คํฌ์ ์๊ตฌ ์ ์ฅ | ๋ฉ๋ชจ๋ฆฌ์ ์์ ์ ์ฅ (์ํ๋ฉด ๋์คํฌ ์ ์ฅ๋ ๊ฐ๋ฅ) |
| ๋ฉ์์ง ์๋ช | ์ญ์ ํ๊ธฐ ์ ๊น์ง ์ ์ง | ์ฝ์ผ๋ฉด ์ญ์ (๊ธฐ๋ณธ ์ค์ ) |
| ์์ ๋ณด์ฅ | ํํฐ์ ๋ด์์ ์๊ฒฉํ ์์ ๋ณด์ฅ | ์ฌ๋ฌ ์ปจ์๋จธ๊ฐ ์์ผ๋ฉด ์์ ๋ณด์ฅ ์ด๋ ค์ |
| ์ ์ก ์๋ | ๋๋์ ๋ฐ์ดํฐ์ ์ ํฉ (์ด๋น ์๋ฐฑ๋ง ๊ฑด) | ๋จ์ผ ๋ฉ์์ง์ ๋น ๋ฆ (์ด๋น ์์ฒ~์๋ง ๊ฑด) |
| ํ์ฅ์ฑ | ๋ ธ๋(๋ธ๋ก์ปค) ์ถ๊ฐ๋ก ์ฝ๊ฒ ํ์ฅ | ํ์ ์ปจ์๋จธ๋ฅผ ๋๋ ค์ ํ์ฅ |
| ๋ฉ์์ง ์ฌ์ฒ๋ฆฌ | ์ด๋ฏธ ์ฝ์ ๋ฉ์์ง๋ฅผ ๋ค์ ์ฝ์ ์ ์์ | ์ญ์ ๋ ๋ฉ์์ง๋ ๋ค์ ๋ฐ์ ์ ์์ |
| ๋ณต์ก์ฑ | ์ค์ ๊ณผ ์ด์์ด ๋ณต์กํจ | ์ค์ ๊ณผ ์ฌ์ฉ์ด ์๋์ ์ผ๋ก ๊ฐ๋จํจ |
| ์ฃผ์ ์ฌ์ฉ ์ฌ๋ก | ๋ก๊ทธ ์์ง, ์คํธ๋ฆฌ๋ฐ, ์ด๋ฒคํธ ์์ฑ | ์ด๋ฉ์ผ ๋ฐ์ก, ๋น๋๊ธฐ ์์ , ์๋ฆผ |
๐ฆ Kafka์ RabbitMQ์ ๊ตฌ์กฐ ์ฐจ์ด์
๐๏ธ Kafka ๊ตฌ์กฐ
- Producer: ๋ฐ์ดํฐ๋ฅผ Kafka๋ก ๋ณด๋
- Broker: ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฒ (์ฌ๋ฌ ๋๋ก ํ์ฅ ๊ฐ๋ฅ)
- Topic: ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ (์นดํ ๊ณ ๋ฆฌ์ฒ๋ผ ์ฌ์ฉ)
- Partition: ํ ํฝ์ ์ชผ๊ฐ์ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐ ์ ์ฅ
- Consumer: ๋ฉ์์ง๋ฅผ ์ฝ๋ ์๋น์ค
๐ ํน์ง: ๋ฉ์์ง๋ฅผ ์ค๋ ๋ณด๊ดํ๋ฉฐ, ํ์ํ ์์ ์ ์ฌ๋ฌ ๋ฒ ์ฝ์ ์ ์์ด์.
๐ ๋น์ :
- Kafka๋ CCTV ๋ นํ ์์คํ
- ์ฌ๋ฌ ์ฌ๋์ด ์ํ๋ ์ฅ๋ฉด์ ๊ฐ์ ๋ค์ ๋ณผ ์ ์์
๐ฌ RabbitMQ ๊ตฌ์กฐ
- Producer: ๋ฉ์์ง๋ฅผ RabbitMQ๋ก ๋ณด๋
- Exchange: ๋ฉ์์ง๋ฅผ ์ด๋ค ํ๋ก ๋ณด๋ผ์ง ๊ฒฐ์
- Queue: ๋ฉ์์ง๋ฅผ ์ ์ฅํ๋ ๊ณณ (์ปจ์๋จธ๊ฐ ๊ฐ์ ธ๊ฐ)
- Consumer: ๋ฉ์์ง๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ์๋น์ค
๐ ํน์ง: ํ ๋ฒ ์ฒ๋ฆฌํ ๋ฉ์์ง๋ ์ฌ๋ผ์ง (๊ธฐ๋ณธ ์ค์ ).
๐ ๋น์ :
- RabbitMQ๋ ํ๋ฐฐ ๋ฌผ๋ฅ ์ผํฐ
- ํ๋ฐฐ๋ฅผ ๋ณด๊ดํ๋ค๊ฐ ์๋ นํ๋ฉด ์ฐฝ๊ณ ์์ ์ญ์
๐ Kafka์ RabbitMQ๋ฅผ ์ธ์ ์ฌ์ฉํด์ผ ํ ๊น?
โ Kafka๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ
- ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ์ด๋น ์๋ฐฑ๋ง ๊ฑด์ ์ด๋ฒคํธ๋ฅผ ์์งํด์ผ ํ ๋
- ์: ์ฌ์ฉ์ ํ๋ ๋ก๊ทธ, ๊ฑฐ๋ ๋ด์ญ, ์ค์๊ฐ ๋ชจ๋ํฐ๋ง
- ๋ฉ์์ง ๋ณด์กด ๋ฐ ์ฌ์ฒ๋ฆฌ
- ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ๋ถ์ํ ํ์๊ฐ ์์ ๋
- ์: ๋ฐ์ดํฐ ๋ถ์, ์ฅ์ ๋ณต๊ตฌ ํ ๋ฉ์์ง ์ฌ์ฒ๋ฆฌ
- ์คํธ๋ฆฌ๋ฐ ์ฒ๋ฆฌ
- ์ด๋ฒคํธ๋ฅผ ์ค์๊ฐ์ผ๋ก ์ ๋ฌํ๊ณ ๋ณํํด์ผ ํ ๋
- ์: ์ค์๊ฐ ์ฑํ , IoT ์ผ์ ๋ฐ์ดํฐ ์์ง
- ์ฌ๋ฌ ์๋น์ค์์ ๋์ผํ ๋ฉ์์ง๋ฅผ ์ฝ์ด์ผ ํ ๋
- ์ฌ๋ฌ ํ/์๋น์ค๊ฐ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ์๋ก ํ ๋
- ์: ์ฃผ๋ฌธ ๋ฐ์ดํฐ → ์ฌ๊ณ ์์คํ + ๋ฐฐ์ก ์์คํ ์์ ๋ชจ๋ ์ฒ๋ฆฌ
โ RabbitMQ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ
- ๋น ๋ฅธ ๋น๋๊ธฐ ์์
- ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธด ์์ ์ ๋์ค์ ์ฒ๋ฆฌํ๊ณ ์ถ์ ๋
- ์: ์ด๋ฉ์ผ ๋ฐ์ก, ์๋ฆผ, PDF ์์ฑ
- ๋จ์ํ ๋ฉ์์ง ์ ๋ฌ
- ์๋น์ค ๊ฐ ๋น ๋ฅธ ๋ฉ์์ง ์ ๋ฌ์ด ํ์ํ ๋
- ์: ์ฌ์ฉ์ ๋ฑ๋ก ํ ์ฐ์ปด ๋ฉ์ผ ๋ฐ์ก
- ์ค์๊ฐ ์์
- ์ฆ์ ์ฒ๋ฆฌํด์ผ ํ ๋จ์ผ ์์ ์ ์ ํฉ
- ์: ๊ฒฐ์ ์น์ธ → ๋ฐฐ์ก ์์คํ ์ผ๋ก ์๋ฆผ
- ์์ ๊ท๋ชจ์ ์์คํ
- ๊ด๋ฆฌ๊ฐ ์ฌ์ด ๊ฒฝ๋ ๋ฉ์์ง ํ๊ฐ ํ์ํ ๋
- ์: ์ค์๊ท๋ชจ ํ๋ก์ ํธ์์ ์๋น์ค ๊ฐ ํต์
โ๏ธ Kafka vs RabbitMQ – ์ค์ ๋น๊ต
| ๋น๊ต ํญ๋ชฉ | ๐๏ธ Kafka | ๐ฌ RabbitMQ |
| ์ฒ๋ฆฌ ์๋ | ๋๋์ ๋ฐ์ดํฐ(์ด๋น ์๋ฐฑ๋ง ๊ฑด) | ๋จ์ผ ๋ฉ์์ง ์ฒ๋ฆฌ์ ๋น ๋ฆ (์ด๋น ์์ฒ ๊ฑด) |
| ํ์ฅ์ฑ | ๋ ธ๋ ์ถ๊ฐ๋ก ์์ฝ๊ฒ ํ์ฅ ๊ฐ๋ฅ | ์ปจ์๋จธ์ ํ ์ถ๊ฐ๋ก ํ์ฅ ๊ฐ๋ฅ |
| ์์ ๋ณด์ฅ | ํํฐ์ ๋จ์๋ก ๋ฉ์์ง ์์ ๋ณด์ฅ | ์ฌ๋ฌ ์ปจ์๋จธ๊ฐ ์์ผ๋ฉด ์์ ๋ณด์ฅ ์ด๋ ค์ |
| ๋ฉ์์ง ๋ณด๊ด | ์ญ์ ์ ๊น์ง ๋ณด์กด (๊ธฐ๋ณธ 7์ผ ์ด์) | ์๋น ํ ์ญ์ (๊ธฐ๋ณธ ์ค์ ) |
| ๋ฉ์์ง ์ฌ์ฒ๋ฆฌ | ํ์ํ ๋ ๊ณผ๊ฑฐ ๋ฉ์์ง ์ฌ์ฒ๋ฆฌ ๊ฐ๋ฅ | ํ ๋ฒ ์ฒ๋ฆฌํ ๋ฉ์์ง๋ ์ฌ์ฒ๋ฆฌ ๋ถ๊ฐ |
| ์ค์น ๋ฐ ๊ด๋ฆฌ | ์ค์ ๋ณต์ก, ์ด์ ๋๊ตฌ ํ์ (Zookeeper) | ์ค์น ๋ฐ ๊ด๋ฆฌ๊ฐ ์ฌ์ |
| ์ฌ์ฉ ์ฌ๋ก | ๋ก๊ทธ ์์ง, ์คํธ๋ฆฌ๋ฐ, ๋๊ท๋ชจ ์ด๋ฒคํธ | ๋น๋๊ธฐ ์์ , ์๋ฆผ, ์๊ท๋ชจ ์ด๋ฒคํธ ์ฒ๋ฆฌ |
๐ Kafka์ RabbitMQ, ์ด๋ ๊ฒ์ ์ ํํด์ผ ํ ๊น?
- Kafka๋ฅผ ์ ํํด์ผ ํ ๋
- ์ด๋น ์์ญ๋ง~์๋ฐฑ๋ง ๊ฑด ์ด์์ ๋์ฉ๋ ๋ฐ์ดํฐ
- ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋กํ๊ณ ๋์ค์ ๋ค์ ์ฝ์ด์ผ ํ ๋
- ์ฌ๋ฌ ์๋น์ค๊ฐ ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํด์ผ ํ ๋
- RabbitMQ๋ฅผ ์ ํํด์ผ ํ ๋
- ๋จ์ํ ๋น๋๊ธฐ ์์ (์: ์ด๋ฉ์ผ, ์๋ฆผ)
- ๋น ๋ฅธ ๋ฉ์์ง ์ ๋ฌ๊ณผ ์ฆ์ ์ฒ๋ฆฌ
- ์ค์ ๊ณผ ์ด์์ ์ฝ๊ฒ ํ๊ณ ์ถ์ ๋
๐ฏ ์ ๋ฆฌ – ์ค๋ฌด์์์ ์ ํ ๊ธฐ์ค
- ๋๊ท๋ชจ ์ค์๊ฐ ๋ก๊ทธ ์์ง → Kafka
- ์ด๋ฉ์ผ ๋ฐ์ก, ์๋ฆผ ์๋น์ค → RabbitMQ
- ์ด๋ฒคํธ ์ ์ฅ ๋ฐ ๋ถ์ → Kafka
- ๊ฐ๋จํ ์๋น์ค ๊ฐ ํต์ → RabbitMQ