티스토리 뷰
카프카의 탄생배경
-
기존 end-to-end 연결 방식의 아키텍처의 문제점
- 통합, 중앙화된 전송 영역이 없어 end-to-end 연결이 갈수록 복잡해지므로 하나의 프로세스에 여러 데이터 시스템을 확인 해야 한다.
- 데이터 파이프라인 관리의 어려움, end-to-end를 연결하는 연결선 마저도 end-to-end 마다 제각기 다른 방식으로 구현될 수 있어 복잡도가 증가, 추후에 통합데이터 분석을위해 파이프라인들이 연결되어야 할 때 문제 발생.
- 이러한 배경에서 카프카는 다음과 같은 목표를 달성하기 위해 탄생하였다.
- 프로듀서와 컨슈머의 분리
- 메시징 시스템과 같이 영구 메시지 데이터를 여러 컨슈머에게 허용
- 높은 처리량을 위한 메시지 최적화
- 데이터가 증가함에 따라 스케일 아웃이 가능하도록 한다.
카프카의 동작 방식과 원리
- 기존 메시징 시스템은 메시징 시스템 내부의 교환기의 부하, 컨슈머들의 큐관리를 직접하는 문제, 메시지의 정합성, 전달결과 관리등을 위하여 프로세스가 복잡하고 다양했기 때문에 많은 양의 데이터를 관리할 수 없었다.
- 카프카는 이러한 성능의 단점을 극복하기 위하여 메시지 교환 전달의 신뢰성 관리를 프로듀서, 컨슈머 쪽으로 넘기고, 부하가 많이 걸리는 교환기 기능 역시 컨슈머가 만들 수 있도록 하여, 메시지 전달 기능에 집중하였다.
- 카프카의 메시지 전달 순서
- 프로듀서가 메시지 생성 후 카프카에 전달
- 카프카의 컨슈머 큐(토픽)에 저장 된다.
- 컨슈머가 카프카 서버에 접속하여 메시지를 가져간다.
카프카의 특징
- 프로듀서와 컨슈머의 분리
- pub / sub 모델로 메시지를 보내는 역할과 받는 역할을 완벽하게 분리함.
- 멀티 프로듀서, 멀티 컨슈머
- 하나의 토픽을 여러 컨슈머가, 프로듀서가 생산 및 관리할 수 있음.
- 디스크에 메시지 저장
- 메시지를 해당 메시지의 보관 주기 동안 디스크에 저장.
- 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 |