AI VIDEO BRIEFING
카프카 면접 핵심 6가지: 토픽·파티션·오프셋·컨슈머 그룹·복제·전달 보장
주문 처리 예시로 카프카가 서비스 결합을 어떻게 끊는지부터 토픽과 파티션, 오프셋, 컨슈머 그룹, 복제와 장애 조치, 최소 한 번 전달까지 면접 단골 개념을 정리했다.

핵심 메시지
쉽게 이해하기
영상은 모의 면접 형식으로 카프카의 핵심 개념을 짚는다. 첫 질문은 '카프카가 실제로 무슨 문제를 푸는가'다. 쇼핑몰에서 주문이 들어오면 체크아웃 서비스가 확인 메일, 재고 갱신, 분석 등 여러 서비스를 직접 차례로 호출하는 단순 방식은 두 가지 문제를 낳는다. 체크아웃 서비스가 모든 하위 서비스를 알아야 하고(새 서비스를 추가할 때마다 코드 수정), 하나씩 호출하며 기다리다 한 서비스가 느리거나 죽으면 전체가 멈춘다.
카프카는 체크아웃 서비스가 주문 이벤트를 카프카에 쓰기만 하고 누가 읽는지는 신경 쓰지 않게 한다. 생산자(producer)는 이벤트를 쓰고 소비자(consumer)는 읽으며, 양쪽은 완전히 분리된다. 게다가 카프카는 이벤트를 원하는 만큼 보관하므로, 나중에 추가된 서비스가 처음부터 전체 이력을 읽을 수 있다.
데이터는 토픽과 파티션으로 조직된다. 하나의 주문은 쪼개지지 않고 하나의 이벤트로 한 파티션에 저장되며, 각 이벤트는 파티션 내 위치를 나타내는 오프셋(offset)을 받는다. 토픽을 여러 파티션으로 나누는 이유는 확장성과 병렬 읽기다. 주의할 점은 순서 보장이 토픽 전체가 아니라 단일 파티션 안에서만 이뤄진다는 것이다. 특정 고객의 이벤트 순서를 지키려면 같은 키(예: 고객 ID)를 줘 같은 파티션으로 보내면 된다.
여러 소비자가 같은 주문을 중복으로 읽지 않게 하는 장치가 컨슈머 그룹이다. 한 그룹 안에서 각 파티션은 단 하나의 소비자만 읽는다. 각 그룹은 파티션별로 어디까지 읽었는지를 오프셋으로 추적해, 소비자가 재시작해도 멈춘 지점부터 이어간다. 한 소비자가 죽으면 그 파티션을 같은 그룹의 다른 소비자에게 넘기는데 이를 리밸런싱이라 한다. 분석 그룹과 이메일 그룹처럼 서로 다른 그룹은 같은 토픽을 각자 독립적으로 읽는다.
장애 대비는 복제로 처리한다. 카프카는 여러 서버(브로커)로 이뤄진 클러스터이며, 한 파티션의 복사본(레플리카)을 여러 브로커에 둔다. 파티션마다 한 브로커가 리더가 되고 나머지는 팔로워다. 생산자는 항상 리더에 쓰고 팔로워가 이를 복제한다. 리더 브로커가 죽으면 최신 상태인 팔로워가 새 리더로 승격되며, 이 전환을 장애 조치(failover)라 한다. 마지막으로 카프카는 기본적으로 '정확히 한 번'이 아니라 '최소 한 번' 전달을 보장한다. 소비자가 처리 후 오프셋 커밋 직전에 죽으면 같은 주문이 다시 처리될 수 있으므로, 소비자는 같은 작업을 반복해도 추가 피해가 없도록 멱등하게 설계해야 한다.
주요 인사이트
- 카프카의 본질은 '직접 호출'을 '이벤트 게시/구독'으로 바꿔 서비스 간 결합을 끊는 것이다. 덕분에 새 서비스를 추가해도 기존 생산자 코드를 고칠 필요가 없다.
- 이벤트 보관 기능은 단순한 버퍼를 넘어선다. 나중에 합류한 소비자가 토픽의 전체 이력을 처음부터 재생할 수 있어, 신규 기능 추가나 재처리에 강력하다.
- 순서 보장과 병렬성은 트레이드오프 관계다. 파티션을 늘리면 병렬 읽기로 확장되지만 토픽 전체의 전역 순서는 깨진다. 순서가 필요한 단위(고객 등)는 키로 묶어 같은 파티션에 모아야 한다.
- '정확히 한 번'은 공짜가 아니다. 카프카의 기본은 최소 한 번이며, 결제·메일 발송 같은 작업의 중복을 막는 책임은 소비자의 멱등성 설계에 있다.
자주 묻는 질문
카프카는 어떤 문제를 해결하나요?
서비스가 서로를 직접 호출하면 호출자가 모든 하위 서비스를 알아야 하고, 한 서비스가 느리거나 죽으면 전체가 멈춥니다. 카프카는 생산자가 이벤트를 쓰고 소비자가 읽는 구조로 양쪽을 분리해 이 결합과 대기 문제를 해결합니다.
토픽을 여러 파티션으로 나누는 이유는 무엇인가요?
확장성과 병렬 읽기 때문입니다. 파티션을 여러 머신에 분산하면 여러 소비자가 동시에 읽을 수 있습니다. 다만 순서는 토픽 전체가 아니라 각 파티션 안에서만 보장되므로, 순서가 중요한 이벤트는 같은 키로 같은 파티션에 보내야 합니다.
컨슈머 그룹은 어떻게 작동하나요?
함께 일하는 소비자들의 집합으로, 한 그룹 안에서 각 파티션은 단 하나의 소비자만 읽습니다. 그룹은 파티션별 오프셋으로 진행 상황을 추적해 재시작 시 이어 읽고, 소비자가 죽으면 그 파티션을 다른 소비자에게 넘기는 리밸런싱을 합니다.
카프카는 메시지를 정확히 한 번만 처리하나요?
아닙니다. 기본 보장은 '최소 한 번'으로, 소비자가 처리 후 오프셋 커밋 직전에 죽으면 같은 메시지가 다시 처리될 수 있습니다. 그래서 소비자는 같은 작업을 반복해도 결제나 메일이 중복되지 않도록 멱등하게 설계해야 합니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗