일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JPA
- git
- Design Pattern
- nginx설정
- 성능
- Java
- 웹사이트최적화기법
- redis
- NoSQL
- gcm 푸시 번역
- 자바스크립트
- nginx설치
- 웹사이트 성능
- 푸시
- notification
- kafka
- php
- 웹사이트성능
- GCM 번역
- GCM
- 카프카
- 푸시 번역
- nginx
- Push
- 레디스
- 페이스북 번역
- 카프카 트랜잭션
- 디자인패턴
- APNS
- Today
- Total
간단한 개발관련 내용
CHAPTER 9: 데이터 파이프라인 구축하기 본문
9.1 데이터 파이프라인 구축 시 고려사항
Kafka는 데이터 파이프라인의 핵심 버퍼 역할을 수행합니다. 데이터를 생산하는 프로듀서와 소비하는 컨슈머를 시간적으로 분리하여 신뢰성과 효율성을 제공합니다.
9.1.1 적시성
Kafka는 데이터를 실시간으로 스트리밍할 수 있지만, 데이터를 버퍼링하여 읽는 시점에 따라 유연한 적시성을 제공합니다.
9.1.2 신뢰성
Kafka는 최소 한 번 전달을 기본으로 보장하고, 트랜잭션 기능과 결합하면 정확히 한 번 전달을 구현할 수 있습니다.
9.1.3 높은 처리율과 확장성
Kafka는 분산 시스템 기반으로 확장성이 뛰어나며,
Kafka Connect는 작업을 병렬화하여 처리율을 조절할 수 있습니다.
9.1.4 데이터 형식
데이터 형식 표준화를 위해 Avro, JSON, Protobuf 등을 사용합니다.
9.1.5 데이터 변환
Kafka는 ETL (Extract-Transform-Load) 및 ELT 파이프라인에 모두 사용할 수 있습니다.
- ETL: 데이터를 변환 후 전송
- ELT: 데이터를 먼저 로드 후 변환
Kafka Connect의 Single Message Transform (SMT) 기능으로 개별 메시지를 변환할 수 있습니다.
9.1.6 보안
데이터 파이프라인에서 고려해야 할 보안 요소:
- 데이터 접근 제어
- 암호화 및 인증
- 개인 정보 보호 및 규제 준수
9.1.7 장애 처리
Kafka는 장기 데이터 저장을 지원하므로 장애 발생 시 특정 시점으로 돌아가서 데이터 복구가 가능합니다.
9.1.8 결합과 민첩성
Kafka는 데이터 원본과 대상 간의 결합을 최소화합니다.
- 메타데이터 유지: 스키마 진화를 지원해 시스템 유연성 확보
- 과도한 전처리 지양: 하위 시스템이 필요에 맞게 데이터를 활용할 수 있도록 최소한의 변환만 수행
9.2 Kafka Connect vs 프로듀서/컨슈머
- Kafka Connect: 데이터 저장소와 Kafka를 연결하는 표준화된 인터페이스. 커넥터를 활용하여 빠르게 통합할 수 있습니다.
- 프로듀서/컨슈머: 커넥터가 없는 경우 직접 애플리케이션을 개발해야 합니다.
Kafka Connect를 사용하면 확장성, 신뢰성, 유지보수 측면에서 효율적입니다.
9.3 Kafka Connect
Kafka Connect는 Kafka와 외부 시스템 간의 데이터 통합을 수행합니다.
9.3.1 Kafka Connect 실행
Kafka Connect의 핵심 설정:
bootstrap.servers
: Kafka 브로커 정보group.id
: 워커 그룹 식별plugin.path
: 커넥터 플러그인 경로key.converter
및value.converter
: 데이터 형식 변환 설정
9.3.2 커넥터 예제
- 파일 소스 및 싱크:
- 소스: 파일 데이터를 Kafka로 전송
- 싱크: Kafka 데이터를 파일에 저장
- MySQL → Elasticsearch:
- 소스: MySQL 변경 데이터를 Kafka로 스트리밍
- 싱크: Kafka 데이터를 Elasticsearch에 저장
9.3.3 변경 데이터 캡쳐 (CDC)
- CDC: 데이터베이스의 트랜잭션 로그를 읽어 변경 사항을 Kafka로 전달합니다.
- Debezium: 고품질의 오픈소스 CDC 커넥터로 MySQL, PostgreSQL 등 다양한 데이터베이스를 지원합니다.
9.3.4 Single Message Transform (SMT)
Kafka Connect의 SMT 기능으로 메시지 변환을 수행합니다.
- 예: 필드 추가, 제거, 마스킹, 형식 변환
에러 처리와 데드 레터 큐 (DLQ)
- 오류 메시지를 데드 레터 큐로 보내는 기능을 제공합니다.
9.3.5 Kafka Connect 구조
- 커넥터: 태스크 수와 작업 분할을 결정합니다.
- 태스크: 데이터를 읽거나 쓰는 실제 작업 단위입니다.
- 워커: 커넥터와 태스크를 실행 및 관리합니다.
- 컨버터: 데이터 직렬화 및 역직렬화 수행
- 오프셋 관리: 소스 커넥터가 데이터를 읽어온 위치를 추적합니다.
9.4 Kafka Connect의 대안
9.4.1 다른 데이터 수집 프레임워크
- Flume, Logstash: 특정 시스템(하둡, Elasticsearch)에 집중된 데이터 수집 도구.
9.4.2 GUI 기반 ETL 도구
- Informatica, Talend 등은 시각적 도구를 제공하지만 Kafka만큼 확장성과 유연성이 부족합니다.
9.4.3 스트림 프로세싱 프레임워크
- Kafka Streams, Flink, Spark Streaming 등은 실시간 데이터 처리 및 복잡한 변환을 지원합니다.
9.5 요약
Kafka는 데이터 파이프라인에서 신뢰성, 유연성, 확장성을 갖춘 핵심 도구입니다.
- Kafka Connect를 사용하면 다양한 데이터 저장소와 Kafka를 쉽게 통합할 수 있습니다.
- SMT와 CDC 같은 기능으로 데이터 변환 및 변경 데이터 스트리밍을 효율적으로 수행합니다.
- Kafka를 중심으로 파이프라인을 설계하면 데이터 손실 없는 전달과 유연한 아키텍처를 구현할 수 있습니다.
핵심 메시지: Kafka는 데이터 파이프라인의 중앙 버퍼 역할을 하며, 다양한 시스템을 연결하고 신뢰성 있는 데이터 전달을 보장합니다.