
1. 기술의 필요성
요즘은 데이터가 ‘기록’이 아니라 '흐름'이 됐다. 수만 명이 동시에 접속하는 서비스, 실시간으로 쏟아지는 센서 정보, 금융 거래, 물류이동, 사용자 행동 로그까지. 이런 데이터는 들어오자마자 처리되지 않으면, 서비스는 병목을 겪고, 데이터는 흘러넘친다.
이때 필요한 게 바로 Kafka다. Kafka는 말 그대로, 데이터가 흘러가는 파이프라인을 구성하는 시스템이다.
오늘은 Kafka의 개념과 특징, 그리고 어떤 상황에서 유용하게 쓰이는지를 알아보자!
2. Kafka란?
- Kafka는 Apache Software Foundation에서 만든 오픈소스 분산 메시징 시스템이다. 흔히 스트리밍 플랫폼, 또는 이벤트 로그 시스템이라고도 불린다.
- 기본 원리는 아래와 같이 설명할 수 있다.
- **생산자(Producer)**가 데이터를 보내면
- Kafka 브로커가 데이터를 저장하고
- **소비자(Consumer)**가 구독해서 데이터를 가져간다.
3. Kafka를 쉽게 이해하려면
Kafka를 뉴스 방송국에 비유하면 이해하기 쉽다.
- Producer(기자): 현장에서 기사를 편집국에 전송(송고)한다.
- Kafka(편집국): 기사를 받아서 뉴스 분야(Topic)별로 분류한다.
- 각 분야는 다시 여러 채널(Partition)로 나뉘어, 동시에 여러 편집자가 병렬로 처리할 수 있다.
- Consumer(앵커): 자신이 구독한 분야만 받아 방송한다.
Kafka는 이런 구조 덕분에 수많은 데이터를 동시에 받아도 버벅이지 않고, 정리된 순서대로 빠르게 전달할 수 있다.
4. Kafka의 주요 특징
| 특징 | 설명 |
| 높은 처리량 | 초당 수십만 개 이상의 메시지를 처리할 수 있음 |
| 내결함성(Fault-tolerant) | 데이터가 복제되어 브로커 일부가 꺼져도 손실 없음 |
| 영속성(Persistence) | 메시지를 디스크에 저장, TTL 설정 없이 오래 보관 가능 |
| 분산 구조 | 여러 서버에 걸쳐 클러스터 구성 가능 |
| 구독 기반 처리 | Consumer가 필요한 토픽만 구독해서 처리 가능 |
5. Kafka가 대용량 데이터 처리에 탁월한 이유
5-1. Partition 구조 – 병렬성을 극대화 한다.
Kafka는 하나의 토픽을 여러 개의 Partition으로 나눠 저장한다. 각 Partition은 독립적으로 읽고 쓸 수 있기 때문에 여러 Producer가 동시에 데이터를 보내도 문제없고, 여러 Consumer가 나눠서 동시에 처리할 수 있다. 이 구조는 마치 고속도로의 차선처럼, 차선이 많을수록 더 많은 차량(데이터)이 정체 없이 달릴 수 있는 것과 같다.
5-2. Disk에 저장 – 데이터를 절대 놓치지 않는다.
Kafka는 들어온 데이터를 메모리에만 저장하지 않고, 디스크(Log)에 연속된 파일처럼 저장한다. 그래서 서버가 꺼져도 데이터는 남아있고,필요하면 다시 읽을 수 있으며 데이터의 순서도 그대로 유지된다. 일반 메시지 시스템은 메모리 기반이라 장애에 약한데, Kafka는 기록하면서 흘려보낸다는 게 핵심이다.
5-3. Offset 기반 소비 – 유연한 처리
Consumer는 Kafka에서 데이터를 읽을 때, “내가 어디까지 읽었는지”를 기억한다. 이걸 Offset이라고 부른다. 즉 새로운 Consumer가 생겨도 원하는 위치부터 읽을 수 있고, 문제가 생겼을 때 다시 처음부터 읽거나 특정 위치부터 재시작도 가능하다.
흘러가버리는 라디오를 듣는 게 아니라, 팟캐스트처럼 언제든지 플레이 가능한 구조다.
6. Kafka는 언제 쓰면 좋을까?
- 로그 수집 시스템
- 다양한 서버에서 쏟아지는 로그를 중앙에서 수집하는데 유리하다.
- IoT 센서 데이터 수집
- 수많은 디바이스에서 발생하는 실시간 데이터를 빠르게 전송할 수 있다.
- 주문 처리 시스템
- 주문 발생 → 결제 → 배송 → 알림 과정을 이벤트 기반으로 처리할 수 있다.
- 마이크로서비스 간 통신
- 서비스 간 비동기 메시지 전달 구조에서 안정적인 중개자 역할을 할 수 있다.
7. 마무리
Kafka는 단순한 메시지 브로커가 아니다. 데이터 흐름 전체를 설계하는 플랫폼이며, 특히 대용량 데이터를 실시간으로 처리해야 할 때 속도, 안정성, 유연성을 두루 갖춘 강력한 도구라는 것을 알게 되었다.
'네트워크 공부 & 실습 > 네트워크 이론' 카테고리의 다른 글
| [Network] MIB 와 OID 란 무엇일까? (0) | 2025.05.09 |
|---|---|
| [Network] syslog 란 무엇인가? (개념편) (3) | 2025.05.02 |
| [Network] pgcrypto 란 무엇인가? (개념편) (0) | 2025.04.30 |
| [Network] pmacct(오타 아님) 란 무엇인가? (0) | 2025.04.29 |
| [Network] SNMP 의 Version 별 차이 알아보기 (0) | 2025.04.28 |