본문 바로가기
Message Queue

[kafka] 1. kafka의 역사, 장점

by 대우니 2024. 3. 31.
728x90
반응형

목적

아파치 카프카 애플리케이션 프로그래밍, 카프카 핵심 가이드, 카프카 데이터 플랫폼의 최강자,

그리고 카프카 관련 포스팅을 보고 정리했던 노트를 공유하기 위해 기록한다.

카프카를 사용하기 전에 kafka의 역사와 장점 등을 먼저 알면 좋을 것이라 판단하여 가장 먼저 기록한다.

 

역사

링크드 인에서 단방향 통신을 통해 데이터 생성하는 소스 애플리케이션 → 적재되는 타깃 애플리케이션

으로 연동하는 소스코드를 작성했다.

시간이 지날 수록 아키텍쳐가 거대해지면서 문제가 생기기 시작했다.

ex) 타겟 애플리케이션에서 장애가 발생할 경우 해당 데이터를 생성하는 소스 애플리케이션 모두에 장애가 발생한다.

(지속적인 데이터 전송 실패 재시도)

→ 따라서 이러한 파편화된 데이터 흐름을 개선하기 위해 카프카를 개발하였다.

카프카는 각각의 애플리케이션끼리 연결하는 구조가 아닌, 한곳에 모아 처리할 수 있도록 중앙 집중화 되어있다.

프로듀서와 컨슈머가 서로를 모르는 독립적인 구조로 인해

의존성이 없어, 프로듀서와 컨슈머 간에 영향이 없는 구조이다.

 

장점 1- 높은 처리량

두가지 방식이 존재.

  • 배치 전송을 통해 네트워크 비용이 축소됨.
    • 많은 양의 데이터를 송수신할 때 맺어지는 네트워크 비용은 무시할 수 없는 규모
  • 컨슈머의 경우, 파티션과 컨슈머를 늘리면서 토픽이 같은 데이터가 여러 서버에 분배되어 저장되고, 분배된 데이터를 병렬로 전달받으면서 동일 시간 당 처리량을 높일 수 있음.
  • 컨슈머에서는 min.fetch.size로 조절, 프로듀서에서는 batch.size로 조절.
  • 따라서 대용량의 실시간 로그 데이터 처리에 적합함.

장점 2- 확장성

카프카의 스케일 아웃, 스케일 인 과정은 클러스터의 무중단 운영을 지원하므로 매우 안정적인 운영이 가능하다.

  • 카프카는 온라인 상태에서 클러스터를 확장시킬 수 있다고 하는데, 카프카에서는 파티션이 1개가 아닌 이상, 고가용성을 위해 복제 시스템이 있는데, 만일 브로커를 추가시킬 경우 메세지 저장할 수 없는 상태가 되지 않나?
    • 실질적으로 브로커 추가 시키는 거 자체는 속도가 저하되진 않음.
      • 그러나 브로커 추가 후, kafka-reassign-partion.sh명령어 수행할 경우,
        컨슈머 리밸런싱이 일어나므로 컨슘이 중단됨. 따라서 운영환경에서는 비추
    • rabbitMQ는 미러링 구조로 되어있을 때, 브로커를 추가시킬 경우
      동기화 작업이 이루어져서 그 동안은 메세지 큐잉 작업을 할 수 없게 됨. 모두 동작 멈춰짐.

장점 3 - 영속성

  • 카프카는 컨슘하더라도 보존 기간동안 데이터를 파일 시스템에 저장하고 있음.
  • 따라서 디스크 기반의 파일 시스템을 활용하여 장애 발생으로 인해 급작스럽게 종료되더라도 프로세스를 재시작하여 안전하게 데이터를 다시 처리할 수 있다.
  • 또한 카프카는 파일 I/O 성능 향상을 위해 페이지 캐시 영역을 메모리에 따로 생성하여 사용한다.
  • 한번 읽은 파일 내용은 메모리에 저장시켰다가 다시 사용하는 방식이므로, 처리량이 높다.

장점 4- 고가용성

클러스터로 이루어진 카프카는 데이터의 복제를 통해 고가용성의 특징을 가지게 되었다.

여러 브로커 중 1대의 브로커에만 저장하는 게 아닌 다른 브로커에도 저장한다.

한 브로커에 장애가 발생하더라도 복제된 데이터가 나머지 브로커에 저장되어있어 저장된 데이터를 기준으로 지속적으로 데이터 처리가 가능하다.

또한 서버를 직접 운영하는 on-premise 환경의 서버 랙, 퍼블릭 클라우드의 리전 단위 장애에도 데이터를 안전하게 복제할 수 있는 브로커 옵션들이 준비되어 있다.

반응형

'Message Queue' 카테고리의 다른 글

[Kafka] 2. 토픽과 파티션  (0) 2024.03.31
[kafka] kafka config 설정  (0) 2024.03.31
[RabbitMQ] RabbitMQ ACK  (0) 2022.05.17