IT아키텍처/MSA(MicroServiceArchitecture)

아파치 카프카(Apache Kafka)란?

vell_zero 2021. 11. 8. 23:11

https://blog.naver.com/dktmrorl/222115850592

 

[IT정보] 아파치 카프카(Apache Kafka) 개념

아파치 카프카(Apache Kafka)란? Kafka는 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 ...

blog.naver.com

아파치 카프카(Apache Kafka)란?

Kafka는 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트입니다. 이 프로젝트는 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목적입니다.

요컨대 분산 트랜잭션 로그로 구성된, 확장 가능한 pub/sub 메시지 큐로 정의할 수 있으며, 스트리밍 데이터를 처리하기 위한 기업 인프라를 위한 고부가 가치 기능입니다.

Kafka는 링크드인(Linkedin)에서 개발된 '분산 메시징 시스템'으로 대용량 실시간 로그처리에 특화된 아키텍처 설계를 통해 기존 메시징 시스템보다 우수한 TPS를 보여주고 있습니다.

※ 메시징 시스템이란?

'메시징 시스템'이라 하면, "문자, 이메일 같은 메시지들을 처리하는 시스템인가?"라고 생각할 수 있는데, 꼭 그런것은 아닙니다. 로그 데이터, 이벤트 메시지 등 API로 호출할 때 보내는 데이터들을 처리하는 시스템을 메시징 시스템이라고 생각하시면 됩니다. 자세한 내용은 아래 글을 참고하시길 바랍니다.

 

[IT정보] 메시지 큐(Message Queue, MQ) 개념

메시지 큐(Message Queue, MQ)란?메시지 큐(MessageQueue: MQ)는 프로세스 또는 프로그램 인스턴스...

blog.naver.com

Kafka 역사

Kafka는 원래 링크드인(Linkedin)에서 개발된 분산 메시징 시스템으로, 2011년 초에 최종적으로 오픈 소스화되었습니다. 2012년 10월 23일에는 아파치 인큐베이터로부터 완전히 빠져나왔습니다. 2014년 11월 링크드인에서 Kafka를 만들던 일부 엔지니어들이 Kafka에 집중하기 위해 Confluent라는 새로운 회사를 창립하였습니다.

Kafka의 구조와 동작

Kafka는 발행-구독(publish-subscribe) 모델을 기반으로 동작하며 크게 producer, consumer, broker로 구성됩니다.

출처: http://kafka.apache.org/081/documentation.html

Kafka의 broker는 topic을 기준으로 메시지를 관리합니다. Producer는 특정 topic의 메시지를 생성한 뒤 해당 메시지를 broker에 전달합니다. Broker가 전달받은 메시지를 topic별로 분류하여 쌓아놓으면, 해당 topic을 구독하는 consumer들이 메시지를 가져가서 처리하게 됩니다.

Kafka는 확장성(scale-out)과 고가용성을 위하여 broker들이 클러스터로 구성되어 동작하도록 설계되어있습니다. 심지어 broker가 1개 밖에 없을 때에도 클러스터로써 동작합니다. 클러스터 내의 broker에 대한 분산 처리는 아래의 그림과 같이 Apache ZooKeeper가 담당합니다.

출처: http://blog.mmlac.com/log-transport-with-apache-kafka

Kafka와 기존 메시징 시스템의 차이

기존 메시징 시스템이라고 말하면 ActiveMQ, RabbitMQ 등이 있습니다.

▶ Kafka는 대용량의 실시간 로그 처리에 특화되어 설계된 메시징 시스템으로써 기존 범용 메시징 시스템대비 TPS가 매우 우수합니다. 단, 특화된 시스템이기 때문에 범용 메시징 시스템에서 제공하는 다양한 기능들은 제공되지 않습니다.

▶ Kafka는 분산 시스템을 기본으로 설계되었기 때문에, 기존 메시징 시스템에 비해 분산 및 복제 구성을 손쉽게 할 수 있습니다.

▶ Kafka는 AMQP 프로토콜이나 JMS API를 사용하지 않고 단순한 메시지 헤더를 지닌 TCP기반의 프로토콜을 사용하여 프로토콜에 의한 오버헤드를 감소시켰습니다.

▶ Producer가 broker에게 다수의 메시지를 전송할 때 각 메시지를 개별적으로 전송해야하는 기존 메시징 시스템과는 달리, Kafka는 다수의 메시지를 batch형태로 broker에게 한 번에 전달할 수 있어 TCP/IP 라운드트립 횟수를 줄일 수 있습니다.

▶ 메시지를 기본적으로 메모리에 저장하는 기존 메시징 시스템과는 달리 Kafka는 메시지를 파일 시스템에 저장합니다.

▶기존의 메시징 시스템에서는 broker가 consumer에게 메시지를 push해 주는 방식인데 반해, Kafka는 consumer가 broker로부터 직접 메시지를 가지고 가는 pull 방식으로 동작합니다. 따라서 consumer는 자신의 처리능력만큼의 메시지만 broker로부터 가져오기 때문에 최적의 성능을 낼 수 있습니다.

Kafka를 사용하는 기업들

Kafka를 사용하는 기업들은 다음과 같습니다.

▶ 애플

▶ Betfair

▶ 시스코 시스템즈

▶ Cloudflare

▶ Conviva

▶ 카카오

▶ 이베이

▶ Hyperledger Fabric

▶ HubSpot

▶ 넷플릭스

▶ 뉴욕 타임스

▶ 페이팔

▶ 핀터레스트

▶ 세일즈포스닷컴

▶ Shopify

▶ 스포티파이

▶ 티켓마스터

▶ Uber

▶ 월마트

▶ Yelp

▶ 플립카트