대용량 데이터 처리 아파치 카프카(Apache Kafka)란?
오늘의 개발 스터디

백엔드 아키텍처와 대용량 데이터 파이프라인에서 빼놓을 수 없는 핵심 기술,
아파치 카프카(Apache Kafka)에 대해 알아보겠습니다.
1. 카프카가 등장한 이유 (기존 메시징 시스템의 한계)
사용자의 로그, 결제 정보, 알림 데이터 등 수많은 데이터 흐름을 어떻게 하면 꼬이지 않고 안정적으로 처리할 수 있을까요?
이 고민을 해결하기 위해 링크드인(LinkedIn)에서 처음 개발하고 현재는 오픈소스로 널리 쓰이는 시스템이 바로 카프카입니다.
카프카 이전에는 소스 애플리케이션(데이터를 보내는 곳)과 타깃 애플리케이션(데이터를 받는 곳)이
1:1로 직접 연결되는 경우가 많았습니다.
이 방식은 서비스 초기에는 직관적이고 편하지만, 서비스가 커지면 다음과 같은 치명적인 문제가 발생합니다.
- 복잡도 증가 (스파게티 아키텍처): 연결선이 너무 많아져 어떤 시스템이 어디로 데이터를 보내는지 관리하기 불가능해집니다.
- 단일 장애점(SPOF): 데이터를 받는 서버가 죽으면 데이터를 보내는 서버도 대기하거나 에러가 발생합니다.
- 급격한 트래픽 증가에 취약: 이벤트가 몰릴 때 받는 서버가 그 양을 감당하지 못하면 시스템 전체가 다운될 수 있습니다.
카프카는 이러한 복잡한 연결 고리를 끊고, 중간에서 데이터를 안전하게 중계해 주는 중앙 집중형 버스 역할을 합니다.
2. 카프카(Kafka)란?
아파치 카프카는 분산 스트리밍 플랫폼(Distributed Streaming Platform)이자, 고성능 Pub-Sub 모델의 메시지 큐입니다. 데이터를 파이프라인을 통해 실시간으로 수집하고, 저장하고, 처리하는 기능을 제공합니다.

카프카는 소스(Data Source)로부터 밀려드는 대용량 데이터를 안전하게 스테이징(Staging) 및 저장(Storage)하고, 이를 필요로 하는 다양한 서비스나 분석 도구(Presentation)로 막힘없이 전달하는 데이터 흐름의 척추 역할을 수행합니다.
3. 카프카의 핵심 4가지 구성 요소
카프카를 이해하려면 다음 4가지 핵심 개념을 반드시 알아야 합니다.
1) 프로듀서 (Producer)
- 데이터를 생성해서 카프카로 보내는 주체입니다.
- 예를 들어 웹 서비스의 사용자 클릭 로그, 앱의 GPS 위치 데이터 등이 프로듀서에 의해 카프카로 발행(Publish)됩니다.
2) 컨슈머 (Consumer)
- 카프카에 저장된 데이터를 가져와서 처리하는 주체입니다.
- 데이터베이스에 저장하는 서비스, 실시간 알림을 보내는 서비스, 빅데이터 분석 툴 등이 컨슈머 역할을 합니다.
3) 브로커 (Broker)와 클러스터 (Cluster)
- 카프카 서버 자체를 브로커라고 부릅니다.
- 카프카는 보통 안전성과 고성능을 위해 여러 대의 브로커를 묶어서 클러스터(Cluster)로 운영합니다. 한 대가 죽어도 다른 대안 서버가 즉시 역할을 넘겨받아 데이터 유실을 막습니다.
4) 토픽 (Topic)과 파티션 (Partition)
- 토픽(Topic): 데이터가 들어가는 '메시지 함' 또는 '테이블' 같은 개념입니다. (예: user-signup-events, order-logs)
- 파티션(Partition): 하나의 토픽은 병렬 처리를 위해 여러 개의 파티션으로 쪼개져 저장됩니다. 파티션이 많을수록 여러 컨슈머가 동시에 데이터를 나누어 처리할 수 있어 처리 속도가 획기적으로 빨라집니다.

4. 카프카 vs RabbitMQ
카프카를 공부하다 보면 가장 많이 비교되는 기술이 바로 RabbitMQ인데요. 둘 다 데이터를 주고받는 "메시징 시스템"이라는 공통점이 있지만, 설계 철학과 내부 동작 방식은 완전히 다릅니다.
1. 한 눈에 보는 핵심 철학의 차이
두 시스템의 차이를 가장 쉽게 비유하자면 다음과 같습니다.
- RabbitMQ는 '우체국'입니다. 편지(메시지)가 들어오면 주소를 보고 수신인(컨슈머)에게 정확하게 배달한 뒤, 배달이 끝나면 편지를 파기합니다.
- Kafka는 '로그 기록소(데이터베이스)'입니다. 들어오는 모든 메시지를 지우지 않고 책에 순서대로 계속 받아 적습니다. 수신인들은 언제든 와서 자기가 읽고 싶은 부분부터 읽어갈 수 있습니다.
비교 항목 RabbitMQ Apache Kafka 주요 목적 고성능 메시지 전달 및 유연한 라우팅 대용량 실시간 이벤트 스트리밍 및 저장 메시지 보존 소비 완료 후 즉시 삭제 소비 여부와 상관없이 디스크 보관 처리량 (Throughput) 초당 수만 건 (상대적 보통) 초당 수백만 건 (압도적 대용량) 이벤트 재처리 (Replay) 불가능 컨슈머 오프셋 조절로 언제든 가능 메시지 순서 보장 큐 내부에서 보장 (단, 컨슈머가 여러 개면 꼬일 수 있음) 파티션(Partition) 단위로 확실하게 보장
5 . 해외 글로벌 기업의 카프카 활용 사례
🎬 넷플릭스 (Netflix) : 하루 1조 건 이상의 이벤트 처리
넷플릭스는 전 세계 수억 명의 회원이 영상을 시청할 때 발생하는 모든 데이터를 카프카로 처리합니다.
- 활용 방식: 사용자가 영상을 일시정지하거나, 넘겨보거나, 어떤 콘텐츠를 클릭하는지 등의 모든 로그를 실시간으로 수집합니다.
- 효과: 이 데이터를 기반으로 "실시간 콘텐츠 추천 알고리즘"을 돌리고, 영상 재생 중 발생하는 에러를 모니터링하여 사용자에게 최적의 스트리밍 화질을 실시간으로 제공합니다.
🚗 우버 (Uber) : 실시간 위치 추적 및 매칭
우버는 승객과 운전사를 실시간으로 매칭하고 경로를 계산하는 데 카프카를 극단적으로 활용합니다.
- 활용 방식: 전 세계 수백만 명의 운전사 앱에서 보내는 실시간 GPS 위치 데이터를 카프카 토픽으로 받아들입니다.
- 효과: 이 위치 스트림을 컨슈머들이 실시간으로 분석하여 예상 도착 시간(ETA)을 계산하고, 수요에 따른 가변 가격(Surge Pricing)을 1초 단위로 계산해 냅니다.
2. 국내 대표 기업의 카프카 활용 사례
🛵 우아한형제들 (배달의민족) : 주문 시스템의 안정성 확보
배달의민족은 대한민국에서 가장 거대한 트래픽이 몰리는 서비스 중 하나입니다. 주문이 몰리는 점심, 저녁 시간에 시스템이 터지지 않는 비결이 바로 카프카입니다.
- 활용 방식: 주문이 들어오면 주문 시스템이 직접 결제, 라이더 배차, 가게 사장님 앱 알림을 처리하지 않습니다. 주문 시스템은 그저 "주문 발생!"이라는 이벤트를 카프카에 던지기만 합니다.
- 효과: 결제 시스템이나 알림 시스템에 장애가 나더라도, 주문 데이터는 카프카에 안전하게 보관되므로 주문 자체가 유실되는 대참사를 막을 수 있습니다. 시스템 간의 결합도를 낮춘 대표적인 마이크로서비스 아키텍처(MSA) 사례입니다.
💬 카카오 (Kakao) : 대규모 메시징 및 로그 수집
카카오는 카카오톡을 포함한 수많은 서비스의 로그 수집 및 통계 분석에 카프카를 표준으로 사용하고 있습니다.
- 활용 방식: 뱅크, 페이, 모빌리티 등 다양한 계열사에서 발생하는 대규모 트래픽 로그를 중앙 카프카 클러스터로 모읍니다.
- 효과: 모인 로그를 데이터 웨어하우스(Hadoop 등)로 안전하게 적재하고, 실시간 이상 거래 탐지(FDS)나 서비스 장애 모니터링에 활용합니다.
🛍️ 쿠팡 (Coupang) : 실시간 가격 변동 및 재고 관리
쿠팡은 수억 개의 상품 가격과 재고가 초 단위로 변하는 웅장한 커머스 환경을 가지고 있습니다.
- 활용 방식: 상품의 가격 변경, 주문으로 인한 재고 감소 등의 이벤트를 카프카 스트림으로 관리합니다.
- 효과: 가격 변동 이벤트를 카프카가 실시간으로 전파하여 사용자의 화면, 검색 엔진, 물류창고 시스템에 거의 zero-delay로 동기화 시킵니다.

오늘의 개발일지 끝
'개발공부 > 백엔드' 카테고리의 다른 글
| 스프링 부트 프로젝트 시작부터 DB(MySQL/MariaDB) 연동하기 (2) | 2026.06.08 |
|---|---|
| Redis란 무엇일까? (0) | 2026.06.02 |
| 모드버스 통신이란? (0) | 2026.05.31 |
| MQTT 프로토콜이란? (1) | 2026.05.30 |