[아파치 카프카 어플리케이션 프로그래밍] 1. 카프카의 탄생

반응형
728x90
반응형

"책으로 공부하는 Apache Kafka"

 

아파치 카프카 (Apache Kafka)

아파치 카프카란, 대용량 또는 대규모 메시지 데이터를 빠르게 처리할 수 있도록 개발된 분산 메시징 플랫폼이다.

카프카는 각각의 애플리케이션끼리 연결하여 데이터를 처리하는 것이 아니라 한곳에 모아 처리할 수 있도록 중앙집중화했다.

카프카를 통해 데이터 스트림을 한 곳에서 실시간으로 관리할 수 있다.

 

https://medium.com/mildang/apache-kafka-%EB%8F%84%EC%9E%85%EA%B8%B0-3451787d97a8

 

카프카 내부에 데이터가 저장되는 파티션의 동작은 FIFO(First In First Out) 방식의 큐 자료구조와 유사하다.

 

https://velog.io/@youngerjesus/Apache-Kafka-Design

 

프로듀서 (Producer) : 큐에 데이터를 보낸다.

컨슈머 (Consumer) : 큐에서 데이터를 가져간다.

 

 

 

카프카 특징

  • 카프카를 통해 전달할 수 있는 데이터 포맷은 제한이 없다.
    • 직렬화, 역직렬화를 통해 ByteArray로 통신하기 때문에 자바에서 선언 가능한 모든 객체를 지원한다.
  • 카프카는 최소 3대 이상의 서버(브로커)에서 분산 운영하여 프로듀서를 통해 전송받은 데이터를 파일 시스템에 안전하게 기록한다.
  • 카프카 클러스터 중 일부 서버에 장애가 발생하더라도 데이터를 지속적으로 복제하기 때문에 안전하게 운영이 가능하다.
  • 데이터를 묶음 단위로 처리하는 배치 전송을 통해 낮은 지연과 높은 데이터 처리량을 가진다.

 

높은 처리량

카프카는 프로듀서가 브로커로 데이터를 보낼때와 컨슈머가 브로커로부터 데이터를 받을때 모두 묶어서 전송한다.

많은 양의 데이터를 묶음 단위로 처리하는 배치로 빠르게 처리가 가능하여, 대용량의 실시간 로그데이터 처리에도 적합하다.

파티션 단위를 통해 동일 목적의 데이터를 여러 파티션에 분배하고 데이터를 병렬 처리할 수 있다.

 

확장성

데이터가 적을때는 카프카 클러스터의 브로커를 최소한의 개수로 운영하다가 데이터가 많아지면 클러스터의 브로커 개수를 자연스럽게 늘려 스케일 아웃(scale-out)할 수 있다. 

반대로 데이터 개수가 적어지고 추가 서버들이 더는 필요 없어지면 브로커 개수를 줄여 스케일 인(scale-in)할 수 있다. 

 

영속성

영속성이란, 데이터를 생성한 프로그램이 종료되더라도 사라지지 않은 데이터의 특성을 뜻한다.

카프카는 다른 메시징 플랫폼과 다르게 전송받은 데이터를 메모리에 저장하지 않고 파일 시스템에 저장한다. 

파일 시스템에 데이터를 적재하고 사용함으로써 운영체제 파일 시스템을 최대한 활용하는 방법을 적용한다.

운영체제에서 파일 I/O 성능 향상을 위해 페이지 캐시(page cache) 영역을 메모리에 따로 생성하여 사용한다.

페이지 캐시 메모리 영역을 사용하여 한번 읽은 파일 내용은 메모리에 저장 시켰다가 다시 사용하는 방식이기 때문에, 카프카가 파일 시스템에 저장하고 데이터를 저장, 전송하더라도 처리량이 높은 것이다.

브로커 어플리케이션이 장애 발생으로 인해 갑자기 종료되더라도 프로세스를 재시작하여 안전하게 데이터를 다시 처리할 수 있다.

 

고가용성

3개 이상의 서버들로 운영되는 카프카 클러스터는 일부 서버에 장애가 발생하더라도 무중단으로 안전하고 지속적으로 데이터를 처리할 수 있다.

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

프로듀서를 전송받은 데이터를 여러 브로커에 저장한다. 1대의 브로커에 장애가 발생하더라도 복제된 데이터가 나머지 브로커에 저장되어있으므로 저장된 데이터를 기준으로 지속적으로 데이터 처리가 가능하다. 

 

 

위 내용들과 관련된 포스팅을 참고하자.

https://devfunny.tistory.com/378?category=829528 

 

카프카의 기본개념

카프카의 개념 카프카는 메시징 서버로 동작한다. 메시징 시스템이 무엇인지 먼저 알아보자. 메시징 시스템 메시징 시스템이란, 프로듀서(producer)와 컨슈머(consumer)가 서로 메시지를 전달할 때

devfunny.tistory.com

https://devfunny.tistory.com/379?category=829528 

 

카프카의 기능

카프카의 기능 카프카의 높은 처리량, 빠른 메시지 전송, 운영 효율화 등을 위해 구현되어있는 기능을 알아보자. 1) 분산 시스템 분산 시스템이란, 같은 역할을 하는 여러 대의 서버로 이루어진

devfunny.tistory.com

 

 

반응형

Designed by JB FACTORY