🏢 카프카 브로커와 클러스터
🧐 주키퍼란?
카프카 클러스터를 운영하기 위해 반드시 필요한 애플리케이션이 바로 주키퍼(Zookeeper) 이다. 그렇다면, 주키퍼는 정확히 어떤 역할을 하는 걸까?
카프카에서 브로커가 여러 개 묶여서 클러스터를 이루는데, 이 클러스터의 상태를 관리하고, 브로커들 간의 조정을 담당하는 것이 주키퍼의 역할이다. 쉽게 말해, 클러스터의 '관리자'라고 볼 수 있다. 그런데 요즘은 주키퍼 없이 카프카를 운영하는 방식도 있다고 하던데, 그건 어떻게 가능한 걸까? 🤔
🚀 카프카 브로커란?
카프카 브로커(Kafka Broker) 는 카프카 클라이언트와 데이터를 주고받는 핵심 주체다. 브로커는 데이터를 분산 저장 하여 장애가 발생하더라도 안전하게 사용할 수 있도록 돕는다.
- 하나의 서버에는 한 개의 브로커 프로세스가 실행됨
- 브로커 1대로도 실행 가능하지만, 일반적으로 3대 이상의 브로커를 클러스터로 묶어서 운영
- 카프카 클러스터로 묶인 브로커들은 데이터를 분산 저장하고 복제하는 역할 수행
🏗️ 카프카 클러스터 운영 방식
일반적으로 하나의 카프카 클러스터에는 3개의 브로커 가 운영된다. 하지만 데이터량이 많아지고 확장이 필요할 경우, 많게는 50개에서 100개 의 브로커를 운영하는 경우도 있다고 한다. 🤯
때로는 클러스터를 2개 또는 3개로 나누어 운영하기도 한다. 이때 궁금한 점이 하나 있다. 클러스터를 여러 개로 나누면 어떤 장점이 있을까? 클러스터가 많아지면 관리가 복잡해질 텐데, 데이터 분산과 장애 복구 측면에서 어떤 차이가 있을까?
🔄 데이터의 안전한 저장과 복제
브로커를 하나의 독립적인 프로세스로 보면 된다. 1개의 브로커만 운영할 수도 있지만, 데이터의 안정성을 위해 3개 이상의 브로커를 하나의 클러스터로 묶어 운영하는 것이 일반적 이다.
왜 그럴까? 🤔
브로커가 하나만 있을 경우
- 프로듀서가 데이터를 전송했을 때, 그 데이터는 한 개의 브로커에만 저장됨
- 해당 브로커가 장애가 발생하면 데이터 손실 위험 존재
브로커가 3대 이상일 경우
- 예를 들어, 프로듀서가 데이터를 전송하면 브로커 0, 브로커 1, 브로커 2에 복제(replication) 되어 저장됨
- 만약 브로커 1이 장애가 발생하더라도, 브로커 0과 브로커 2에 동일한 데이터가 존재하기 때문에 컨슈머는 데이터를 안전하게 사용할 수 있음 ✅
결국, 브로커의 역할은 데이터를 안전하게 분산 저장하고 복제하여 장애 상황에서도 서비스가 지속되도록 하는 것 이라고 정리할 수 있다!
🤔 아직 궁금한 점
- 주키퍼 없이 카프카를 운영하는 방식은 어떻게 동작할까?
- 클러스터를 여러 개로 분리해서 운영할 때의 장점과 단점은?
'Apache Kafka 공부' 카테고리의 다른 글
#4-1 Zookeeper란? (0) | 2025.02.14 |
---|---|
#4-2 리더 파티션과 팔로워 파티션 (0) | 2025.02.14 |
#3 카프카 생태계 25.02.10 (1) | 2025.02.14 |
#2 카프카가 데이터 파이프라인으로 적합한 이유 25.02.10 (0) | 2025.02.14 |
#1 Apache Kafka의 역사와 기본 구조 25.02.10 (0) | 2025.02.14 |