Comparison message queue - ruthetum/study GitHub Wiki
apache kafka, rabbitmq, nats ๋์์ผ๋ก ์งํํฉ๋๋ค.
๋ค์ํ message queue๊ฐ ์กด์ฌํ์ง๋ง, ํ์ฌ ๊ธฐ์ค์ผ๋ก๋ ์๊ธ์ด ๋ฐ์ํ๋ ๊ด๋ฆฌํ ์๋น์ค(managed service)๋ ์ ์ธํ๊ณ ๋ฌด๋ฃ๋ก ์ด์ฉ ๊ฐ๋ฅํ message queue๋ฅผ ๊ณ ๋ คํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ kafka, rabbitmq์ ๋๋ถ์ด ์ด์ ์ ์ ์ฒด์ ์ผ๋ก ์ฌ์ฉ ๊ฒฝํ์ด ์์๋ nats๋ฅผ ํฌํจํฉ๋๋ค.
ํน์ง
Apache Kafka
์๊ฐ
2011๋ ๋งํฌ๋์ธ์์ ๊ฐ๋ฐ๋ ๋น ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์คํ ์์ค ๋ฉ์์ง ๋ธ๋ก์ปค(๋ถ์ฐ ๋ฉ์ธ์ง ์์คํ , ์ด๋ฒคํธ ์คํธ๋ฆฌ๋ฐ ํ๋ซํผ)
์์ฑ ์ธ์ด
Java, Scala
์ฃผ์ ํน์ง
High throughput
- ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฌถ์ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ๋ฐฐ์น๋ก ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋์ ์ฒ๋ฆฌ๋์ ๋ณด์ฅ
Scalable
- ํด๋ฌ์คํฐ ๋ด ๋ธ๋ก์ปค ์๋ฅผ ์กฐ์ ํ์ฌ ๊ฐ๋ณ์ ์ธ ํ๊ฒฝ์์ ํ์ฅ์ฑ์๊ฒ ์ด์ ๊ฐ๋ฅ
Persistent Stroage
- ๋์คํฌ์ ๋ฉ์์ง๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง ์์ค์ด ์์(๋ฐ์ดํฐ๋ฅผ ์์ฑํ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋๋ผ๋ ์ฌ๋ผ์ง์ง ์์)
High Availbility
- ํด๋ฌ์คํฐ ๋ด ์ผ๋ถ ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ฌด์ค๋จ์ผ๋ก ์์ ํ๊ณ ์ง์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์
- ๋ฐ์ดํฐ ๋ณต์ (replication)๋ฅผ ํตํด ๊ณ ๊ฐ์ฉ์ฑ ๋ณด์ฅ
์ฌ์ฉ ํ์ฌ
- Apple, Netflix, Uber, PayPal, Spotify, Slack ...
- More than 80% of all Fortune 100 companies trust, and use Kafka.
RabbitMQ
์๊ฐ
AMQP(Advanced Message Queuing Protocol)๊ธฐ๋ฐ์ ์คํ ์์ค ๋ฉ์์ง ๋ธ๋ก์ปค
- AMQP: MQ์ ์คํ์์ค์ ๊ธฐ๋ฐํ ํ์ค ํ๋กํ ์ฝ (ํน์ ํ๋ซํผ์ ์ข ์๋ ํ๋กํ ์ฝ์ด ์๋)
๋ฉ์ธ์ง๋ฅผ ๋ง์ ์ฌ์ฉ์์๊ฒ ์ ๋ฌํ๊ฑฐ๋, ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ ์๊ฐ์ด ๊ธธ ๋, ์์ฒญ์ ๋ค๋ฅธ API์๊ฒ ์์ํ๊ณ ๋น ๋ฅธ ์๋ต์ ํ ๋ ๋ง์ด ์ฌ์ฉ
์์ฑ ์ธ์ด
Erlang
์ฃผ์ ํน์ง
In-built Clustering
- ํ๋์ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋น์์ ์์ฐ์๋ ์ด๋ฒคํธ์์ ๊ณ์ ์๋ํ๊ณ ์ถ๊ฐ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ฌ ๋ฉ์์ง ์ฒ๋ฆฌ๋์ ์ ํ์ ์ผ๋ก ํ์ฅ ๊ฐ๋ฅ
Flexible Routing
- ์ผ๋ฐ์ ์ธ ๋ผ์ฐํ ๋ถํฐ ๋ณต์กํ ๋ผ์ฐํ ๊น์ง ๋ค์ํ๊ณ ์ ์ฐํ ๋ผ์ฐํ ๋ฐฉ๋ฒ์ ์์
Reliability
- Persistence(์ง์์ฑ), delivery feedback, publisher confirms(๋ธ๋ก์ปค์๊ฒ ๋๋ฌ ํ์ธ), and high availability(๊ณ ๊ฐ์ฉ์ฑ) ์ ๊ณต
Management & Monitoring
- ๊ด๋ฆฌ์ ๋ชจ๋ํฐ๋ง์ ์ํ ํธ์ ๊ธฐ๋ฅ ์ ๊ณต
์ฌ์ฉ ํ์ฌ
Raddit, CircleCI, Trivago, Runtastic ...
NATS
์๊ฐ
NATS๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ , IoT ๋ฉ์์ง ๋ฐ ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ ์ฒ๋ฅผ ์ํ ๋จ์ํ๊ณ ์์ ํ ๊ณ ์ฑ๋ฅ ์คํ ์์ค ๋ฉ์์ง ๋ธ๋ก์ปค
Kafka์ ๊ฐ์ด Streaming ๊ธฐ๋ฐ์ ์ ์ก์ผ๋ก Pub/Sub ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅ
์์ฑ ์ธ์ด
Go
์ฃผ์ ํน์ง
High throughput
- ํ ์คํ์์ค ๋ฉ์์ง ๋ธ๋ก์ปค์ ๋น๊ต ์ ์ฐ์ํ ์ฑ๋ฅ ๋ณด์
Deploy anywhere
- ๊ฐ๋ณ๊ณ ๊ฐ๋จํ๊ธฐ ๋๋ฌธ์ ์ด๋ค ํ๊ฒฝ์์๋ ๋ฐฐํฌ ๊ฐ๋ฅํ๊ณ ํ์ฉ ๊ฐ๋ฅ
Scalable
- scale out ์ ์ฉ์ดํ ๊ตฌ์กฐ
์ฌ์ฉ ํ์ฌ
Zenly, Teachable, LaunchDarkly ...
๋น๊ต
๋ฉ์์ง ํ๋ฅผ ์ ํํ๊ธฐ ์ํด ์๋ 6๊ฐ์ง ํญ๋ชฉ์ ํ์ธ
- ์ธ์ด ์ง์
- ์ฒ๋ฆฌ๋
- ๋ฉ์ธ์ง ์ ๋ฌ
- ๊ณ ๊ฐ์ฉ์ฑ
- ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง
- ์ฐธ๊ณ ์๋ฃ
ํด๋ฌ์คํฐ ๋ด๋ถ์์ ์ฐ๊ฒฐ ๋ฐ ํต์ ์ ์งํํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ๊ด๋ จ ๋ถ๋ถ(AuthN, AuthZ)์ ๋น์ฅ์ ์ฐ์ ์์์์ ๋๊ฒ ์ธก์ ํ์ง ์์
(๊ฐ๋ณ์ ์ผ๋ก ๋ณด์ ๊ด๋ จ ๋ถ๋ถ์ ์ง์ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ํ์ ์ ํ์ฉ ๊ฐ๋ฅํ ๊ฒ์ผ๋ก ํ๋จ)
์ธ์ด ์ง์
๊ณ ๋ คํ๊ณ ์๋ ๋ชจ๋ ๋์์ ๋ํด์ ์ง์
Project | Compatibility | Reference |
---|---|---|
Apache Kafka | O | https://docs.nestjs.com/microservices/kafka |
RabbitMQ | O | https://docs.nestjs.com/microservices/rabbitmq |
NATS | O | https://docs.nestjs.com/microservices/nats |
์ฒ๋ฆฌ๋
Project | Throughput |
---|---|
Apache Kafka | 100K msgs/s |
RabbitMQ | 20-50K msgs/s |
NATS | 200K msgs/s |
NATS > Apache Kafka > RabbitMQ
์ฑ๋ฅ ํ ์คํธ ๋ฐฉ๋ฒ์ด๋ ๋ฉ์ธ์ง ํฌ๊ธฐ์ ๋ฐ๋ผ ์ธก์ ๋ ์ฒ๋ฆฌ๋ ์ฐจ์ด๊ฐ ๋ฐ์ํ์ง๋ง ๋ณดํธ์ ์ผ๋ก ํ์ธํ์ ๋ ์์ ๊ฐ์
NATS Streaming(JetStream)์ ๊ฒฝ์ฐ Kafka์ ๋น์ทํ ์ฒ๋ฆฌ๋์ ๋ณด์
๋น์ฐํ๊ฒ ์ง๋ง ๋ฉ์์ง ํฌ๊ธฐ๊ฐ ํฌ๋ฉด ํด์๋ก ์ ์ฒด์ ์ผ๋ก ๋ฉ์ธ์ง ํ์ ์ฑ๋ฅ์ด ๋จ์ด์ง
- ์ด์ ๋ํ ํด๋ฒ์ ์๋๊ฒ ์ง๋ง zero payload ๋ฐฉ์ ์ ์ฉ ์ ์ผ์ ๋ถ๋ถ ์ฑ๋ฅ ๊ฐ์ ๊ฐ๋ฅ (๋ฉ์์ง ํฌ๊ธฐ ๊ฐ์)
- zero payload ๋ฐฉ์์ ๊ฒฝ์ฐ ๋ณธ๋ ๋ชฉ์ ์ ๋ฉ์ธ์ง ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ผ๊ธฐ๋ณด๋ค๋ (ํ์ ๋น์์ฐจ์ฑ ๋๋ ์ค๋ณต ์ ์ก์ผ๋ก ์ธํ) ๋ฉฑ๋ฑ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐฉ์
๋ฉ์ธ์ง ์ ๋ฌ
- At most once(์ต๋ ํ๋ฒ): ์ต๋ ํ ๋ฒ๋ง ์ ์ก, ๋ฉ์์ง๋ฅผ ํ๋ฒ๋ง ์ ์กํ๊ณ ์๋๊ฐ ๋ฐ์๋์ง ๋ฐ์ง ๋ชปํ๋์ง๋ ํ์ธํ์ง ์์
- At least once(์ต์ ํ๋ฒ): ๋ฉ์์ง๋ฅผ ์ ์กํ๊ณ ์ต์ํ ์๋๋ฐฉ์ด ํ๋์ ๋ฉ์์ง๋ ๋ฐ์๋์ง ํ์ธ
- Exactly once(์ ํํ ํ๋ฒ): ๋ฉ์์ง๋ฅผ ์ ํํ ํ๋ฒ๋ง ์ ์ก
Project | QoS / Guarantees |
---|---|
Apache Kafka | At least once, Exactly once |
RabbitMQ | At most once, At least once |
NATS (with JetStream) | At most once, At least once, Exactly once |
๊ณ ๊ฐ์ฉ์ฑ
Availability = Uptime / ( Uptime + Downtime )
- Availability(๊ฐ์ฉ์ฑ): ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์์คํ ์ด ์ ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๋
- High Availability(๊ณ ๊ฐ์ฉ์ฑ): ๊ธด ์๊ฐ๋์ ์ง์์ ์ผ๋ก ์ด์์ด ๊ฐ๋ฅํ ์์คํ ์ด๋ ์ปดํฌ๋ํธ (available 99.999%)
Project | High Availability |
---|---|
Apache Kafka | ํด๋ฌ์คํฐ์ ๋ฆฌํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ผ๋ก ๊ฐ์ฉ์ฑ ๋ณด์ฅ |
RabbitMQ | ํด๋ฌ์คํฐ๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ฉ์ฑ ๋ณด์ฅ |
NATS (with JetStream) | ํด๋ฌ์คํฐ๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ฉ์ฑ ๋ณด์ฅ |
๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง
Project | Management tools | Reference |
---|---|---|
Apache Kafka | ๊ณต์ ๊ด๋ฆฌ ๋๊ตฌ๋ ์กด์ฌํ์ง ์์ง๋ง, ๋ค์ํ ์์ค๋ค์ด ์กด์ฌ | https://towardsdatascience.com/overview-of-ui-monitoring-tools-for-apache-kafka-clusters-9ca516c165bd |
RabbitMQ | ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ํ๊ธฐ ์ํ ๋์๋ณด๋ ๊ธฐ๋ฅ์ด ๋ด์ฅ | https://www.cloudamqp.com/blog/part3-rabbitmq-for-beginners_the-management-interface.html |
NATS (with JetStream) | API ํํ๋ก metric์ ์ ๊ณตํ์ง๋ง, ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ฉ์ดํ์ง ์์ | https://docs.nats.io/running-a-nats-service/nats_admin/monitoring |
์ฐธ๊ณ ์๋ฃ
Project | Github stars | Questions of Stackoverflow |
---|---|---|
Apache Kafka | 25.1K | 31,257 |
RabbitMQ | 10.8K | 14,113 |
NATS | 12.9k | 815 |
์ค๋ ๊ธฐ๊ฐ ์ง์์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋์๋ kafka์ rabbitmq๊ฐ ๋ํผ๋ฐ์ค๋ ๋ง์
์์ฝ
์ธ ๊ฐ์ง ๋ฉ์ธ์งํ ๋ชจ๋ ํ์ฌ ๊ธฐ์ค์ผ๋ก ๋์ ํ๋๋ฐ ๋ฌธ์ ๋ ์์
- ๋น๋๊ธฐ ๋ฉ์ธ์ง ์ ์ก
- ์ฒ๋ฆฌ๋
- ...
์ผ๋ฐ์ ์ผ๋ก kafka์ rabbitmq๊ฐ ์ฑ์(์ค๋๊ธฐ๊ฐ ์์ ์ ์ผ๋ก ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉ)ํ๋ค๊ณ ํ๊ฐ
- ์ด์ ๋ฐ๋ฅธ reference๋ ๋ง์ด ์กด์ฌ
kafka์ rabbitmq๋ฅผ ๋น๊ตํ ๋ ํธ๋ํฝ์ ํฌ๊ธฐ๊ฐ ๋ง์ด ๋ ผ์๋์๊ณ , ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ๊ณ ๋ คํ์ ๋ ๋์ฉ๋ ์ฒ๋ฆฌ๋ฅผ ์ํด์๋ ๋๋ถ๋ถ kafka๋ฅผ ๊ถ์ฅ
- ํธ๋ํฝ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ rabbit mq์์ kafka๋ก ๋ฉ์ธ์งํ๋ฅผ ๋ณ๊ฒฝํ๋ค๋ ๊ฒฝ์ฐ๋ ์กด์ฌ
์๋์ ์ผ๋ก rabbitmq๊ฐ ๊ฐ์ ์ด ์๋ค๊ณ ํ ๋ด์ฉ์ ์๋์ ๊ฐ์
-
low latency
- ๋ฌผ๋ก ํธ๋ํฝ์ด ๋ง์์ง๋ฉด ์ฒ๋ฆฌ๋์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ latency๊ฐ ๊ธ์ฆํ์ง๋ง, ํธ๋ํฝ์ด ์์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ์๋์ ์ผ๋ก latency๊ฐ ๋ฎ์
- ๋ธ๋ก์ปค/์ปจ์๋จธ๊ฐ ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ฐจ์ด ๋๋ฌธ์ ๋ฐ์
- kafka: pull-based approach (smart consumer dumb broker)
- rabbitmq: push-based approach (smart broker, dumb consumer)
-
flexible routing
- rabbitmq์ ๋ค์ํ Exchange pattern(consumer๋ค์ ๋์์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ๋ฐํํ๋ ๋ฐฉ๋ฒ)์ ์ ๊ณต
- consumer๊ฐ topic(subject)๋ฅผ ๊ตฌ๋ ํ์ ๋ ๋ค์ํ ํจํด ๋ฐ ์กฐํฉ์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํ ์ ์์
- kafka์ ๊ฒฝ์ฐ ๋จ์ํ ๋ผ์ฐํ ๋ฐฉ๋ฒ๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ ๋ง์ดํฌ์๋น์ค์์ ๋ณต์กํ ๋ฐฉ์์ผ๋ก topic์ ๊ตฌ๋ ํด์ผ ํ๋ ๊ฒฝ์ฐ rabbitmq๊ฐ kafka๋ณด๋ค ์ ์ฐํ๊ฒ ๋ฉ์ธ์ง๋ฅผ ์ ๋ฌํ ์ ์์
- rabbitmq์ ๋ค์ํ Exchange pattern(consumer๋ค์ ๋์์ผ๋ก ๋ฉ์ธ์ง๋ฅผ ๋ฐํํ๋ ๋ฐฉ๋ฒ)์ ์ ๊ณต
-
user-friendly interface for management
- rabbitmq์ ๊ฒฝ์ฐ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ํ๊ธฐ ์ํ ๋์๋ณด๋ ๊ธฐ๋ฅ์ด ๋ด์ฅ
- kafka๋ ์ธ๋ถ OSS๋ฅผ ํ์ฉํ์ฌ ์ง์
-
๊ทธ ์ธ์ kafka๋ ์์ฒด ํ๋กํ ์ฝ, rabbitmq๋ AMQP ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ ์๋์ ์ผ๋ก ๋ค์ํ ํ๋ซํผ๊ณผ ํธํ๋ ์ ์์
Reference
recommendation
-
kafka: https://kafka.apache.org/
- docs: https://kafka.apache.org/documentation/
- who uses: https://stackshare.io/kafka
-
rabbitmq: https://www.rabbitmq.com/
-
nats: https://nats.io/
- docs: https://docs.nats.io/
- who uses: https://stackshare.io/nats
- ko: https://www.joinc.co.kr/w/CNCF_NATS
-
comparison
- compare with nats: https://docs.nats.io/nats-concepts/overview/compare-nats
- kafka vs rabbitmq
- rabbitmq vs nats
-
performance
- dissecting message queues: https://bravenewgeek.com/dissecting-message-queues/
- kafka vs nats: https://bravenewgeek.com/benchmarking-commit-logs/
- nats performance
-
message delivery guarantees
-
high availability
-
monitoring & dashboard
-
kafka monitoring tools: https://towardsdatascience.com/overview-of-ui-monitoring-tools-for-apache-kafka-clusters-9ca516c165bd
-
kafka-ui: https://github.com/provectus/kafka-ui
-
nats monitoring: https://docs.nats.io/running-a-nats-service/nats_admin/monitoring
-
-
event-driven
- ๋ฐฐ๋ฏผ.ํ์์์คํ ์ด๋ฒคํธ๊ธฐ๋ฐ ์ํคํ ์ฒ ๊ตฌ์ถํ๊ธฐ: https://techblog.woowahan.com/7835/
- zero payload
- Event driven architecture with Kafka and RabbitMQ: https://www.redoxengine.com/blog/event-driven-architecture-with-kafka-and-rabbitmq/
--
https://www.codenary.co.kr/techblog/list?tag=kafka
https://www.codenary.co.kr/techblog/list?tag=rabbitmq
--
Is there any reason to use RabbitMQ over Kafka
I wrote an answer on Stackoverflow a while ago to answer the question, โIs there any reason to use RabbitMQ over Kafka?โ. The answer is just a few lines, but it has proven to be an answer many people have found helpful.
์ ๋ ์ผ๋ง ์ ์คํ ์ค๋ฒํ๋ก์ "๋๋น์ ์ฌ์ฉํ ์ด์ ๊ฐ ์์ต๋๊น?"๋ผ๋ ์ง๋ฌธ์ ๋ตํ๊ธฐ ์ํด ๋ต์ ์ผ์ต๋๋คMQ over Kafka?" ๋ต์ ๋ช ์ค์ ๋ถ๊ณผํ์ง๋ง, ๋ง์ ์ฌ๋๋ค์ด ๋์์ด ๋๋ค๊ณ ์๊ฐํ๋ ๋ต์์ด ์ฆ๋ช ๋์์ต๋๋ค.
I will try to break down the answer into sub answers and try to explain each part.
๋ต์ ํ์ ๋ต์ผ๋ก ๋๋๊ณ ๊ฐ ๋ถ๋ถ์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
First of all, I wrote - โRabbitMQ" is a solid, mature, general-purpose message broker that supports several protocols such as AMQP, MQTT, STOMP, and more.
๋จผ์ , ์ ๋ "RabbitMQ"๋ AMQP, MQTT, STOMP ๋ฑ๊ณผ ๊ฐ์ ์ฌ๋ฌ ํ๋กํ ์ฝ์ ์ง์ํ๋ ๊ฒฌ๊ณ ํ๊ณ ์ฑ์ํ ๋ฒ์ฉ ๋ฉ์์ง ๋ธ๋ก์ปค๋ผ๊ณ ์ผ์ต๋๋ค.
RabbitMQ can handle high throughput. A common use case for it is to handle background jobs or to act as a message broker between microservices.
RabbitMQ๋ ๋์ ์ฒ๋ฆฌ๋์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ๋ฉ์์ง ๋ธ๋ก์ปค ์ญํ ์ ์ํํ๋ ๊ฒ์ด ์ด ์๋ฃจ์ ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก์ ๋๋ค.
Kafka is a message bus optimized for high-ingress data streams and replay. Kafka can be seen as a durable message broker where applications can process and re-process streamed data on disk."
Kafka๋ ๋์ ์ ๋ ฅ ๋ฐ์ดํฐ ์คํธ๋ฆผ ๋ฐ ์ฌ์์ ์ต์ ํ๋ ๋ฉ์์ง ๋ฒ์ค์ ๋๋ค. Kafka๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์คํฌ์์ ์คํธ๋ฆฌ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ค์ ์ฒ๋ฆฌํ ์ ์๋ ๋ด๊ตฌ์ฑ ์๋ ๋ฉ์์ง ๋ธ๋ก์ปค๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค."
Regarding the term โmatureโ; RabbitMQ has simply been on the market for a longer time then Kafka (2007 vs 2011, respectively).
"์ฑ์ํ"์ด๋ผ๋ ์ฉ์ด์ ๊ด๋ จํ์ฌ, ํ ๋ผMQ๋ Kafka(๊ฐ๊ฐ 2007๋ ๊ณผ 2011๋ )๋ณด๋ค ๋ ์ค๋ซ๋์ ์์ฅ์ ๋์ ์์์ต๋๋ค.
Both RabbitMQ and Kafka are โmatureโ, which means they both are considered to be reliable and scalable messaging systems.
RabbitMQ์ Kafka๋ ๋ชจ๋ "์ฑ์ํ" ์ ํ์ ๋๋ค. ์ฆ, ๋ ๋ค ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฉ์์ง ์์คํ ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.