메시징 플랫폼 비교 - SQS, SNS, Kafka, RabbitMQ
2022. 2. 11. 11:03ㆍETC
메시징 플랫폼을 선택할 때, 각 제품의 특징, 장단점을 비교하여 선택에 도움이 될 수 있도록 비교해보겠습니다.
먼저 각 제품에 대한 기본적인 개념과 특징들은 아래 글들을 참고해주세요.
1. AWS SQS란? - https://yoonbing9.tistory.com/126
2. AWS SNS란? - https://yoonbing9.tistory.com/127
3. Kafka란? - https://yoonbing9.tistory.com/128
4. RabbitMQ란? - https://yoonbing9.tistory.com/129
SQS vs SNS vs Kafka vs RabbitMQ 스펙 비교
SQS | SNS | Kafka | RabbitMQ | |
오픈소스 | - | - | 오픈소스 | 오픈소스 |
브로커 구분 | 메시지 브로커 | 메시지 브로커 | 이벤트 브로커 | 메시지 브로커 |
Queue/Topic | Queue | Topic | Topic | Queue |
동기/비동기 | 둘 다 가능 | 비동기 | 비동기 | 둘 다 가능 |
메시지 전달 보장 수준 | At least once(Standard), Exactly once(FIFO) |
메시지 전달 후 삭제하기 때문에 상실 가능. | At most once, At least once, Exactly once |
At most once, At least once |
메시지 순서 보장 수준 | Standerd - Best effort, FIFO - 순서 보장 |
한 컨슈머 그룹 기준으로 파티션의 메시지는 순서 보장 | 하나의 큐에 하나의 컨슈머 연결시 순서 보장 | |
모니터링 | SQS 콘솔, Cloud Watch 콘솔 이용 가능 | SQS 콘솔, Cloud Watch 콘솔 이용 가능 | 모니터링 오픈소스 연동해야함. | 모니터링 오픈소스 연동해야함. |
성능 | 300TPS | 무제한TPS | 100000TPS | 20000TPS |
개발 언어 | - | - | Scala | Erlang |
프로토콜 | HTTP, HTTPS, SMTP, SMS, SQS, application, lambda and firehouse | Binary protocol over TCP | AMQP, MQTT, STOMP |
메시지 전달 보장 수준
종류 | 개요 | 재전송유무 | 중복 삭제 유무 | 비고 |
At Most Once | 1회 전달 시도 | X | X | 메시지는 중복되지 않지만 상실될 수 있음 |
At Least once | 적어도 1회는 전달 | O | X | 메시지가 중복될 가능성은 있지만, 상실되지는 않음 |
Exactly Once | 1회만 전달 | O | O | 중복되거나 상실되지도 않고 확실하게 메시지가 도달하지만, 성능이 나오지 않음 |
메시지 플랫폼을 선택할 때, 단순 제품 스펙만 비교해서 선택할 순 없을 것 같습니다.
제품 스펙은 적용할 프로젝트와 제품이 잘 맞는지 판단하는 것에 도움을 줄 수 있지만,
제품 선택에는 다양한 관점이 필요한 것 같습니다.
예를 들어, 팀에서 하나의 메시지 플랫폼으로 통일할 것인지, 인프라 구축 비용, 운영 비용 등
이런 것들은 스펙만으로 판단할 수 없고 사용 경험이 도움이 될 것 같습니다.
'ETC' 카테고리의 다른 글
메시지 플랫폼 장애 에러 처리 비교 - SQS, RabbitMQ, Kafka (0) | 2022.02.15 |
---|---|
RabbitMQ란? (0) | 2022.02.09 |
Kafka(카프카)란? (0) | 2022.02.07 |
AWS SNS란? (0) | 2022.02.07 |
AWS SQS란? (0) | 2022.02.07 |