카프카(Kafka) 기본 개념, 분산 메시징 시스템의 핵심!

by DD
1개월 전
조회수 8

분산 시스템(Distributed System)에서 서비스 간 통신 문제 해결을 위해 카프카(Kafka)가 등장함

고성능 메시지 처리(High-Throughput Messaging), 내결함성(Fault Tolerance), 확장성(Scalability)을 제공함

프로듀서(Producer), 토픽(Topic), 컨슈머(Consumer) 등 핵심 개념을 설명함

오버 엔지니어링(Over-engineering)에 대한 커뮤니티의 비판적 시각도 존재함

카프카(Kafka)의 핵심 아키텍처

카프카(Kafka)는 브로커(Broker), 클러스터(Cluster), 주키퍼(ZooKeeper) 또는 KRaft로 구성된 분산 시스템이다. 브로커는 메시지 저장 및 전송을 담당하며, 클러스터는 여러 브로커를 묶어 단일 시스템처럼 동작하게 한다. 주키퍼는 메타데이터 관리 및 클러스터 조정을 담당했지만, 최신 버전에서는 KRaft를 통해 자체적으로 관리한다. 이러한 아키텍처는 고가용성(High Availability)수평적 확장성(Horizontal Scalability)을 보장한다.

메시지 처리 방식: 프로듀서(Producer)와 컨슈머(Consumer)

카프카(Kafka)는 프로듀서(Producer)가 메시지를 토픽(Topic)에 발행하고, 컨슈머(Consumer)가 이를 구독하는 방식으로 작동한다. 컨슈머는 오프셋(Offset)을 통해 메시지 소비 위치를 관리하며, 컨슈머 그룹(Consumer Group)을 통해 병렬 처리를 지원한다. 각 파티션(Partition)은 순차적으로 메시지를 저장하여 메시지 순서를 보장하며, 컨슈머 그룹 내에서 각 파티션은 하나의 컨슈머에 할당된다.

데이터 보존 및 장애 복구 메커니즘

카프카(Kafka)는 데이터 복제(Data Replication)를 통해 데이터 손실을 방지한다. 각 파티션은 리더(Leader)와 팔로워(Follower) 레플리카(Replica)를 가지며, 리더가 모든 읽기 및 쓰기 요청을 처리하고 팔로워는 리더의 데이터를 복제한다. ISR(In-Sync Replica)은 리더와 동기화된 레플리카의 집합으로, 리더 장애 시 ISR 내에서 새로운 리더가 선출된다. 이러한 메커니즘은 내결함성(Fault Tolerance)을 제공한다.

카프카(Kafka)의 메시지 전달 보장

카프카(Kafka)는 최소 1회(At Least Once), 최대 1회(At Most Once), 정확히 1회(Exactly Once)의 세 가지 메시지 전달 보장 수준을 제공한다. 정확히 1회는 아이템포턴트 프로듀서(Idempotent Producers)와 트랜잭션 API를 사용하여 중복 메시지 처리 및 데이터 손실을 방지한다. 이러한 유연성은 시스템의 요구 사항에 따라 적절한 전달 보장 수준을 선택할 수 있게 한다.

Kafka Fundamentals - Guide to Distributed Messaging