Kafka

Apache Kafka

ZzangHo 2022. 1. 26. 13:49
728x90

현재 회사에서 내가 속한 팀은 검색개발팀이며 검색엔진은 Solr와 ElasticSearch 이렇게 두 종류를 사용하고 있다.

 

현재 검색엔진에 색인 되는 도메인의 종류가 크게 4가지이상으로 나누어 진다.

 

각각의 서로 다른 End Point에서 각기 다른 형태로 데이터를 수집하고 있는데 작년의 우리팀의 미션은 데이터 파이프라인을 표준화 시키는 것이다.

데이터파이프라인 표준화를 위해 현재 아주 핫한 MQ(Message Queue)인 Apache Kafka를 도입하기로 하였다. 그래서 미리 공부를 좀 하는 시간을 가져보며 이 글은 “실전 아파치 카프카”를 참고하여 작성되었다.

 

Apache Kafka란?

여러대의 분산 서버에서 대량의 데이터를 처리하는 분산 메시징 시스템이다. 메시지를 받고, 받은 메시지를 다른 시스템이나 장치에 보내기 위해 사용된다. 분산환경에 특화되어 설계되어 있다는 특징을 가져 기존의 RabbitMQ와 같은 다른 메세지큐와는 성능 차이가 난다.

 

탄생배경

카프카는 2011년 미국 링크드인에서 출발하였다. 카프카는 링크드인 웹사이트에서 생성되는 로그를 처리하여 웹사이트 활동을 추적하는 것을 목적으로 개발되었다고 한다. 웹에서 생성되는 대량의 로그를 분석하여 사용자가 웹에서 하는 활동을 모니터링하고 서비스 개선에 활용하려는 것이다. 빅데이터를 어떻게 활용할 것인지가 큰 화제였던 당시 많은 웹 기업에서는 웹사이트에서 생성되는 로그를 활용하기 시작했다.

 

링크드인이 실현하려는 목표는 다음과 같다

  • 높은 처리량으로 실시간 처리한다.
  • 임의의 타이밍에서 데이터를 읽는다
  • 다양한 제품과 시스템에 쉽게 연동한다.
  • 메시지를 잃지 않는다

 

카프카 이전 제품

  • 메시지 큐
  • 로그 수집
  • ETL 도구

 

카프카 모델

카프카는 메시징 모델로 ‘큐잉 모델’과 ‘Pub/Sub 모델’ 이 둘의 특징을 겸비한 형태로 만들어졌다.
  • 큐잉 모델브로커 안에 큐를 준비해, 프로듀서에서의 메시지가 큐에 담기고, 컨슈머가 큐에서 메시지를 추출한다.
  • Pub/Sub 모델메시지 생산자인 프로듀서를 ‘publisher’, 메시지 소비자의 해당 컨슈머를 ‘subscribe’라고 한다.

이러한 형태로 보면 프로듀서를 통해 카프카에 데이터를 전달하면 브로커는 큐 형태로 데이터를 저장하게 되고 컨슈머는 큐의 데이터를 읽어서 처리하기 때문에 프로듀서 및 컨슈머 확장성에도 아주 용이하다고 볼 수 있다. 왜냐하면 프로듀서는 카프카만 바라보고 주구장창 데이터를 던져주기만 하면 되고 컨슈머는 카프카만 바라보고 데이터를 가져다 쓰면 되기 때문이다.

 

 

 

 

 

'Kafka' 카테고리의 다른 글

토픽과 파티션, 레코드  (0) 2022.01.26
Kafka에서 데이터 순서 보장하려면?  (0) 2022.01.26
Kafka 정리  (0) 2022.01.26
자주쓰는 Kafka 명령어  (0) 2022.01.26
Kafka Connect  (0) 2022.01.26