티스토리 뷰

카프카의 탄생배경

  • 기존 end-to-end 연결 방식의 아키텍처의 문제점

    • 통합, 중앙화된 전송 영역이 없어 end-to-end 연결이 갈수록 복잡해지므로 하나의 프로세스에 여러 데이터 시스템을 확인 해야 한다.
    • 데이터 파이프라인 관리의 어려움, end-to-end를 연결하는 연결선 마저도 end-to-end 마다 제각기 다른 방식으로 구현될 수 있어 복잡도가 증가, 추후에 통합데이터 분석을위해 파이프라인들이 연결되어야 할 때 문제 발생.
    • 이러한 배경에서 카프카는 다음과 같은 목표를 달성하기 위해 탄생하였다.
      • 프로듀서와 컨슈머의 분리
      • 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
      • 높은 처리량을 위한 메시지 최적화
      • 데이터가 증가함에 따라 스케일 아웃이 가능하도록 한다.

카프카를 잘 설명하는 그림


카프카의 동작 방식과 원리

  • 기존 메시징 시스템은 메시징 시스템 내부의 교환기의 부하, 컨슈머들의 큐관리를 직접하는 문제, 메시지의 정합성, 전달결과 관리등을 위하여 프로세스가 복잡하고 다양했기 때문에 많은 양의 데이터를 관리할 수 없었다.
  • 카프카는 이러한 성능의 단점을 극복하기 위하여 메시지 교환 전달의 신뢰성 관리를 프로듀서, 컨슈머 쪽으로 넘기고, 부하가 많이 걸리는 교환기 기능 역시 컨슈머가 만들 수 있도록 하여, 메시지 전달 기능에 집중하였다.
  • 카프카의 메시지 전달 순서
    1. 프로듀서가 메시지 생성 후 카프카에 전달
    2. 카프카의 컨슈머 큐(토픽)에 저장 된다.
    3. 컨슈머가 카프카 서버에 접속하여 메시지를 가져간다.

카프카의 특징

  • 프로듀서와 컨슈머의 분리
    • pub / sub 모델로 메시지를 보내는 역할과 받는 역할을 완벽하게 분리함.
  • 멀티 프로듀서, 멀티 컨슈머
    • 하나의 토픽을 여러 컨슈머가, 프로듀서가 생산 및 관리할 수 있음.
  • 디스크에 메시지 저장
    • 메시지를 해당 메시지의 보관 주기 동안 디스크에 저장.
    • zero-copy 방식으로 디스크에 저장하지만 빠르게 처리
      • 디스크에 있는 데이터를 어플리케이션 내부에 복사, 혹은 처리하지 않고 그대로 전송하는 기법.(커널모드, 유저모드간의 불필요한 데이터 복사를 하지 않는다.)

(이미지 출처: Efficient data transfer through zero copy)

  • 확장성
    • 간편하고 무중단 스케일아웃(6장에서 자세히 다룸)
  • 높은 성능
    • 높은 성능을 위하여 내부적으로 분산, 배치처리등의 다양한 기법을 사용.

카프카의 확장과 발전

  • 카프카를 통해 ESB(Enterprise Service Bus), 메시지 버스, 이벤트 버스 등과 같이 기업 내 데이터 흐름을 중앙에서 관리하는 많은 사례들이 생겨남
  • 필요한 모든 데이터가 연결되어 서로 가져갈 수 있는 형태로 발전하고 있다.
  • 오늘날의 카프카는 단순한 메시지 큐의 기능을 넘어 많은 기업의 비즈니스 확장 요구에 맞춰 기업 내 중요 시스템 중 하나로 널리 사용되고 있다.

'OpenSource > Kafka' 카테고리의 다른 글

5장 카프카 컨슈머  (0) 2019.12.16
4장 카프카 프로듀서  (0) 2019.12.16
3장 카프카 디자인  (0) 2019.12.09
2장 카프카 설치(zookeeper 중심)  (0) 2019.12.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함