상세 컨텐츠

본문 제목

Apache Kafka - 카프카란?

서랍/Apache Kafka

by 박복만 2021. 11. 29. 15:58

본문

kafka home

카프카란?

  • Event Streaming 플랫폼이다.
  • 분산 처리를 한다.
  • 오픈 소스이다.

그러면 Event Streaming이 뭔데?

  • 데이터베이스, 센서, 모바일기기, 어플리케이션 등과 같은 곳에서 발생하는 데이터를 Event Stream 형태로 저장해서 나중에 검색할 수 있도록 하는 것
  • 즉, Event Stream(발생하는 데이터)을 실시간으로 처리하고 필요에 따라서 다른 기술(다른 Target System)로 Event Stream을 라우팅 할 수 있도록 하는 것 
  • 따라서 Event Streaming은 지속적으로 발생하는 데이터를 적절한 장소에 위치하도록 하는 것

적절한 장소? -> 계속 쌓이는 데이터들을 지속적으로 보관해뒀다가 그것을 쓰려고 하는 또 다른 대상들이 가져가서 쓸 수 있도록 제공하는 것.

 

아파치 카프카는 Event Streaming 플랫폼 이라매? 그러면 무엇을 도와줄 수 있는데?

  • 다른 시스템(ex:DB)에서 데이터를 가져와서 플랫폼에 Publish(저장) 하거나, 플랫폼에서 데이터를 Subscribe(읽기, 받아오기) 할 수 있는 기능을 제공해줄거야
  • 위에서 말한 기능을 원하는 기간동안 지속적이고 안정적이게 제공해줄게
  • Event(데이터)들이 발생하거나(생기거나) 이미 발생한 이벤트에 대해서도 처리해줄게

Main Concept과 용어들

Event

  • 위에서 계속 얘기하던 "이벤트" 는 비즈니스에서 "어떤 일이 발생했다"는 사실을 기록한다.
  • 카프카 문서에서는 "record"나 "message"라고 부른다.
  • 이벤트에는 키, 값, 타임스탬프가 있고 선택적으론 메타데이터 헤더가 있습니다.
  • 예제
    Event key: "Alice"
    Event value: "Made a payment of $200 to Bob"
    Event timestamp: "Jun. 25, 2020 at 2:06 p.m."

Producer

  • 프로듀서는 카프카에 이벤트를 Publish하는(저장하는,쓰는) Client 어플리케이션이다.

Consumer

  • 컨슈머는 카프카의 이벤트를 Subscribe하는(읽는, 받아오는) Client 어플리케이션이다.

Decoupling

  • 위의 프로듀서와 컨슈머는 완벽하게 서로 분리되어있다. 서로에게 의존적이지 않게 하는게 카프카의 컨셉이다.

Topic

  • 이벤트들은 토픽에 저장된다.
  • 토픽은 파일시스템의 폴더와 같은것이다. 그리고 이벤트들은 폴더속의 파일이라고 생각하면 된다.
  • 전통적인 messaging system들과 다르게 메세지(이벤트) 들을 Subscribe해서 받아보더라도 그 메세지는 삭제되지 않는다.
  • 대신 토픽마다 어느정도 기간동안 이벤트들을 유지할지를 설정을 통해 정한다.

partition

  • 토픽들은 분할된다.
  • 토픽은 서로 다른 Kafka 브로커에 있는 여러 "버킷"에 분산되어 있습니다.
  • 이러한 데이터 분산 배치를 통해 클라이언트 애플리케이션은 여러 브로커로부터 데이터를 동시에 읽고 쓸 수 있으므로 확장성에 매우 중요합니다.
  • 새 이벤트가 항목에 게시되면 실제로 항목의 파티션 중 하나에 추가됩니다
  • Kafka는 지정된 토픽 파티션의 모든 소비자가 항상 해당 파티션의 이벤트를 작성된 순서와 정확히 동일한 순서로 읽을 수 있도록 보장합니다.

카프카 APIs

카프카는 Task들을 관리하기 위해서 다섯가지의 중요한 API들을 제공합니다.

  • Admin API
  • Producer API
  • Consumer API
  • Kafka Streams API
  • Kafka Connect API

자세한건 차차 알아보도록 하겠습니다.
저는 앞으로 Kafka Connect에 관한 업무를 맡을거기 때문에 Connect에 관한 포스팅을 이어가겠습니다.

카프카공홈의 인트로페이지를 제가 이해하는대로 번역한 것이라서 틀린것이 있다면 댓글로 알려주시면 감사하겠습니다.

읽어주셔서 감사합니다.


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

 

 

 

관련글 더보기

댓글 영역