Apache Kafka Series - Learn Apache Kafka for Beginners v3를 수강하며 기록한 내용입니다.
Kafka의 확장 기능에 대해 알아보며,
이를 어떻게 활용하는 게 좋을 지 몇 가지의 케이스를 통해 알아보도록 한다.
Kafka Connect
- 외부 소스와의 연동 : 카프카-카프카 상호연결
- 외부 시스템과 Kafka 간의 데이터 수집 / 전송
• Source Connectors: 외부 시스템에서 데이터를 읽어와 Kafka에 넣음.
• Sink Connectors: Kafka에서 데이터를 읽어와 외부 시스템에 씀.
• Converters: 데이터를 Kafka와 외부 시스템 간에 변환(JSON, Avro 등).
• Transforms (SMT): 스트림 데이터를 실시간으로 수정.
Kafka Streams
표준 자바 어플리케이션
별도 클러스터를 만들 필요 없음
Schema Registry
카프카가 사용할 표준 포맷(스키마)을 정의한다.
데이터 포맷 & 필드 명이 바뀌었을 때, 프로듀서가 잘못된 데이터를 전송 했을 때를 대비하여 데이터를 검증
별도의 컴포넌트로 구성해야 하며, 카프카 프로듀서/컨슈머가 Schema Registry와 소통할 수 있어야 한다.
Schema Registry를 사용할 때 필요 사항
- 초기 설계에 힘을 써야 하며, 가용성이 높아야 한다.
- Producer/Consumer 코드를 바꿔 주어야 한다.
- Apache Avro가 그 중 하나이나, 러닝커브가 있기에 Protobuf 혹은 JSON Schema를 잘 활용한다.
Case Study
MovieFlix
TV, 영화를 주문형으로 볼 수 있게 하는 서비스
보고 있던 영상 이어보기 Consumer
실시간으로 유저 프로파일 설정 Kafka Streams
다음 쇼를 실시간으로 추천 Consumer
분석 스토어에 모든 데이터 저장 Kafka Connect
topic
show_position
- Producer 다량 보유 가능
- 30 파티션 초과의 경우 고도의 분산 필요
- 키는 "user_id"가 적절
recommendations
- 스트림 추천 엔진은 소스 데이터로부터 분석 스토어에 데이터를 삽입한 뒤 추천할 것
- 볼륨은 작아도 괜찮을 것이다
- 키는 "user_id" 가 적절
GetTaxi
요청 시 유저의 위치, 택시 운전자의 위치를 조합하여 요금을 책정
topic
user_position
- Producer 다량 보유 가능
- 30 파티션 초과의 경우 고도의 분산 필요
- 키는 user_id 가 적절
taxi_position
- Producer 다량 보유 가능
- 30 파티션 초과의 경우 고도의 분산 필요
- 키는 taxi_id가 적절
Surge_pricing
- weather, region 등을 포함할 수 있다
user_position, taxi_position을 조합하기 위한 Kafka Stream
활용
surging_pricing 내역을 AWS S3에 저장하기 위한 Kafka Connect
활용
MySocialMedia
topics
posts
- 다량의 producer 보유
- 파티션의 개수가 30개 이상이면, 분산을 권장
- user_id가 키로 적절
- 보유 기간이 길어야 함
likes
- 다량의 producer 보유
- 데이터의 수가 많을 것으로 고도로 분산되어야 함
- post_id가 키로 적절
comments (like와 동일)
posts_with_counts
trending_posts
이벤트 자체로 포맷팅해야 한다. ex) user_123 - created - post_123 - 2PM
posts, likes, comments Kafka Streams
사용하여 집계, post_with_counts에 반영
MyBank
리얼 타임 뱅킹
트랜잭션 데이터가 DB에 필요
한도는 유저가 정의함
유저에게 알림을 전송해야 함
topics
bank_transactions
Kafka Connect Source CDC Connector
활용하여 적재
user_settings
user_alerts
- real time big trasnactions detections을 통해 user_alerts 토픽에 데이터 적재
- 알림 모니터링 서비스에서 토픽 활용
Big Data 처리
Real Time
Real Time 분석, 대시보드, 어플리케이션에 활용 Spark, Storm, Flink..
Batch
리포트, 백업 장기 보관에 활용 Kafka Connect - Hadoop, S3, RDBMS
로깅 & 매트릭스 통합
로그를 소화하고, 다양한 어플리케이션으로부터 메트릭 수집
높은 처리률을 원하기 때문에 데이터 분실, 데이터 복제에 대한 규제가 덜함
Splunk, CloudWatch, ELK 등을 활용하자
'Infra > Kafka' 카테고리의 다른 글
Apache Kafka (5) - Consumer Configuration (1) | 2024.12.02 |
---|---|
Apache Kafka (4) - Producer (1) | 2024.11.20 |
Apache Kafka (3) - Java (0) | 2024.11.17 |
Apache Kafka (2) - 설치 (2) | 2024.11.15 |
Apache Kafka (1) (1) | 2024.11.13 |