Kafka의 특징

1 minute read

kafka란 무엇인가?

kafka란 링크드인에서 개발한 대용량, 대규모 데이터를 빠르게 처리하도록 개발된 pub-sub 구조의 메세지 큐이고 분산환경에 특화되어있는 설계를 바탕으로 개발된 오픈소스 프로젝트이다.

기존의 데이터 파이프라인 아키텍쳐는 복잡하고 파편화 되었는데 카프카의 도입으로 데이터 파이프라인이 단순해지고 중앙집중화되어 더 빠르고, 관리 가능하고, 실시간 처리가 가능해졌다.

또한 이전에는 커플링 이슈 때문에 데이터 소스와 타깃이 서로 의존하는 관계였는데 중간에 카프카를 배치하여 pub-sub구조를 만들어 데이터 소스와 타깃의 의존도를 완화할 수 있게 도와주었다.

이러한 kafka의 등장으로 데이터 처리량이 많아지는 오늘날 기업은 빅데이터를 활용하기 위한 데이터 파이프라인, 데이터 레이크, 데이터 웨어하우스로 데이터를 좀더 쉽게 관리할 수 있게 되었다.

kafka의 특징

Apache kafka는 데이터 레이크를 구성하는 척추에 해당하는 오픈 소스 프로젝트로 높은 처리량, 확장성, 영속성, 고가용성을 그 특징으로 가지고 있다.

높은 처리량

카프카는 프로듀서에서 브로커로 데이터를 보낼 때, 브로커에서 컨슈머로 데이터를 보낼 때 데이터를 묶어서 batch 형태로 전송해 한번에 많은 데이터를 처리하여 네트워크 비용을 최소화한다.

또한 파티션 단위를 통해 단일 토픽의 데이터를 여러 파티션에 분배해 병렬화된 처리를 수행하고 파티션 개수를 늘리는 방식을 통해(이때 consumer의 개수도 늘려준다.) 데이터 처리량을 늘릴 수 있다.

확장성

카프카는 데이터의 입력이 어느정도 모르는 상태에서도 탄력적으로 운용되어야하기 때문에 확장성을 가진다. 카프카는 클러스터를 구성하여 동작하는데 각 클러스터의 처리 노드를 브로커라고 한다. 카프카 클러스터를 관리할 때 데이터 입력이 적을 경우 이 브로커 개수를 줄이는 scale-in 작업을 통해 클러스터를 줄일 수 있다. 동시에 데이터 처리량이 많을 경우 브로커의 개수를 늘려주는 scale-out전략을 수행해 확장성 있는 클러스터 관리가 가능하다.

영속성

카프카는 다른 메세지큐와는 달리 데이터를 생성한 프로그램이 종료되더라도 사라지지 않는다. 카프카는 데이터를 메모리에 유지하는 다른 메세지 큐와는 달리 파일 시스템에 저장한다. 그 결과 프로그램이 종료되어도 데이터가 사라지지 않는 영속성을 특징으로 가진다.

여기서 파일 시스템 형식으로 데이터가 저장 될 경우 속도가 느려지는 것을 막기 위해 페이지 캐시 영역을 메모리에서 운용한다.

고가용성

카프카 클러스터는 일반적으로 3개 이상의 서버들로 운용되기 때문에 일부 서버에 장애가 발생해 서버가 중단되어도 무중단으로 지속적이고 안정적인 데이터 처리가 가능하다. 클러스터로 이루어진 카프카 클러스터는 replication옵션을 통해 장애가 발생해도 문제가 일어나지 않는 고가용성의 특징을 가진다.

이는 브로커에 데이터를 받을 때 해당 데이터를 받은 브로커에만 저장하는 것이 아닌 다른 브로커에도 저장하는 방식의 replication을 적용해 지속적인 데이터 처리를 가능하게 하는 것이다.

참조문헌: 아파치 카프카 애플리케이션 프로그래밍 with 자바, 카프카, 데이터 플랫폼의 최강자, Apache Kafka documentation

Tags:

Categories:

Updated:

Leave a comment