오늘은 Docker compose를 활용하여 카프카 기본 환경을 구축해보려고 합니다!
해당 환경은 dokcer compose 를 활용하여 3대의 브로커 서버와 1대의 kafka web ui 로 구성된 환경입니다.
시작에 앞서 카프카 설명을 간단하게 해보도록 하겠습니다!
1. Kafka란? 카프카란?
Apache Kafka는 실시간 스트리밍 데이터 처리를 위해 Linkedin에서 개발하였으며 현재는 Apache 소프트웨어 재단에서 관리하고 있는 오픈 소스 분산 데이터 스트리밍 플랫폼 입니다. 여러 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계 되었습니다.
- 카프카는 Pub/Sub 모델(구조)를 따릅니다.
pub/sub 모델(구조, 패턴)이란 발행 - 구독 모델로 발행자(Publisher)가 데이터를 중간 컴포넌트(브로커 또는 채널)에게 알려주고 구독자(Subscriber)는 특정 컴포넌트를 구독하여 데이터를 가져가는 구조입니다.
특징은 아래와 같습니다.
1 ) Topic이 있는 Broker 혹은 Channel을 이용한 메세징 시스템이다.
2) 중간 저장소(Broker 혹은 Channel)가 존재하기에 안정적이나 타 시스템에 비하여 느릴 수 있다.
3) 메세지는 보내는 측(Publisher), 메세지 받는 측(Subscriber)으로 구성 된다.
자세한 내용은 별도의 글로...!
2. Kafka 특징, 카프카의 특징
- 고성능
kafka는 disk I/O 와 network I/O 를 효울적으로 활용하여 높은 처리량을 보입니다. kafka는 수백만 메세지를 초당 처리할 수 있으며 이는 대규모 시스템에서 실시간 데이터 처리 요구를 충족시킬 수 있습니다.
- 확장성
kafka 클러스터는 수십, 수백개의 서버로 구성 될 수 있으며 데이터 스트림의 규모가 커짐에 따라 쉽게 확장 할 수 있습니다.
- 내구성과 신뢰성
kafka는 데이터 복제를 통해 메세지의 손실 없이 고가용성을 보장합니다. 클러스터 내의 노드가 실패하더라도 데이터는 안전하게 보존됩니다.
3. kafka의 핵심 구성 요소
- 프로듀서(Producer)
데이터를 생성하여 kafka의 토픽으로 전송하는 역할
- 컨슈머(Consumer)
토픽에서 데이터를 읽는 역할
- 브로커(Broker)
kafka서버의 인스턴스로 클러스터를 구성하며 데이터의 저장, 전송을 담당
- 토픽(Topic)
메세지가 저장되는 카테고리나 피드의 이름으로 토픽은 하나 이상의 파티션으로 나뉘어 데이터를 분산 저장 처리
4. kafka의 용도 및 활용 사례
kafka는 서비스 개발시 정말 많은 부분에서 여러 용도로 사용되고 있습니다.
- 실시간 로깅 및 모니터링 시스템
시스템 로그 및 사용자 이벤트, 오류 메세지등을 실시간으로 수집하고 처리하며 모니터링 가능케 해줍니다.
- 스트림 처리
실시간 데이터 스트림을 처리하고 변환, 집계하는 에플리케이션을 구축할 수 있게 해줍니다.
- 이벤트 소싱
변경 사항을 이벤트로 기록하여 에플리케이션의 상태를 관리하고, 이를 통한 복잡한 시스템에서의 데이터 일관성을 책임지고 복구를 용이하게 도와줍니다.
- 데이터 통합
분산된 데이터 소스와 시스템 간의 데이터를 효율적으로 통합하고 이동시킵니다.
다음 글에서는 이러한 카프카를 도커 컴포즈를 활용하여 로컬에 구축해보도록 하겠습니다.
'Kafka' 카테고리의 다른 글
2탄 docker compose 활용, 로컬 카프카 환경 구축하기 kafka + kafka ui (0) | 2024.03.07 |
---|