0. Apache Kafka 란
Apache Kafka 란?
Apache Kafka는 data in motion platform으로 움직이는 데이터를 처리하는 플랫폼이다. 다르게 event straming platform 이라고도 한다. 실시간으로 흐르는 이벤트를 받아주고 그 이벤트 스트림을 필요로 하는 곳으로 데이터를 전송해준다.
여기서 이벤트란 비즈니스에서 생기는 모든 일 (데이터) 이다. 예를 들어 인터넷에서 무언가를 클릭 하거나 청구서를 발행하거나 송금 보낼 때 생기는 모든 데이터가 이벤트이다. 이런 이벤트는 빅데이터의 특징을 가진다. 비즈니스의 모든 영역에서 광범위하게 발생하고, 대용량의 데이터가 발생하기 때문이다.
이벤트 스트림은 연속적인 많은 이벤트들의 흐름을 말한다. 말그대로 끊임없이 새로운 데이터가 들어오는 것이 이벤트 스트림이다. 이러한 이벤트 스티림을 처리하기 위해 생긴 것이 Apache kafka이다.
Apache kafka는 다음과 같은 특징을 가진다.
- 이벤트 스트림을 안전하게 전송 (publish & subscribe)
- 이벤트 스트림을 디스크에 저장 (대용량 데이터 처리 가능)
- 이벤트 스트림을 분석 및 처리 (real time 데이터를 분석)
이전의 다른 프로그램과는 달리 kafka는 쓰기 (write)에 최적화된 시스템이다. 저렴한 장비로 초당 200만 개(초당 193MB)의 데이터를 저장한다고 한다.
Apache kafka의 활용
Kafka는 이벤트 (메세지/데이터)가 사용되는 모든 곳에서 사용된다.
- Messaging System (데이터를 전송해주는 중간 매개체 역할)
- IOT 디바이스로부터 데이터수집
- Realtime Event Stream Processing (Fraud Detection, 이상감지등)
- 애플리케이션에서 발생하는 로그 수집
- DB 동기화 (MSA 기반의 분리된 DB간 동기화)
- 실시간 ETL (데이터 추출, 변환, 적재)
- Spark, Flink, Storm, Hadoop 과 같은 빅데이터 기술과 같이 사용 (kafka로 데이터를 정제한 다음 spark 에 저장)