본문 바로가기
Development/Data Engineering

[Apache Kafka] 아파치 카프카란

by _KHK 2022. 1. 5.

본 내용은 아래 글들에서 읽고 정리한 것입니다.



아파치 카프카란?

 

아파치 카프카는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼이다.

카프카는 초당 수백만 개의 데이터 포인트를 처리할 수 있어서 여러 소스에서 데이터 스트림을 처리하고, 여러 사용자에게 전달하도록 설계되었다. 여기서 여러 사용자는 데이터 처리가 필요한 어느 곳이든 해당 될 수 있다.

아파치 카프카는 시스템 또는 애플리케이션 간 데이터를 공유하는 스트리밍 데이터 파이프라인에 구현되어있고, 데이터를 사용하는 시스템 및 애플리케이션에도 구현되어 있다. 

 

카프카에서는 대용량 데이터를 처리하지 않는 기업에도 합리적인 선택이 될 수 있다고 말한다. 왜냐하면 카프카의 확장성 때문인데 사물인터넷이나 소셜미디어와 같은 여러 데이터 처리 활용 사례의 경우 데이터가 기하급수적으로 늘어나는 경우 애플리케이션에게 빠르게 부담을 가중시킬 수 있기 때문이다. 카프카는 급증할 수 있는 대규모 데이터를 처리할 수 있도록 확장성을 염두해 두고 설계되었다.

 

 


아파치 카프카의 사용 시점

 

IT 운영

  • IT 운영은 데이터에 빠르게 액세스 해야한다. 아파치 카프카는 모니터링, 알림 및 보고와 같은 다양한 소스의 데이터 수집, 로그관리, 웹 사이트활동 트래킹에 의존하는 IT운영팀의 직무에 매우 적합하다.
  • 회사의 다른 부서에서 생성된 데이터를 연결, 저장 및 사용 가능하게 할 수 있다.
  • 데이터 플랫폼, 이벤트 중심 아키텍쳐 및 마이크로서비스의 기반 역할을 담당 할 수있다.

IoT(사물 인터넷)

  • IoT는 다양한 센서가 수 많은 유용한 데이터를 생성한다. 카프카는 IoT에서 발생하는 대규모 데이터의 확장을 염두해 두고 설계되었다.
  • IoT 장치 또는 기타 장비의 센서 데이터를 지속적으로 캡쳐하고 분석할 수 있다.
  • 물류 및 자동차 산업과 같이 차량 선적을 실시간으로 추적하고 모니터링이 가능하다.

전자상거래

  • 페이지 클릭, 좋아요, 검색, 주문, 장바구니 및 재고와 같은 수많은 데이터를 처리 할 수 있다.
  • 증권 거래소, 은행 및 금융 거래를 실시간으로 처리 할 수 있다.
  • 소매, 호텔 및 여행 산업등 고객 상호작용을 수집, 즉시 대응이 가능하다.

 


아파치 카프카를 사용하는 이유

일반적으로 파티션(메세지 저장소)의 고가용성을 위해 일반적으로 3개 이상의 broker를 운영한다.

기존의 end to end (Point to Point) 방식의 연결구조의 아키텍처는 각기 다른 데이터 파이프라인의 연결 구조로 인해 아래 그림과 같이 데이터 연동, 관리의 복잡성이 증가하게 된다.

 

이미지 출처 : https://kouzie.github.io/kafka/%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4/#%EC%9A%A9%EC%96%B4

 

아래 그림과 같이 아파치 카프카를 사용하는 이유는 복잡한 데이터 파이프라인 구조를 kafka를 통해 간편화 할 수 있기 때문이다.

이미지 출처 : https://kouzie.github.io/kafka/%EC%95%84%ED%8C%8C%EC%B9%98-%EC%B9%B4%ED%94%84%EC%B9%B4/#%EC%9A%A9%EC%96%B4

 

 


아파치 카프카의 장점

 

  • producer와 consumer의 역할이 완벽하게 분리되어 어느 한쪽 시스템에서 문제가 발생하더라도 다른 시스템에 영향을 미칠 가능성이 낮아진다. 
  • 하나의 카프카 클러스터에 3대의 브로커로 시작해서 수십대의 브로커로 무중단 확장이 가능하다.
  • 고가용성 - 서버 이슈에도 데이터를 손실없이 복구 가능하고, 낮은 지연과 높은 처리량으로 대용량 데이터 처리 가능

 

 

댓글