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