주변 개발자 지인들 한테 카프카에 대해 설명을 하자니 나 자신 조차도 정리가 되지 않아서 설명을 잘 해주지 못했는데 이참에 정리를 해서 확실히 하고자 글을 적게 되었다.
Kafka? 카프카? 가 뭐야
Apache Kafka는 Data in Motion Platform for Enterprise 또는 Event Streaming Platform 이라고 할 수 있다.
대개 고성능 분산 이벤트 스트리밍 플랫폼이라고 많이 하는데, 여기서 핵심은 이벤트라는 단어이다.
이벤트는 비즈니스에서 일어나는 모든 일(데이터)을 의미하고, 또한 빅데이터의 특징을 가지고 있다.
- 비즈니스의 모든 영역에서 광범위하게 발생
- event stream은 연속적인 많은 이벤트들의 흐름을 의미
탄생 배경
링크드인 내에서 개발 탄생됨
링크드인은 하루 약 4.5조 개 이상, 3000 억 개 이상의 사용자 관련의 이벤트 스트림을 처리를 한다.
그런데 기존의 Messaging Platform(예, MQ)로 처리가 불가능 해지자 이벤트 스트림 처리를 위해 개발 되었고, 2011년에 Apache Software Foundation에 기부되어 오픈소스 화 되었다.
Kafka 핵심 특징 3 가지
- 이벤트 스트림을 안전하게 전송 (publish & Subscribe)
- 이벤트 스트림을 디스크에 저장 (Write to Disk)
- 이벤트 스트림을 분석 및 처리 (Processing & Ananlysis)
사용사례
Event(메시지/데이터)가 사용되는 모든 곳에서 사용가능
- Messaging System
- IOT 디바이스로부터 데이터 수집
- 애플리케이션에서 발생하는 로그 수집
- Realtiem Event Stream Processing(이상 감지 등)
- DB 동기화(MSA기반의 분리된 DB간 동기화)
- 실시간 ETL
- Spark, Flink, Strom, Hadoop 과 같은 빅데이터 기술과 같이 사용
위 내용으로는 잘 이해가 가지 않을 것 같아 다른 예시를 가지고 왔다.
- 교통
- 운전자 - 탑승자 매칭
- 도착 예상시간(ETA) 업데이트
- 실시간 차량 진단
- 금융
- 사기감지
- 중복 거래 감지
- 게임
- 거래소 사기 감지
- 인앱 구매
- 실시간 추천
- 온라인 마켓
- 실시간 재고 정보
- 대용량 주문의 안전한 처리
결론
Kafka(카프카)는 상상을 초월하는 이벤트(데이터)를 실시간으로 분산 처리 하기 위해 만들어진 이벤트 스트리밍 플랫폼이라고 할 수 있다.
또한 성능도 매우 좋은 편이라 컴퓨터 성능에 구해받지 않고 고성능을 체감할 수 있는 플랫폼이라고도 할 수 있다.