독후감/실전 아파치 카프카

01. 카프카의 개요

TevQabs 2021. 2. 3. 19:36

아파치 카프카(Apache Kafka)는 여러 대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템이다.

아파치 카프카

카프카는 대량의 데이터를 높은 처리량과 실시간으로 취급하기에 다음 4가지 특성을 가지고 있다.

- 확장성 : 여러 서버로 확장(scale out) 구성할 수 있어 데이터 양에 따라 시스템 확장이 가능하다.

- 영속성 : 수신한 데이터를 디스크에 유지할 수 있어 언제라도 데이터를 읽을 수 있다.

- 유연성 : 연계할 수 있는 제품이 많아 제품이나 시스템을 연결하는 허브 역할을 할 수 있다.

- 신뢰성 : 메시지 전달을 보증하므로 데이터 분실에 대한 걱정을 하지 않아도 된다.

 

링크드인에서 카프카를 발표하기 전, 카프카와 비슷한 제품이 있었지만 모두 링크드인에서 요구하는 사항에는 일치하지 않았다.

요구사항 메시지 큐 로그 수집 시스템 ETL 도구 카프카
실시간 O O X
(배치 / 파일 등 일정 묶음으로 전송)
O
확장구성 X O O O
영속화
(장기 보존은 예상 외)
X
(NFS나 HDFS와 연계)
X O
다양한 플랫폼 접속 O
(HDFS 접속 중심)
O O
메시지 전달 보증 O
(트랜잭션 관리 가능)

(트랜잭션 관리 기능 미제공)
O
(전 후의 시스템과 연계하여 실현)
O
(메시지 상실은 허용 하지 않음 / 트랜잭션 관리는 나중에 구현)

카프카는 다음과 같은 요구 사항을 만족시키고 싶어했다.

  1. 높은 처리량으로 실시간 처리
  2. 임의의 타이밍에 데이터 읽기
  3. 다양한 플랫폼과의 연동

이를 해결하기 위해 카프카는 메시징 모델을 채용했다.

  • Producer : 생산자
  • Broker : 메시지 수집 / 전달
  • Consumer : 소비자

프로듀서, 브로커, 컨슈머

프로듀서는 메시지를 생산하며, 컨슈머는 메시지를 읽어 원하는 프로세스를 진행할 수 있다.

그 사이에 브로커를 사이에 끼우고 있는데, 이는 아래와 같은 장점으로 변경에 강한 시스템 아키텍처를 만들 수 있다는 장점이 있다.

- 프로듀서 / 컨슈머 모두 접속처를 하나로 할 수 있다.

- 프로듀서 / 컨슈머 확장에 쉽게 대응할 수 있다.

브로커의 장점

 

메시지를 생산하는 입장에서 메시지를 잃지 않는 것은 매우 중요하다.

이에 카프카에서는 아래 3가지 수준의 전달을 보증해준다.

카프카 전달 보증 수준

초기 카프카는 At Least Once 수준의 전달을 보증하는 제품으로 출시했지만, 카프카의 유용함에 알려지며 Exactly Once 수준의 전달을 보증하고자 하는 요구가 높아졌고, 이에 카프카에서는 트랜잭션 개념을 도입하여 전달을 보증하게 되었다.

 

Producer 중복 메시지 제거
컨슈머 트랜잭션 중단 방법

Exactly Once 수준의 전달을 위해 위와 같은 상태 관리를 카프카는 요구한다.