실전 카프카 개발부터 운영까지 - 1.카프카 개요 (2)

카프카 개요
카프카의 주요 특징
높은 처리량과 낮은 지연시간

- 카프카는 매우 높은 처리량과 낮은 지연시간을 자랑한다
- 위 표에서 볼 수있듯이 카프카가 처리량이 제일 높고, Rabbit MQ가 응답속도가 제일 빠르다
- 처리량과 응답속도를 같이 비교하였을 때 카프카가 독보적으로 성능이 좋다
높은 확장성
- 카프카는 확장 가능하도록 초기부터 설계되었다
- 손쉽게 확장 가능하도록 설계되었다
고가용성
- 클러스터 내 리플리케이션 기능 추가를 통해 카프카 클러스터의 고가용성 확보
- 고가용성을 갖추면서도 지연 없는 빠른 메세지 처리 기능 유지
내구성
- 프로듀서는 카프카로 메세지 전송시 acks 라는 옵션을 조정하여 메세지의 내구성을 강화할 수 있다.
- 강력한 메세지의 내구성을 원한다면 옵션을 acks=all로 사용 할 수 있다.
- 프로듀서에 의해 카프카로 전송된 메세지는 모두 안전한 저장소인 카프카의 로컬 디스크에 저장된다.
- 전통적인 메시징 시스템은 메세지를 가져감과 동시에 저장소에서 메세지가 삭제된다.
- 카프카는 컨슈머가 메세지를 가져가더라도, 메세지는 삭제되지 않고 지정된 설정 시간 또는 로그의 크기만큼 로컬 디스크에 보관된다.
- 코드의 버그나 장애가 발생하더라도 과거의 메세지들을 불러와 재처리 할 수 있다.
- 메세지들은 브로커 한 대에만 저장되는 것이 아니라 두 대 또는 세 대의 브로커에 저장된다.
- 브로커 중 한 대가 종료되더라도 다른 브로커의 로컬디스크에 저장된 내용을 바탕으로 복구할 수 있다.
개발 편의성
- 메세지를 전송하는 역할을 하는 프로듀서
- 메세지를 가져오는 역할을 하는 컨슈머
- 프로듀서와 컨슈머가 완벽하게 분리되어 동작하여 영향을 미치지 않는다.
- 카프카 커넥트
프로듀서와 컨슈머를 따로 개발하지 않고도 카프카와 연동해
손쉽게 소스와 싱크로 데이터를 보내고 받을 수 있는 별도의 애플리케이션
- 엘라스틱서치, HDFS 등 다양한 소스와 싱크를 제공하여 개발 편의성을 높일 수 있다.
- 클러스터를 구성해 고가용성을 확보하는 방식으로 카프카 커넥트를 운영한다면
효율적인 장애 대응과 서비스 품질 개선이 가능하다
- 스키마 레지스트리
카프카를 사용하는 많은 개발자가 데이터 활용보다 데이터 파싱하는데 많은 시간을 소모하는 비효율적인 현실을 보완하고자
스키마를 정의해서 사용할 수 있도록 개발된 어플리케이션
운영 및 관리 편의성
- 카프카는 중앙 메인 데이터 파이프라인 역할을 담당