데이터 전처리: 데이터 수집 기법 – 데이터 스트리밍(Kafka
ㅁ 데이터 수집 기법
ㅇ 정의:
실시간으로 발생하는 데이터를 지속적으로 전송·처리하기 위해 메시지 브로커를 활용하는 수집 방식. Apache Kafka는 분산형 스트리밍 플랫폼으로, 대규모 데이터 파이프라인 구축에 사용됨.
ㅇ 특징:
– 실시간 처리 가능, 대용량 데이터 처리에 강점
– Producer-Consumer 구조로 확장성 높음
– 장애 복구 및 데이터 내구성 보장
– 토픽 기반 메시지 분류 가능
ㅇ 적합한 경우:
– IoT 센서 데이터, 로그 수집, 실시간 분석 시스템
– 대규모 트래픽 환경에서 안정적인 데이터 전달 필요 시
ㅇ 시험 함정:
– Kafka는 데이터베이스가 아니라 메시지 브로커임
– 실시간 처리만 가능하다고 오해하기 쉬우나, 일정 기간 데이터 저장 가능
– 단일 서버 기반이라고 착각하는 경우 있음 (실제로는 분산형)
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Kafka는 분산형 메시지 브로커로, 실시간 데이터 스트리밍 처리에 적합하다.”
X: “Kafka는 관계형 데이터베이스로, 실시간 데이터 처리에 사용된다.”
================================
1. 데이터 스트리밍(Kafka)
ㅇ 정의:
Apache Kafka를 이용해 데이터가 발생하는 즉시 전송·처리하는 방식으로, 고속·대용량 데이터 흐름을 처리하는 분산형 메시지 큐 시스템.
ㅇ 특징:
– 고가용성, 확장성, 내구성 보장
– Pub/Sub 모델 기반
– 다중 소비자 그룹 지원
– 파티션 단위 병렬 처리 가능
ㅇ 적합한 경우:
– 실시간 모니터링, 금융 거래 처리, 로그 분석
– 마이크로서비스 간 데이터 연동
ㅇ 시험 함정:
– Kafka는 파일 저장소가 아님
– 실시간 처리만 가능하다고 오해하기 쉬움 (지연 처리도 가능)
– RabbitMQ와의 차이를 혼동
ㅇ 시험 대비 “패턴 보기” 예시:
O: “Kafka는 파티션을 통해 병렬 처리가 가능하다.”
X: “Kafka는 단일 소비자만 데이터를 읽을 수 있다.”
ㅁ 추가 학습 내용
Kafka 주요 구성 요소
– Producer: 메시지를 생성하여 Kafka로 전송하는 역할
– Consumer: Kafka로부터 메시지를 읽어가는 역할
– Broker: Kafka 서버로, 메시지를 저장하고 전달하는 중추 역할
– Zookeeper: Kafka 클러스터의 메타데이터 관리와 브로커 조정 담당
– Topic: 메시지를 분류하는 논리적 채널
– Partition: 토픽을 물리적으로 분할한 단위로, 병렬 처리와 확장성 제공
Kafka Streams와 KSQL
– Kafka Streams: Kafka 데이터를 실시간으로 처리하기 위한 라이브러리
– KSQL: SQL 문법으로 Kafka 스트림 데이터를 처리할 수 있는 도구
Exactly-once semantics
– 메시지가 중복되거나 유실되지 않도록 정확히 한 번만 처리되는 보장 방식
메시지 보존 기간 설정 (Retention Period)
– 메시지를 Kafka에 저장하는 기간을 설정하여, 기간이 지나면 삭제
오프셋 관리 방식
– earliest: 가장 오래된 메시지부터 소비 시작
– latest: 가장 최근 메시지부터 소비 시작
Kafka와 다른 메시지 브로커 비교
– RabbitMQ: AMQP 기반, 메시지 라우팅과 큐 중심 구조
– Pulsar: 다중 테넌시 지원, 세분화된 토픽 구조, 저장소와 컴퓨팅 분리
데이터 유실 방지 전략
– ACK 모드: 메시지 전송 성공 여부를 확인하는 응답 방식
– replication factor: 메시지를 여러 브로커에 복제하여 장애 시에도 데이터 보존