Apache Kafka(아파치 카프카)란?

Yuri Lee·2022년 4월 28일
0

Intro

Apache Kafka 에 대해 알아보려고 한다.

Kafka

카프카는 링크드인에서 처음 출발한 기술로, 링크드인에서 발생하는 이슈를 해결하기 위해 만들어졌다. 카프카가 개발되기 전의 링크드인 아키텍쳐는 다음과 같다.

기존 아키텍쳐의 문제점

  • 실시간 트랜잭션(OLTP) 처리와 비동기 처리가 동시에 이루어지지만 통합된 전송 영역의 부재로 복잡도가 증가
  • 파이프라인 관리가 어려움. 특정 부분을 수정해야할 때, 앞단부터 다 수정해야 할 수 있음

새로운 시스템의 목적

  • Producer와 Consumer의 분리
  • 메시지 시스템과 같이 영구 메세지 데이터를 여러 Consumer에게 허용
  • 높은 처리량을 위한 메세지 최적화
  • 데이터가 증가함에 따라 스케일아웃이 가능한 시스템

기존엔 데이터 스토어 백엔드 관리와 백엔드에 따른 포맷, 별도의 앱 개발을 해야했는데 이젠 카프카에만 데이터를 전달하면 필요한 곳에서 각자 가져갈 수 있도록 변경되었다. 카프카가 제공하는 표준 포맷으로 연결되어 데이터를 주고받는 데 부담이 없어졌다.

카프카의 용도

  • 메세지 처리
  • 사용자의 웹 사이트 활동 추적 파이프라인
  • 애플리케이션의 통계 집계
  • 시간순으로 발생하는 이벤트를 저장해 필요한 곳으로 보냄

카프카의 특징

  • Producer와 Consumer의 분리
    • 프로듀서(Producer)는 메시지를 생산(produce)해서 브로커의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션이나 서버 모두를 프로듀서라고 부른다. 프로듀서는 데이터를 전송할 때 리더 파티션을 가지고 있는 카프카 브로커와 직접 통신한다.
    • 컨슈머(Consumer)는 토픽의 파티션에 저장되어 있는 메시지를 소비(consume)하는 역할을 하는 애플리케이션이나 서버 모두를 컨슈머라 부른다. 컨슈머는 데이터를 요청할 때 리더 파티션을 가지고 있는 카프카 브로커와 통신한다.
  • 멀티 Producer와 멀티 Consumer
  • 디스크에 메세지 저장
    • 일반적인 메시징 시스템들은 Consumer가 메세지를 읽어가면 큐에서 바로 메세지를 삭제
    • 카프카는 보관 주기동안 디스크에 메세지를 저장
  • 확장성
    • 3대의 브로커로 시작해 수십대의 브로커로 확장 가능
      • 브로커 : 카프카 애플리케이션이 설치되어 있는 서버
    • 무중단 확장 가능
  • 높은 성능
    • 내부적으로 분산 처리, 배치 처리 기법 사용

https://www.redhat.com/ko/topics/integration/what-is-apache-kafka
https://zzsza.github.io/data/2018/06/15/apache-kafka-intro/
https://velog.io/@jwpark06/Kafka-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0

profile
Step by step goes a long way ✨

0개의 댓글