1) 카프카의 장점
(1) 다중 프로듀서
- 카프카는 자연스럽게 여러 프로듀서를 처리할 수 있다.
프로듀서 클라이언트가 여러 토픽을 사용하든 하나의 토픽을 사용하든 간에 말이다.
이러한 이유 때문에 많은 프론트엔드 시스템으로부터
데이터를 수집하고 일관성을 유지하는데 적격이다.
(2) 다중 컨슈머
- 다중 프로듀서와 함께, 카프카는 많은 컨슈머가 상호 간섭 없이
어떠한 메시지 스트림도 읽을 수 있도록 설계되었다.
이것이 하나의 메시지를 하나의 클라이언트에서만 소비할 수 있도록 되어 있는
많은 큐(queue) 시스템과의 결정적인 차이점이기도 하다.
- 다수의 카프카 컨슈머는 컨슈머 그룹의 일원으로 작동함으로써
하나의 스트림을 여럿이서 나눠서 읽을 수 있다.
이 경우 주어진 메시지는 전체 컨슈머 그룹에 대해 한 번만 처리된다.
(3) 디스크 기반 보존
- 카프카는 다중 컨슈머를 처리할 수 있을 뿐만 아니라
메시지를 지속성 있게 저장할 수도 있다.
이는 컨슈머들이 항상 실시간으로 데이터를 읽어올 필요는 없다는 의미이기도 하다.
- 메시지는 디스크에 쓰여진 뒤 설정된 보유 규칙과 함께 저장된다.
이 옵션들은 토픽별로 설정이 가능하기 때문에
서로 다른 메시지 스트림이 컨슈머의 필요에 따라 서로 다른 기간 동안 보존될 수 있다.
- 따라서 만약 컨슈머가 느린 처리 속도 혹은 트래픽 폭주로 인해 뒤처질 경우에도
데이터 유실의 위험은 없다.
- 프로듀서 쪽에서 메시지를 백업해야 하거나 메시지가 유실될 걱정 없이
잠시 애플리케이션을 내리고 컨슈머를 유지보수할 수 있는 것이다.
- 컨슈머를 정지하더라도 메시지는 카프카 안에 남아있게 된다.
그리고 컨슈머가 다시 시작되면 작업을 멈춘 짖머에서부터 유실 없이 데이터를 처리할 수 있다.
(4) 확장성
- 카프카는 유연한 확장성을 가지고 있기 때문에 어떠한 크기의 데이터도 쉽게 처리할 수 있다.
처음에는 실제로 잘 돌아가는지를 검증하는 의미에서 하나의 브로커로 시작한 뒤,
3개의 브로커를 가진 소규모의 개발용 클러스터,
마지막에는 데이터 증가에 따라 수십 개에서 수백 개의 브로커로 구성된 대규모 클러스터로 이루어진
프로덕션 환경으로 옮겨가면 된다.
- 카프카 클러스터는 작동 중에도 시스템 전체의 가용성(availability)에 영향을 주지 않으면서
확장이 가능하다.
여러 대의 브로커로 구성된 클러스터는 개별 브로커의 장애를 처리하면서
지속적으로 클라이언트의 요청을 받아서 처리할 수 있다는 의미다.
(5) 고성능
- 아파치 카프카가 고부하 아래에서도 높은 성능을 보여주는 발행/구독 메시지 전달 시스템이 될 수 있었던 것은
지금까지 설명한 모든 특징들 덕분이다.
발행된 메시지가 컨슈머에게 전달될 때까지 1초도 안 걸리면서도
프로듀서, 컨슈머, 브로커 모두가 매우 큰 메시지 스트림을 쉽게 다룰 수 있도록
수평적으로 확장될 수 있는 것이다.
(6) 플랫폼 기능
- 아파치 카프카의 코어 프로젝트에는 개발자들이 자주 하는 작업을 훨씬 쉽게 수행할 수 있도록 하는
플랫폼 기능이 추가되어 있다.
YARN처럼 구조화된 런타임 환경을 포함하는 완전한 플랫폼은 아니지만,
이 기능들은 탄탄한 기반과 자유로운 형태로 실행할 수 있는 유연성을 갖춘 API와
라이브러리의 형태로 사용이 가능하다.
- 카프카 커넥트는 소스 데이터 시스템으로부터 카프카로 데이터를 가져오거나
카프카의 데이터를 싱크 시스템으로 내보내는 작업을 도와준다.
- 카프카 스트림즈는 규모 가변성(scalability)과 내고장성(fault tolerance)을 갖춘
스트림 처리 애플리케이션을 쉽게 개발할 수 있게 해주는 라이브러리다.
'카프카 핵심 가이드' 카테고리의 다른 글
[카프카 핵심 가이드] 신뢰성 보장과 복제 (0) | 2024.12.13 |
---|---|
[카프카 핵심 가이드] 프로듀서 설정하기 (0) | 2024.12.13 |
[카프카 핵심 가이드] 카프카 컨슈머: 개념 - 컨슈머 그룹과 파티션 리밸런스 (0) | 2024.08.25 |
[카프카 핵심 가이드] 카프카 컨슈머: 카프카에서 데이터 읽기 - 카프카 컨슈머: 개념 (0) | 2024.08.25 |
[카프카 핵심 가이드] 카프카 프로듀서: 카프카에 메시지 쓰기 (0) | 2024.08.17 |