카테고리 없음

Apache Kafka란?

여니여니_ 2020. 4. 26. 17:55

     

     

    Apache Kafka

    • 대용량, 대규모 메시지 데이터를 빠르게 처리하도록 개발된 메시징 플랫폼
    • Netflix, Airbnb, 카카오, 네이버 등의 주요 기업들에서 사용하는 대규모 데이터 처리 플랫폼 

     

    카프카의 탄생 배경

    처음 링크드인이 급성장을 이루며 데이터 처리 시스템의 문제점을 개선시키고자 탄생했다. 통합된 데이터 전송 영역이 없었기 없었고, 데이터 파이프라인의 관리가 어려웠다. 데이터 분석을 위하여 파이프라인이 서로 연결되어야 했는데, 파이프라인별로 데이터 포맷과 처리하는 방법들이 달라 확장에 어려움이 있었다. 

     

    따라서 다음과 같은 시스템을 만들게 되었다.

    • 프로듀서와 컨슈머의 분리
    • 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에 허용
    • 높은 처리량을 위한 메시지 최적화
    • 데이터 증가에 따른 스케일아웃이 가능한 시스템

     

    출처: https://kafka.apache.org/

     

     

    스트리밍 플랫폼의 세 가지 주요 기능

    1. 메시지 큐 또는 Enterprise Messaging System과 비슷하게 레코드 스트림을 Publish/Subscribe 한다.
    2. 오류가 허용되는(fault-tolerant) 내구성 있는 방식으로 레코드 스트림을 저장한다.
    3. 레코드 스트림이 발생할 때 그것들을 처리한다.

     

    보통 카프카가 사용되는 두 애플리케이션의 종류

    1. 시스템과 애플리케이션 사이에 의존적으로 데이터를 가지고 오는 실시간 스트리밍 데이터 파이프라인을 구축할 때
    2. 데이터 스트림에 반응하거나 변형을 하는 실시간 스트리밍 애플리케이션을 구축할 때

     

    동작 방식과 원리

    카프카는 기본적으로 메세징 서버로 동작한다.

     

    • Pub/Sub Model (펍섭모델): 비동기 메시징 전송 방식. 발신자(publisher)는 수신자(subscriber)가 정해지지 않은 상태로 발행하고, 구독을 신청한 수신자가 메시지를 받을 수 있음. 중앙에 메시징 시스템 서버를 두고 메시지를 보내고 받는 형태의 통신. fan-out(일대다), fan-in(다대일), many-to-many(다대다) 통신이 가능.
    • Publisher (or Producer) 퍼블리셔 (또는 프로듀서)메세지라고 하는 데이터 단위를 보내는 측. 카프카의 토픽이라는 저장소에 데이터를 저장.
    • Subscriber (or Consumer) 서브스크라이버 (또는 컨슈머): 저장된 데이터를 가져다 쓰는 측.

    펍섭모델이 아닌 일반적인 통신 방식은 발신자와 수신자가 직접 통신을 하는 대신 전송 속도가 빠르고 결과를 빠르게 받아볼 수 있다. 하지만 데이터 유실의 염려가 있고, 개체를 각각 연결해야 하기 때문에 확장성이 좋지 못하다.

     

    반면, 카프카와 같은 펍섭모델은 교환기의 처리에 따라 수신처의 큐에 전달되므로 유실 염려가 없다. 하지만, 이런 중간 메시징 시스템으로 메시지 전달 속도가 느려진다는 것이 단점이다.

     

     

     

    Reference

     

    [카프카, 데이터 플랫폼의 최강자] 고승범 저

    http://www.yes24.com/Product/Goods/59789254

     

    카프카, 데이터 플랫폼의 최강자

    데이터 플랫폼의 핵심 컴포넌트로 각광받고 있는, 이벤트 기반 비동기 아키텍처를 위한 고가용성 실시간 분산 스트리밍 솔루션 카프카(Kafka)의 모든 것!국내 최대 모바일 플랫폼 회사인 카카오��

    www.yes24.com