TIL
1.3 카프카의 주요 특징
높은 처리량과 낮은 지연 시간
컨플루언트의 블로그에는 메시징 시스템 간 성능을 비교한 자료가 공개되어 있다.
https://www.confluent.io/blog/kafka-fastest-messaging-system/
블로그에 따르면
처리량이 가장 높은 것은 카프카
응답 속도가 가장 빠른 것은 래밋MQ
다만 처리량/응답 속도를 같이 비교했을 땐 카프카가 단연 독보적
시스템
최대 처리량(Throughput)
p99 지연 시간(Latency)
비고
Kafka
605 MB/s
5 ms (200 MB/s 부하)
처리량, 고가용성, 내구성 우수
Pulsar
305 MB/s
25 ms (200 MB/s 부하)
BookKeeper 구조로 처리량 제한
RabbitMQ
38 MB/s
1 ms (30 MB/s 부하)
낮은 부하에서만 초저지연, 고부하시 급격히 저하
블로그 내용의 결론
Kafka
: 대규모 이벤트 스트리밍, 높은 처리량, 내구성, 고가용성이 필요한 환경에 최적. 대부분의 워크로드에서 최고의 성능과 비용 효율성 제공.
Pulsar
: 특정 큐잉/퍼브섭 패턴에 적합하지만, 처리량 면에서 Kafka에 열세.
RabbitMQ
: 실시간성, 초저지연이 필요한 소규모/특정 환경에 적합. 대규모, 고가용성 요구 환경에는 한계.
높은 확장성
처리량이 아무리 좋아도 확장이 가능해야 한다.
카프카는 손쉬운 확장이 가능하다. (8장에서 자세히 설명)
고가용성
2013년에 클러스터 내 리플리케이션 기능이 추가되었다.
이를 통해 카프카 클러스터의 고가용성이 확보되었다.
고가용성과 함께 지연 없는 빠른 처리를 유지
내구성
카프카 프로듀서는 acks 옵션을 조정하여 메시지 내구성을 강화할 수 있다.
ex) acks=all 옵션은 강력한 내구성을 지원한다.
카프카는 컨슈머가 메시지를 가져가더라도 설정 시간 또는 로그 크기만큼 로컬 디스크에 보관된다.
버그나 장애가 발생해도 재처리 가능
브로커도 한 대가 아닌 여러대를 지원하기에 다른 브로커의 디스크로부터 복구도 가능하다.
개발 편의성
카프카 프로듀서/컨슈머는 완벽하게 분리되어 서로 영항을 주고 받지 않는다.
개발자는 각 부분만 담당하면 된다.
개발 편의 성을 위해 카프카 커넥트와 스키마 레지스트리를 제공한다.
카프카 커넥트 - 프로듀서/컨슈머를 개발하지 않고도 카프카와 연동해 손쉽게 소스와 싱크로 데이터를 주고 받을 수 있는 별도의 애플리케이션
스키마 레지스트리 - 데이터를 파싱하는 데 소요되는 많은 비용을 줄이기 위해 스키마를 정의해 사용할 수 있도록 개발된 애플리케이션
운영 및 관리 편의성
중앙 메인 데이터 파이프라인으로서의 카프카를 운영하려면 확장 작업, 마이그레이션, 모니터링 등이 필수다.
7장에서 그라파나 대시보드 구성에 대해 설명할 예정이다.