Kafka 기본 개념

steve·2023년 10월 10일
0

Backend

목록 보기
3/17

Kafka란?

Apache에서 개발한 오픈소스 Event streaming platform

배경 지식

Event Streaming?

  • 이벤트 스트리밍은 데이터를 실시간으로 획득하는 방법
  • 데이터는 데이터베이스, 센서, 모바일 기기, 클라우드 서비스 및 소프트웨어 응용 프로그램과 같은 이벤트 소스에서 이벤트 스트림 형태로 가져와서 처리하게 된다
  • 이벤트 스트리밍은 데이터의 연속적인 흐름과 해석을 보장하여 올바른 정보가 올바른 장소에 올바른 시간에 제공된다

어떤 경우에 이벤트 스트리밍이 사용되는가?

  • 실시간 데이터 처리
  • 실시간 데이터 추적 및 모니터링
  • 장비 센서 데이터를 지속적으로 수집하고 분석
  • 고객 커뮤니케이션 서비스 (예: 주문 접수 및 처리 등)
  • 데이터 플랫폼, 이벤트 기반 아키텍처 및 마이크로서비스의 기반 역할을 함

Kafka 특징

  • 세 가지 주요 기능
    1. 이벤트 스트림을 발행(쓰기)하고 구독(읽기)하는 기능을 제공하여 다른 시스템에서 데이터를 지속적으로 가져와 내보낼 수 있음
    2. 이벤트 스트림 저장
    3. 원하는 사용 조건에 이벤트 스트림을 처리
  • 분산 시스템, 확장성, 장애 대응 관련 기술이 필요한 시스템에 안전한 방식으로 데이터 손실 없이 이벤트 스트리밍을 사용할 수 있음
  • 기존 메시징 시스템과는 달리 topic안의 이벤트들을 필요한 경우에만 읽을 수 있도록 하거나, 이벤트 소모 후에도 제거되지 않게 configuration setting 할 수 있음

동작 원리

  • 서버와 클라이언트로 구성된 분산 시스템으로, 고성능 TCP 네트워크 프로토콜을 통해 통신
  • 장애에 대응할 수 있도록 데이터 사본을 보유하는 여러 브로커가 있음
  • 일반적인 Production 은
  • 서버 역할
    1. 클러스터로 실행되며 데이터 저장, 이벤트 스트림 통합 등 다양한 작업을 수행
    2. 확장 가능하고 내결함성이 높다
  • 클라이언트 역할
    1. 이벤트 스트림을 처리하는 분산 애플리케이션 및 마이크로서비스 작성을 지원

주요 용어

  • Event
    • 데이터를 읽거나 쓸 때는 이벤트 형식으로 수행됨
    • 구성 요소 : key, value, timestamp, optional metadata headers
  • Producer와 Consumer
    • Producer : Kafka로 이벤트들을 publish하는 클라이언트들
    • Consumer : Producer가 publish한 이벤트들을 subscribe
    • 서로 완전히 분리된 상태이기 때문에 Kafka의 특징인 높은 확장성을 보장
  • Topic
    • 이벤트가 구성되고 저장되는 장소 (파일 시스템의 폴더 같은 역할)
    • 다른 Kafka 브로커에 있는 여러 Bucket에 분산되어 있음 (확장성에 중요한 역할)
    • Topic 내부는 Partition으로 나뉘어져있고 Partition은 동일한 이벤트 key끼리 구성됨
    • 이벤트는 어느 클라이언트에서든지 생성된 순서로 소모됨

사용 사례

  1. Messaging
  • 데이터 생산자와 처리를 분리하기 위해, 처리되지 않은 메시지를 버퍼링하기 위해 메시징을 사용
  • 기존 메시지 브로커 시스템과 비교하여 더 나은 성능, 고가용성을 보여줌
  1. 웹사이트 활동 추적
  • 사용자의 사이트 활동(페이지 보기, 검색 등)
  • news feed를 실시간 처리, 모니터링, 조회 하는 데는 큰 부하가 따르기 때문에 이러한 처리를 하기에 적합함
  1. 로그 집계 (Metric)
  • 일반적인 로그 집계 방식인, “물리적 로그 파일 저장-수집-처리”가 아니라 이벤트 데이터를 메시지 스트림으로 처리하여 분산 데이터 소비가 쉬워지고 더 나은 성능을 제공함
  1. 스트림 처리
  • Kafka는 주로 여러 단계로 구성된 파이프라인에서 데이터를 처리함
  • 예) 뉴스 기사 추천을 위한 처리 파이프라인
    : RSS 피드에서 기사 컨텐츠 크롤링하여 Article topic에 게시할 수 있음
    : 추가 처리를 통해 컨텐츠를 정규화하거나 중복 제거, 컨텐츠 추천 등 다양한 작업을 하기 유리
  1. 이벤트 소싱
  • 상태 변경이 시간 순서에 따른 레코드 시퀀스로 기록되는 애플리케이션 디자인 스타일

0개의 댓글

관련 채용 정보