본문 바로가기

Develop/DevOps

아파치 카프카(APACHE Kafka) 그게 도대체 뭔데 😤 카프카 기본 개념에 대해 알아보자

아파치 카프카 로고

 

최근 몇년 전부터 개발자 채용 공고에 빠짐 없이 등장하는 기술 키워드가 있다.

바로 *아파치 카프카(Apache Kafka)이다.

 

*정의

아파치 카프카(Apache Kafka)는 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트이다. 이 프로젝트는 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표이다. 요컨대 분산 트랜잭션 로그로 구성된, 상당히 확장 가능한 pub/sub 메시지 큐로 정의할 수 있으며, 스트리밍 데이터를 처리하기 위한 기업 인프라를 위한 고부가 가치 기능이다.


디자인은 트랜잭션 로그에 많은 영향을 받았다.

 

역사

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

 

이렇게만 봤을 때는... 🤔

링크드인은 이 카프카를 통해서 어떤 문제를 해결하려고 했을까? 🤨

 


링크드인에서 Kafka를 도입하기 전에는 아래의 아키텍처를 가지고 서비스되었다.

 

as-is

 

Before Kafka

  • 앤드투엔드(end-to-end) 연결 방식의 아키텍쳐
  • 데이터 연동의 복잡성 증가(하드웨어, 운영체제 , 장애 등등..)
  • 각기 다른 데이터 파이프라인 연결 구조
  • 확장에 엄청난 개발 공수필요 

 

으.. 보기만 해도 복잡하다. 😵

 

to-be

After Kafka

 

 

  • 프로듀서/컨슈머 분리
  • 메세지 데이터를 여러 컨슈머에게 허용
  • 높은 처리량을 위한 메세지 최적화
  • 스케일 아웃 가능
  • 관련 생태계 제공

모르는 사람이 봐도 눈에 띄게 깔끔해진 것을 확인 할 수 있다. 😲

 

키워드  정리

Producer(프로듀서) : 메시지 생산자
Broker(브로커) : 메시지 수집/전달 역할
Consumer(컨슈머) : 메시지 소비자

Topic(토픽) : 파일시스템에서 폴더 or RDBMS에 table 개념 .. Data가 저장되는 곳?

Consumer-Group(컨슈머 그룹) : 메세지 소비자 묶음 단위(n consumers)

Zookeeper(주키퍼) : Kafka를 운용하기 위한 Coordination service(zookeeper 소개)

Partition(파트리언) : topic이 복사(replicated)되어 나뉘어지는 단위

 

 

이제 다음 글에서는

사이드프로젝트를 진행하면서 블로깅 할 예정 😎


참고 레퍼런스

 

데브원영님 유튜브 추천

 Apache kafka 기본개념 및 생태계

 

카프카 개요 및 설명

https://www.youtube.com/watch?v=waw0XXNX-uQ&t=44s

 

카프카 응용 공부 github

https://github.com/DongJu-Na/kafkaStudy

 

GitHub - DongJu-Na/kafkaStudy: 카프카 겉핧기

카프카 겉핧기. Contribute to DongJu-Na/kafkaStudy development by creating an account on GitHub.

github.com

 

카프카 Docs

https://kafka.apache.org/documentation/

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

 

반응형