Kafka 사용 사례
Kafka 사용 사례
Kafka가 실제 산업 현장에서 어디에 쓰이는지 궁금한 분들을 위한 페이지예요. 메시징, 활동 추적, 로그 집계, 스트림 처리 같은 대표적인 사용 사례를 하나씩 살펴볼게요. 전체 사용 사례 개요는 Powered By 페이지에서도 볼 수 있어요.
메시징
Kafka는 전통적인 메시지 브로커의 대체재로 잘 동작해요. 메시지 브로커는 데이터 프로듀서로부터 처리를 분리하고, 미처리 메시지를 버퍼링하는 등 다양한 이유로 쓰여요. 대부분의 메시징 시스템과 비교해 Kafka는 처리량이 좋고 파티셔닝·복제·내결함성이 내장되어 있어서 대규모 메시지 처리 애플리케이션에 좋은 해답이 돼요.
메시징 용도는 비교적 저처리량이지만 낮은 종단 간 지연이 필요하고, Kafka가 제공하는 강한 내구성 보장에 의존하는 경우가 많아요. 이 영역에서 Kafka는 ActiveMQ나 RabbitMQ 같은 전통적인 메시징 시스템과 비교돼요.
웹사이트 활동 추적
Kafka의 원래 사용 사례는 사용자 활동 추적 파이프라인을 실시간 발행-구독 피드의 집합으로 재구축하는 것이었어요. 페이지 조회, 검색, 사용자의 기타 액션이 활동 유형당 하나의 토픽으로 발행되고, 실시간 처리·실시간 모니터링·Hadoop이나 오프라인 데이터웨어하우스로의 로딩 등 다양한 용도로 구독할 수 있게 돼요. 활동 추적은 사용자 페이지 조회 한 번에 많은 활동 메시지가 생성되는 매우 고용량인 경우가 많아요.
메트릭
Kafka는 운영 모니터링 데이터에도 자주 쓰여요. 분산 애플리케이션의 통계를 집계해 중앙화된 운영 데이터 피드를 만드는 거죠.
로그 집계
많은 조직이 Kafka를 로그 집계 솔루션의 대체재로 써요. 로그 집계는 서버의 물리 로그 파일을 수집해 중앙(파일 서버나 HDFS)에 모아 처리하는 방식인데, Kafka는 파일의 세부사항을 추상화하고 로그·이벤트 데이터를 메시지 스트림이라는 더 깨끗한 추상화로 제공해요. 그래서 더 낮은 지연의 처리와 여러 데이터 소스·분산 데이터 소비를 쉽게 지원해요. Scribe나 Flume 같은 로그 중심 시스템과 비교해 등등한 성능에, 복제로 인한 더 강한 내구성 보장, 훨씬 낮은 종단 간 지연을 제공해요.
스트림 처리
많은 사용자가 Kafka 토픽에서 원시 입력 데이터를 소비하고, 집계·보강(rich)시키거나 다른 방식으로 변환해 새 토픽으로 발행하는 다단계 처리 파이프라인을 만들어요. 예를 들어 뉴스 추천 파이프라인에서는 RSS 피드에서 기사 내용을 크롤링해 "articles" 토픽에 발행하고, 다음 단계에서 정규화·중복제거해 정제된 기사를 새 토픽으로, 마지막 단계에서 사용자에게 추천하는 식이에요. 각 토픽을 기반으로 실시간 데이터 흐름의 그래프가 만들어져요.
0.10.0.0부터 가볍지만 강력한 스트림 처리 라이브러리인 Kafka Streams가 Apache Kafka에 포함되어 이런 데이터 처리를 수행해요. Kafka Streams 외에도 Apache Storm, Apache Samza 같은 오픈소스 스트림 처리 도구가 있어요.
이벤트 소싱
Event sourcing은 상태 변화를 시계열 순서의 레코드로 로그하는 애플리케이션 설계 스타일이에요. Kafka가 아주 큰 저장 로그 데이터를 지원하는 덕분에 이런 스타일의 애플리케이션을 위한 훌륭한 백엔드가 돼요.
커밋 로그
Kafka는 분산 시스템의 외부 커밋 로그 역할을 할 수 있어요. 로그는 노드 사이의 데이터 복제를 돕고, 실패한 노드가 데이터를 복원하도록 재동기화 메커니즘으로 작동해요. Kafka의 로그 컴팩션(log compaction) 기능이 이 사용을 지원하고, 이 용도에서 Kafka는 Apache BookKeeper와 비슷해요.
더 알아보기
- Kafka 개념을 처음 본다면 Introduction을 읽어 보세요.
- 직접 돌려 보려면 Quickstart를 따라 해 보세요.
- Powered By에서 전 세계 사용 사례를 둘러보세요.