카프카(Kafka)

Think_Positively·2021년 4월 22일
0

카프카란?

Apache Kafka는 링크드인(LinkedIn)에서 개발한 분산 스트리밍 플랫폼이다. 시스템 또는 애플리케이션간에 데이터를 안정적으로 가져오는 실시간 데이터 파이프 라인을 만들 때 주로 사용되는 오픈소스 솔루션이다. 카프카는 대용량의 실시간 로그처리에 특화되어 있는 솔루션이며 데이터를 유실없이 안전하게 전달하는 것이 주목적인 메시징 시스템에서 Fault-Tolerant한 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리할 수 있다.

  • Falult-Tolerant: 시스템을 구성하는 부품의 일부에서 결함(fault)또는 고장(failure)이 발생하여도 정삭적 혹은 부분적으로 기능을 수행할 수 있는 시스템.

주요 개념 및 용어

어떤 Event라는 것은 어디에선가 "무엇인가 일어났다"를 의미한다. 개념적으로 카프카에서 이벤트는 key,value,timestamp 그리고 부가적으로 metadata header로 구성된다.

ex)

  • Event key: "Alice"
  • Event value: "Made a payment of $200 to Bob"
  • Event timestamp: "Jun. 25, 2020 at 2:06p.m."

Producers(생산자)는 사용자 어플리케이션으로 카프카에 Event를 publish(write)하는 것들을 의미한다. 그리고 Consumers(소비자)는 이러한 Event를 subscribe(read&process)하는 것이다. 카프카에서는 생산자와 소비자가 완전히 분리되고 상호 불가지론적(agnostic)이며, 이는 카프카가 잘 알려진 높은 확장성을 달성하기 위한 핵심 설계 요소입니다.

Event들은 Topic에 조직적이고 내구적으로 저장됩니다. 쉽게 설명하면 topic은 파일시스템에 폴더이고 Event는 폴더 내에 파일이다. 카프카에서 topic은 항상 multi-producer 이고 multi-subscriber이다. topic은 0, 1 또는 더 많은 producer를 가질 수 있고 이는 consumer도 마찬가지 이다. 다른 messaging 시스템들과 다르게 event가 소비된다고 사라지지 않는다. 대신, 카프카에게 얼마나 오래 Event를 유지할지 설정합니다.

topic들은 만들어져 있는 Broker들에 분산되어 있습니다. 이러한 데이터 분산 배치로 인해 사용자 어플리케이션들이 Brokers에서 동시 다발적으로 읽고/쓰기를 할 수 있습니다.

* Producer = Provider
profile
데이터 엔지니어를 꿈꾸며

0개의 댓글