본문 바로가기
Back Side/Kafka

[Kafka 시리즈] #1 Apache Kafka라고 들어보셨나요? 전 진짜 들어만 봤어요 (+ Zookeeper vs KRaft)

by developerBeluga 2023. 10. 12.
728x90
반응형

 

 

 

 

 

 

 

Apache Kafka 그거 대기업에서 다 쓰던데

카프카라는 이름은 개발자를 준비하면서 많이 들어온 단어 중 하나였다.

IT 대기업을 대표하는 네이버, 카카오 컨퍼런스에서 심심치 않게 나왔고 배민, 토스에서도 봤던 기억이 있었다.

 

당시 카프카를 접한 나는 MSA랑 같은 느낌을 받았다.

알지만 개인 프로젝트에서 할 수 없는 미지의 영역.

MSA도 회사에 들어와서 할 수 있었던 나는 현재 카프카까지 담당하는 처지가 됐다 😇

(좋은데... 좋은거 맞지? 여러분들은 백엔드 많은 곳으로 가십쇼...)

 

 

 

 

그래서 Apache Kafka가 뭔데요?

한줄로 말하면 대규모 데이터를 동시에 이동시킬 쓰는 분산형 데이터 스트리밍 플랫폼이다.

예?

 

뭔소리인지 모르겠다면 당신은 제 글을 계속 읽은 기회를 얻었습니다(?)

바로 이해했다면 바로 떠납시쇼

당신이야 말로 이 개발세계의 한줄기 빛과 소금 ⭐️

 

각설하고 다시 돌아와서 카프카를 더 자세히 이야기 해보자.

 

카프카는 실시간 데이터 파이프라인과 이벤트 기반 시스템을 지원하기 위해 만들어졌다.

높은 처리량, 스케일 아웃, 데이터 저장과 재처리능력 등의 특징을 가지고 있다.

 

 

좋은게 알겠는데 왜 Apache Kafka를 써야하는데?

지극히 우리 회사 입자에서 보자면 앞에서도 말했다시피 현재 MSA로 여러 서버를 운영하고 있다.

그런데 직접적으로 HTTP 통신하다보니 트래픽 제어를 할 수 없었다.

그래서 서비스메시를 통한 호출로 변경하고 메시지 큐를 도입하기로 했다.

 

서비스나 애플리케이션 간의 메시지를 비동기적으로 전송하고 저장하는 미들웨어, 메시지 큐로 카프카를 쓰기로 결정했다.

당연히 카프카 말고도 메시지 큐로 RabbitMQ, ActiveMQ, AWS SQS, Azure Service Bus 등 있다.

(현재 클라우드를 Azure를 쓰고 있어서 Azure Service Bus도 고려 중이다...)

 

 

 

 

 

 

 

Zookeeper가 뭐라고요? KRaft는 또 뭔데요...

원래 메시지큐로 카프카를 먼저 동기가 공부를 하고 있었다.

하지만 시간이 없다보니 동기는 서비스메시에 집중하고 내가 이어서 메시지큐를 하기로 한거였다.

회의가 끝나고 자리에 앉는데 대뜸 동기가 zookeeper는 힙하지 않으니 kraft를 쓰라는 말을 했다.

정말 어제까지만 해도 카프카 이름만 들어본 사람으로써 zookeeper는 또 뭐고 kraft가 뭔지 이해가 되지 않아 메모만 했다.

하지만 카프카와 관련된 글 조금만 봐도 끝에 다 zookeeper를 적어놨다.

오홍, zookeeper는 카프카 좀 쓴다 하면 다 알고 있는거였다.

 

zookeeper 이 놈은 한마디로 카프카 서버 상태를 관리하는 애다.

즉, 분산 코디네이터이다.

그리고 그건 kraft도 마찬가지다.

 

kafka는 오랫동안 의존했던 zookeeper를 통해 했는 일을 Raft 합의 프로토콜을 사용해서 KRaft로 자체적으로 관리하게 된거다.

이렇게 전환함으로 써 Kafaka는 배포를 단순화(=쉽고 빠름)하고 확장성을 향상(=zookeeper보다 더 많은 트래픽과 데이터를 처리)시켰다.

 

 

 

 

 

다음엔 실전이다

Linked In kafak 도입 후 아키텍처

kafka에 대한 개념을 정리해봤다.

내가 이해한대로 적다보니 상대적으로 내용이 적지만 뭐든지 직접 해봐야 완전히 이해할 수 있는거다.

다음에 kafka와 kraft를 이용해서 메시지 큐를 적용시켜보자.

 

 

 

 

 

728x90
반응형

댓글