2022년 8월 15일 월요일

아파치 카프카에 대한 간단한 정리

아파치 카프카에 대해 간단하게 정리해보겠습니다.


카프카란?

실시간으로 대용량,대규모 데이터를 처리할수 있는 고성능 TCP네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 분산*데이터스트림 플랫폼(분산메시징플랫폼)이라고 하며 EAI같이 예를들어 A와 B아니면 C로 필요한곳에 데이터를 동시에 전송가능하기 위해 링크드인(LinkedIn)에서 2011년초 오픈소스로 개발한 내부시스템였지만 현재는 많은 곳에 사용되는 메시징시스템의 대안이 될수 있는 데이터 스트리밍 솔루션인것 같습니다. 뭔가 어려운데요?
어떤글에는 메일로 비유하여 쉽게 카프카 개념을 설명한 글이 있는데요.
"메일을 보내는 사람은 받는 사람의 주소를 알고 메일을 보내면 받은 사람은 언제든지 메일을 볼수 있다"

이 점에서 메일과 카프카는 비슷하다고 합니다. 이점을 보면 EAI가 아닌 팁코 랑데뷰가 떠오르는데 카프카는 발신자(Publish)와 수신자(Subscribe)를 연결해준다고 하고 포인트 투 포인트(Point to Poing)방식이 아닌 Pub/Sub방식이라고 하는데요. 데이터를 카푸카에 보내기만 하면 받게 되는 여러곳에서는 필요할때 데이터를 가져가면 되는 메시지흐름인것 같습니다.

*데이터스트리밍은 실시간으로 동시다발로 발생되는 데이터의 흐름을 얘기하는것 같습니다.


카프카관련 용어

  • 브로커(Broker),토픽(Topic): 프로듀서와 컨슈머 사이의 메시지 구분을 위한 토픽(큐)
  • 프로듀서(Producer),퍼플리셔(Publish): 큐에 데이터를 넣는 발신자
  • 컨슈머(Consumer),서브스크라이브(Subscribe): 큐에 데이터를 가져가는 수신자
  • 핵심API: Admin,Producer,Consumer,Kafka Streams,Kafka Connect

카프카의 특징

  • 한쪽 시스템에 문제가 생격도 다른 시스템 영향도 낮음
  • 서버추가에 대한 부담 줄어듬(확장성)
  • 데이터 연동의 단순화(포인트 투 포인트 통합 필요성 최소화)
  • 대용량 실시간 처리에 특화(빅데이터에 매우적합)
  • 받는쪽에서 메세지를 읽어도 설정된 보관주기동안 보관(영속성)
  • 메모리가 아닌 파일 시스템에 저장되는 메세지
  • 브로커로 부터 메시지를 가져가는 pull방식
  • 낮은 처리지연과 높은처리량
  • 온프레미스,클라우드 환경 등에 배포가능
  • 카프카 클러스터는 확장성과 내결함성이 뛰어남
  • 여러 개발언어와 카프카 라이브러리 등 Rest API에서도 사용가능

카푸카 활용사례

사물인터넷(IoT),소셜미디어,전자사거래 등에 활용한 사례가 있으며 텐센트(Tencent)라는 곳에서는 카프카를 사용한 비동기 통신으르 위한 데이터 파이프라인을 구축하여 하루 10조개 이상의 메시지를 처리 그외 마이크로소프트 애저나 Acertus에서도 사용되고 있는것 같습니다.


더 자세한 내용은
아파치 카프카(Apache Kafka)란?

댓글 없음:

댓글 쓰기