Kafka

[Kafka] 카프카 이론 - 토픽(Topic), 파티션(Partition), 오프셋(Offset) (1)

아윤_ 2025. 4. 29. 21:14

회사에서 실무를 시작하게 되면서 Kafka를 사용하게 되었는데,

이에 대한 개념이 부족해 Kafka에 대한 개념을 공부하고, 정리하는 시간을 갖게 되었다.

이번 포스팅에서는 Kafka의 Topic, Partition, Offset이 무엇인지 알아보자.


 

카프카(Kafka)란 무엇이며, 왜 사용하는가?

  • 아파치 카프카(Apache Kafka)는 실시간 데이터 스트리밍을 처리하는 분산형 메시지 시스템이다.
  • 카프카는 2010년 LinkedIn에서 개발되어 대규모 데이터 처리를 위해 사용되었으며, 이후 실시간 데이터 처리, 로그 집계, 이벤트 소싱 및 데이터 스트림 파이프라인 구축 등의 다양한 용도로 널리 사용되었다.
  • 기존의 메시지 큐와 달리 높은 확장성, 내구성을 제공하며, 특히 대용량의 데이터를 빠르고 안정적으로 처리할 수 있는 능력을 갖고 있다.
  • 카프카를 사용하면 실시간으로 많은 양의 데이터를 처리할 수 있으며, 데이터 생산자와 소비자 사이에서 데이터를 안정적이고 효율적으로 전달할 수 있다. 이러한 특성으로 인해 금융 거래, 실시간 분석, 모니터링 시스템, IoT 데이터 처리 등의 분야에서 널리 활용된다.

 

토픽(Topic), 파티션(Partition), 오프셋(Offset)

 

토픽(Topic)

  • 토픽이란, 카프카 클러스터 내에서 데이터를 분류하고 관리하는 데이터 스트림이다.
  • 데이터 스트림은 연속적인 데이터 메시지의 집합으로, 각 메시지는 생성된 순서대로 저장된다. 예를 들어, 고객의 주문 데이터를 처리할 때 'order'라는 이름의 토픽을 생성하고, 모든 주문 관련 메시지를 이 토픽으로 보낼 수 있다.
  • 카프카 스트림에는 많은 토픽이 존재할 수 있다.
  • 토픽은 데이터베이스의 테이블과 유사하지만, 테이블과 달리 스키마나 데이터 형식의 제약이 없다. 즉, 숫자, 문자열, JSON 등 모든 형식의 데이터를 자유롭게 저장할 수 있으며, 데이터의 검증 과정도 없다.
  • 단, 데이터를 조회하거나 변경하는 방식이 아니라 새로운 데이터만 추가할 수 있는 구조로 이루어져 있다. 카프카 토픽은 불변이다. 데이터를 파티션에 등록하면 변경/삭제할 수 없다.
  • 예를 들어, 온라인 쇼핑몰에서 '상품주문', '결제처리'와 같은 개별 토픽을 생성하여 각각의 이벤트 데이터를 따로 관리할 수 있다. 즉, 토픽은 카프카 클러스터 내에서 이름을 이용해 식별 가능하다.

 

파티션(Partition)

  • 파티션은 토픽 내 데이터를 여러 조각으로 나누어 저장하는 단위이다. 하나의 토픽은 여러 개의 파티션으로 나누어질 수 있다. 이를 통해 데이터의 병렬 처리 및 분산 저장이 가능해진다.
  • 예를 들어 '결제처리' 토픽을 4개의 파티션으로 나누면, 서로 독립적으로 메시지가 처리될 수 있어 시스템의 확장성과 성능이 향상된다.
  • 파티션 내부의 메시지는 저장된 순서대로 처리되며, 각 메시지에는 순차적인 오프셋이 할당된다. 오프셋은 0부터 시작하여 메시지가 추가될 때마다 1씩 증가한다.

 

오프셋(Offset)

  • 오프셋은 파티션 내 각 메시지의 위치를 나타내는 고유한 식별자로, 메시지의 순서를 유지하는 데 중요한 역할을 한다.
  • 특정 메시지를 정확히 찾고 싶을 때 이 오프셋을 이용해 위치를 참조할 수 있디.
  • 소비자(consumer)가 메시지를 읽을 때 특정 오프셋부터 다시 읽기 시작할 수 있기 때문에 시스템 장애 후 복구 작업이 용이하다. 예를 들어, 메시지를 오프셋 100부터 다시 읽기 시작하도록 설정하면 해당 위치의 메시지부터 재처리할 수 있다.

 

Topic, Partition, Offset

 

주요 특징

 

불가변성

  • 어떤 데이터가 파티션에 기록되면 그 데이터는 수정하거나 삭제할 수 없고, 새로운 메시지만 추가할 수 있다.

 

데이터 유지기간

  • 기본적으로 메시지는 일주일 동안만 유지되며, 이후 자동으로 삭제된다.

 

순서 보장

  • 메시지의 순서는 파티션 내에서만 보장된다. 파티션이 다르면 메시지의 처리 순서가 보장되지 않는다.

 

임의 파티션 할당

  • 메시지 전송 시 키가 지정되지 않으면 메시지는 카프카가 자동으로 결정한 임의의 파티션에 저장된다.

 


정리
  • 카프카는 실시간 데이터 처리에 특화된 고성능 메시징 시스템이다.
  • 토픽은 데이터를 분류하고 관리하는 스트림이다.
  • 파티션은 토픽 내 데이터를 분산하여 병렬 처리와 저장이 가능하게 한다.
  • 오프셋은 각 메시지의 고유 위치 식별자로, 메시지의 순서를 관리한다.
  • 메시지는 변경이 불가능하며, 특정 기간 후 자동 삭제된다.