티스토리 뷰
Event Streaming 이란?
- 이벤트 소스로부터 이벤트 스트리밍의 형태로 실시간으로 데이터를 캡처하고, 이벤트 스트리밍을 나중에 사용할 수 있도록 영구적으로 저장한다.
- 이벤트 스트리밍을 처리하고 필요한 목적지로 라우팅한다.
- 이벤트 스트리밍은 옳은 정보가 적시에 옳바른 곳에 있도록 연속적 흐름과 데이터 해석을 보장한다.
Kafka는 Event Streaming 플래폼이다
- kafka는 이벤트 스트리밍을 Publish(wirte) 하고 Subscribe(Read)해서, 시스템들로부터 데이터를 계속적으로 가져오거나 내보낸다
- kafka는 이벤트 스트리밍을 내구성있게 보관한다
- kafka는 이벤트 스트리밍을 처리한다
Kafka는 어떻게 작동할까?
kafka는 TCP로 소통하는 client 와 server로 구성된 분산 시스템이다.
server | - kafka는 한대 이상의 서버로 클러스터를 구성해 돌아감 - storage 레이어에서 몇개의 서버는 Broker가 됨 - 다른 몇개의 서버는 kafka connect 를 가동하고 rdb등과 연동되어 계속적으로 데이터를 가져오거나 내보냄 - 어떤 서버가 실패하면, 다른 서버가 대신 일을 처리해서 데이터 손실을 방지함 |
client | - 이벤트 스트리밍을 병렬로 읽고, 쓰고, 처리하는 (내구성 good) 애플리케이션이나 마이크로 서비스를 만들수 있음 - 프로그래밍 언어, 라이브러리 등 지원 |
Concept and Terminology
event | 이벤트 형식의 기록 또는 메세지 - key,value, timestamp, (선택적으로) metdata header 를 가지고 있음 |
producer | kafka에 event를 publish(write)하는 client application |
consumer | kafka로부터 event를 subscribe(read, process) 것 |
topic | - event가 정렬되어 저장된 곳 (파일시스템의 디렉토리와 비슷) - topic는 0, 1, many 의 producer나 consumer를 가질 수 있음 - topic는 읽어진다고 삭제되지 않음 (커스텀으로 얼마나 오래 보관할지 설정) - 모든 topic은 복제된다 그래서 여러 broker에 복사본이 저장된다 ex ) production setting에서 replicationf factor가 3이라면 3개의 복사본이 생긴다 (partition level 에서 수행) |
partition | - topic이 여러개의 "bucket" 으로써 각 브로커들에 분산되어 있음 - 새로운 event가 어떤 topic에 publish 되면, 그 topic의 partition 에 추가됨 - 동일한 event key 를 가진 event는 동일한 partition에 기록됨 - consumer는 기록된 순서와 동일하게 partition 의 이벤트를 읽을 수 있게됨 |
Kafka API
Admin API | topic, broker를 포함해 kafka object를 관리할 수 있음 |
Producer API | 한 개 이상의 topic으로 이벤트 스트림을 publish 할 수 있음 |
Consumer API | 한 개 이상의 topic을 읽을 수 있고, consumer에게 생성된 이벤트 스트림을 처리할 수 있음 |
Kafka Streams API | 스트리밍 처리 어플리케이션을 만들기 위해, 스트리밍을 처리할 수 있는 고레벨의 함수를 제공함 ex) aggregation, join, windowing, 이벤트 시간 기반 처리 등 |
Kafka Connect API | 외부 시스템 이벤트 스트림을 내보내거나 가져와서 consume 또는 produce하는 reusable 데이터 connector를 빌드하고 실행시킨다 -> kafka와 외부 시스템 통합될 수 있게 |
AWS MSK
- Managed Streaming for Apache Kafka
- aws 가 kafka cluster랑 zookeeper 관리해줌 (zookeeper를 따로 운영하지 않아도 됨)
- cloudwatch로 모니터링 제공
- KMS로 인증서 발급가능
- 여러 AZ로 복제 가능
AWS Kinesis
- kafk 같은 data streaming 플랫폼인데 인프라를 aws 에서 관리해주고 여러가지 aws 리소스를 활요할 수 있음
Reference:
https://kafka.apache.org/intro
'Data Engineering' 카테고리의 다른 글
데이터 카탈로그란 (AWS Glue, AWS Lake Formation) (1) | 2024.10.15 |
---|---|
DataLake 가 무엇인가 (0) | 2024.10.15 |
[Flink] Kafka connector (0) | 2022.09.18 |
[Flink] 플링크의 스냅샷 생성 (0) | 2022.09.18 |
[zookeeper] 쥬키퍼 overview (공식문서 정리) (0) | 2022.09.07 |