카프카가 뭔가요? 라는 질문에
메시지 브로커로써 마이크로 서비스 간 비동기 통신이 가능하도록 해주는 메시지 큐 입니다?
실시간 이벤트를 처리할 수 있는 이벤트 스트리밍 플랫폼입니다?
뭘까?? 메시지 큐야, 이벤트 스트리밍 플랫폼이야 ?
메시지 큐란?
- 비동기적으로 데이터를 주고받기 위한 시스템
- 생산자가 메시지를 생산하고, 소비자가 메시지를 소비하여 처리한다
- 메시지가 큐 자료구조에 저장되어, 한번 소비되면 사라지는 특성이 있고
- 보통 1:1 통신 방식이 일반적이다
- pub/sub 구조로 1:N도 가능하지만, 보통은 단순한 메시지 전달에 초점
- 대표적인 메시지 큐 시스템은 RabbitMQ, AWS SQS 가 있다.
- 예: 주문 처리 시스템
사용자가 주문하면 orderQueue에 메시지가 들어가고, 주문 처리 서비스가 큐에서 메시지를 가져와 처리 후 삭제한다.
이벤트 스트리밍 플랫폼
- 데이터를 실시간으로 지속적으로 수집하고, 저장하고, 여러 소비자가 동시에 사용할 수 있는 시스템이다.
- 아파치 카프카가 대표적인 이벤트 스트리밍 플랫폼이다.
- 데이터를 event 단위로 저장하고, 스트리밍 방식으로 소비할 수 있다.
- 메시지가 즉시 삭제되지 않으며, Log-based storage 방식으로 보존이 가능하다
- 1:N 방식을 지원하고, 여러개의 소비자가 독립적으로 동일 이벤트를 소비할 수 있다.
- 데이터 순서를 보장하는 파티션 구조를 사용한다
- 대표적인 이벤트 스트리밍 플랫폼은 아파치 Kafka 가 있다.
- 예: 실시간 데이터 분석
사용자가 주문 이벤트를 저장하면, 여러 소비자가 동시에 처리하게 되는데
하나의 컨슈머는 "결제 시스템"으로 보내고, 다른 컨슈머는 "추천 시스템"에 보내서 분석하도록 한다.
카프카는 엄밀히 말하면 메시지 큐가 아니라 이벤트 스트리밍 플랫폼
- 카프카를 메시지 큐처럼 사용할 수도 있다, 하지만 본질은 이벤트 스트리밍 플랫폼이다
- 메시지를 삭제하지 않고 로그 형태로 보존이 가능하고
- 다중 소비자 모델을 지원 (소비자 그룹)
메시지 큐는 보통 1개의 컨슈머가 가져가면 끝이다!
- 실시간 스트리밍 처리가 가능하다
메시지 큐는 단순 비동기 메시징
- 분산 환경에서 대규모 처리에 강하다
정리
메시지 큐는
- 데이터 보관 X (메모리 상에만 유지)
- 메시지 전달 순서 보장 X (생산된 순서와 소비되는 순서 달라질 수 있음)
이벤트 스트리밍 플랫폼은
- 데이터 보관함.
- 파티션 내에서 메시지 전달 순서 보장함.