[1]카프카란?

나의글·2024년 2월 12일

Kafka

목록 보기
1/1

이 글은 [카프카, 데이터 플랫폼의 최강자 책]을 읽고 정리한 글입니다.

카프카의 탄생배경


위 그림은 카프카를 개발해낸 링크드인이 카프카를 도입하기 전의 데이터 처리 시스템이다.

위와 같은 아키텍처는 다음과 문제점이 있다.

  1. 실시간 트랜잭션 처리와 비동기 처리가 동시에 이루어지지만 통합된 전송 영역이 없으니 복잡도가 증가할 수 밖에 없다. 따라서 문제를 발견하고 조치를 취하려면 여러 데이터 시스템을 확인해야한다.

  2. 데이터 파이프라인 관리의 어려움이 있다. 키-값 저장소, 모니터링 시스템, RDBMS, 하둡 등 제각기 파이프라인 별로 데이터 포맷과 처리하는 방법들이 달라 운영에 어려움이 있다.

따라서 카프카 창시자는 다음과 같은 목표를 가지고 새로운 시스템을 만들기 시작했다.

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

따라서 다음과 같은 카프카 기반의 시스템을 만들었다.

위와 같이 카프카를 적용한 후에는 모든 이벤트/데이터를 중앙에서 관리를 하게되었다. 또한 카프카가 제공하는 표준 포맷으로 연결되어있어 포맷 걱정도 할 필요가 없었다. 이젠 카프카에만 데이터를 전달하면 나머지는 필요한 곳 또는 다른 서비스들이 각자 가져갈 수 있어 자신의 업무에만 집중하면 되었다.

카프카의 동작 방식과 원리

기존 메시징 시스템을 사용하는 pub/sub 모델은 대규모 데이터보다는 간단한 이벤트를 서로 전송하는데 사용되었다. 왜냐하면 메시징 시스템의 교환기의 부하, 각 컨슈머의 큐 관리, 큐에 전달되고 가져가는 메시지의 정합성, 전달 결과를 관리하기 위한 내부 프로세스가 복잡하기 때문이었다. 즉, 메시지의 보관, 교환, 전달 과정에서 신뢰성을 보장하는 것에 중점을 맞췄기 때문에 속도와 용량은 크게 고려하지 않았다.

카프카는 메시지 시스템이 지닌 성능의 단점을 극복하기 위해, 메시징 시스템 내에서의 작업량을 줄이고 이렇게 절약한 작업량을 메시징 전달 성능에 집중시켜서 고성능 메시징 시스템을 만들었다.

카프카의 메시지 전달 순서

  1. 프로듀서는 새로운 메시지를 카프카로 보낸다.
  2. 프로듀서가 보낸 메시지는 카프카에 토픅에 도착해 저장된다.
  3. 컨슈머는 카프카 서버에 접속하여 새로운 메시지를 가져간다.

카프카의 특징

1. 프로듀서와 컨슈머의 분리:
카프카는 메시징 전송 방식 중 메시지를 보내는 역할과 받는 역할이 완벽하게 분리된 pub/sub방식을 적용했다.

위 그림과 같이 서버가 1대가 더 추가된다면 단순하게 서버만 추가되는 것이 아니라 연동해야할 시스템이 많아지기 때문에 추가적인 작업도 매우 늘어난다. 게다가 일대일로 통신하고 있던 모니터링 서버에 문제가 생겨 응답이 늦어지는 경우가 발생하면, 연쇄작용으로 모니터링 서버와 연결된 다른 서비스 서버들에서도 지연 등의 이슈가 발생할 수 있다. 하지만 오른쪽과 같이 카프카를 중앙에 놓으면 서비스 서버들은 카프카로 메시지를 보내는 역할만 하면 되고, 모니터링이나 분석 시스템들도 카프카에 저장되어 있는 메시지만 가져오면 된다.

2. 멀티 프로듀서, 멀티 컨슈머


카프카는 하나의 토픽에 여러 프로듀서 또는 컨슈머들이 접근 가능한 구조로 되어있다. 이렇게 하면 하나의 데이터를 다양한 용도로 사용하는 요구를 쉽게 충족할 수 있다.

3. 디스크에 메시지 저장

트래픽이 일시적으로 폭주해 컨슈머의 처리가 늦어지더라도 카프카의 디스크에 안전하게 보관되어있기 때문에, 컨슈머는 메시지 손실 없이 메시지를 가져갈 수 있다.

4. 확장성

카프카 클러스터는 3대의 브로커로 시작해 수십 대의 브로커로 확장 가능하다.

5. 높은 성능

카프카는 고성능을 위해 내부적으로 분산 처리, 배치 처리 등 다양한 기법을 사용하고 있다.

이상으로 카프카의 전체적인 탄생배경, 구조, 특징 등을 알아보았습니다. 다음 편에서는 카프카의 디자인에 대해 알아보겠습니다.

profile
기록 velog

0개의 댓글