string(27) "/blog/?uid=149&mod=document"

HOME

ABOUT US

Blog

Blog

Blog

카프카 (Kafka)

2021.02.04

세계 최대 비즈니스 네트워크 사이트인 LinkedIn 은 하나의 서비스에 과도하게 많은 시스템이 연결되어 있어 서비스를 유지하고 관리하는데 어려움을 겪고 있다. 또한 시스템 유지 보수 및 서비스 관리에도 많은 부담이 가해졌다. 이를 극복하기 위해 컨플루언트 공동 창업자인 "제이 크랩스(Jay Kreps)"는 카프카(Kafka)라는 메시징 분산 스트리밍 플랫폼을 고안하게 되었다.

카프카는 웹사이트, 어플리케이션, 센서 등에 취합한 데이터를 스트림 파이프라인을 통해 실시간으로 관리하고 보내기 위한 분산 스트리밍 플랫폼이다. 데이터를 생성하는 어플리케이션과 데이터를 소비하는 어플리케이션 간의 중재자 역할을 함으로써 데이터의 전송 제어, 처리, 관리 역할을 한다. 카프카 시스템은 여러 요소(노드)와 함께 구성될 수 있어 카프카 클러스터 라고 하기도 하는데 다른 메시징 시스템과 마찬가지로 어플리케이션과 서버 간의 비동기 데이터 교환을 용이하게 하고, 하루에 수 조개의 이벤트 처리가 가능하게 하는 역할을 한다. 즉, 카프카는 플랫폼에 서비스를 연결하여 다양한 서비스에서 나오는 데이터 흐름을 실시간으로 제어하는 서비스의 중추역할을 하는 플랫폼이다.

 

20210204175551_jiq9r1i.png
 

[Kafka 의 용도]

카프카는 분산스트리밍 플랫폼으로 끊임없이 들어오는 데이터를 일괄적으로 묶어서 데이터를 처리하고 실시간으로 데이터를 처리하거나 가공하여 또 다른 서비스에 데이터를 전달하여 IoT 데이터 처리, 금융거래 사기방지 등에 사용된다. 뿐만 아니라 오픈마켓에서 사용자의 홈페이지 클릭 수, 상품을 바라보는 빈도 및 시간, 주문 및 환불 서비스 등 어플리케이션 사용자의 활동 분석을 통해 기업에서 전략적으로 비즈니스를 할 수 있도록 데이터를 수집/분석한다. 현재 많은 기업들이 카프카를 이용하여 서비스 중이다.

 

[Kafka 의 기본구성 요소]

카프카의 구성도를 보기에 앞서 기본 구성요소를 살펴보자.

 

20210204175625_8y1tkyy.png

▶ Cluster : 여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합

▶ Producer : 데이터를 만들어내어 전달하는 전달자의 역할

▶ Consumer : 프로듀서에서 전달한 데이터를 브로커에 요청하여 메시지(데이터)를 소비하는 역할

▶ Broker : 생산자와 소비자와의 중재자 역할을 하는 역할 

▶ Topic : 보내는 메시지를 구분하기 위한 카테고리화

▶ Partition : 토픽을 구성하는 데이터 저장소로서 수평확장이 가능한 형태 

 

[Kafka 의 Pub-Sub 모델]

카프카에서 발행/구독 모델은 송신자가 메시지를 특정 수신자에 직접적으로 보내는 프로그래밍 모델이 아닌, 발행자(Publisher)가 보내는 메시지를 Topic 이라는 카테고리로 묶어서 보내고 구독자(Subscriber)는 해당 Topic을 구독함으로써 메시지를 받는 프로그래밍 모델이다.

 

20210204175739_t91b4lk.jpg

 

 

 

[Kafka의 특징]

 

카프카의 특징을 살펴보면 다음과 같다.

 

20210204175759_4rga9es.png
 

1- 카프카에 여러 전달자(Producer)가 동시에 메시지를 전송할 수 있고 반대로, 여러 소비자(Consumer)에서 동시에 메시지를 읽을 수 있다.

2- 한 노드가 메시지를 전송하면 전달자(Producer)와 소비자(Consumer)를 중재하는 브로커에서 전달자가 전달한 메시지를 브로커의 동작에 영향을 주지 않고 처리 속도 및 장애 복구를 유지할 수 있게 하기 위해 일정 기간 동안 파일 형태로 저장한다.

3- 시스템 트래픽이 높아지면 브로커를 추가해서 클러스터를 확장할 수 있다.

4- 처리 속도가 저하되면 소비자(Consumer) 또는 생산자 (Producer)를 추가하여 처리량을 늘릴 수 있다.

5- 소비자 (Consumer)가 프로듀서의 메시지 생성속도를 따라가지 못할 때 컨슈머를 그룹으로 묶어 프로듀서에서 보내는 속도와 읽는 속도의 균형을 맞출 수 있다.  

 

[Kafka 의 장/단점]

 

이렇듯 카프카는 빠른 속도로 대용량의 데이터를 처리하는 데 용이하며 낮은 지연 시간으로 메시지를 빠르게 처리하는 것이 가능하다. 또한 복제, 파티셔닝 등과 같은 기능을 사용하여 카프카 시스템을 쉽게 확장시킬 수 있다. 전달할 메시지를 파일로 저장함으로써 데이터의 안정성과 신뢰성을 높일 수 있다.

하지만 반면에 모니터링 및 관리 도구가 불편하여 메시지의 조정이 필요한 경우 카프카의 성능이 크게 저하된다는 단점을 지니고 있다. 또한 클러스터의 대기열 수가 증가하면 상태적으로 느리게 동작하는 경우가 있다.

카프카의 개발로 인해 많은 기업들이 업무를 함에 있어 혁신적으로 개선이 되었으며 현재 많은 기업들이 카프카를 이용하여 서비스 중이다. 대표적으로 넷플릭스, 트위터, 링크드인, 오라클 등에서 사용 중이다.  

 

20210204175825_4tyba8k.png