본문 바로가기

Kafka

Kafka-개념 알아보기

카프카의 개념을 보기 전에 메시지 큐의 개념을 짚고가야 합니다.

Message Queue (MQ)

- API간에 데이터 송수신이 필요할 때 사용

- 다양한 어플리케이션에서 비동기 통신

- 이메일 발송 및 문서 업로드 가능

- 많은 양의 프로세스들을 처리

 

즉, 모듈 간에 데이터 통신을 하기 위해서 사용합니다.

 

A 모듈에서 "car" 라는 데이터를 B 로 전달 할 때,

A 모듈은 "car" 라는 데이터를 큐에 넣고

B 모듈은 큐에서 "car" 라는 데이터를 가져간다.

메시지 큐의 장점

  • 비동기(Asynchronous) : Queue에 넣기 때문에 나중에 처리 할 수 있습니다.
  • 비동조(Decoupling) : 애플리케이션과 분리 할 수 있습니다.
  • 탄력성(Resilience) : 일부가 실패 시 전체에 영향을 받지 않습니다.
  • 과잉(Redundancy) : 실패 할 경우 재실행 가능합니다.
  • 보증(Guarantees) : 작업이 처리된 걸 확인 할 수 있습니다.
  • 확장성(Scalable) : 다수의 프로세스들이 큐에 메시지를 보낼 수 있습니다.

 

이러한 메시지큐 역할을 하는 기술 중 하나가 카프카 입니다.

그럼 카프카의 아키텍처에 대해서 알아보겠습니다.

 

카프카 아키텍처 출처 - https://victorydntmd.tistory.com/344

 

천천히 하나씩 알아보겠습니다.

 

1. Zookeeper

주키퍼는 클러스터의 상태를 관리해줍니다.

카프카는 여러 서버를 묶는 클러스터 환경을 기본으로 설계 되어있는데 이 클러스터 환경을 관리합니다.

(리더 채택, 동기화, 설정 관리 등)

카프카는 이 주키퍼 없이 구동할 수 없어서 카프카를 띄울 때 주키퍼를 먼저 띄워줘야합니다.

 

2. Broker

카프카 서버입니다.

여러 대의 브로커(서버)가 카프카 클러스터 내에서 동작합니다.

 

3. Topic

하나의 메시지 큐 단위입니다.

메시지의 주제에 따라서 토픽을 생성하고 메시지를 저장하게 됩니다.

목적에 맞게 토픽을 생성하고 발행/구독하여 메시지 큐를 사용합니다.

 

4. Partition

하나의 토픽을 분산 처리를 위해 여러 파티션으로 나눌 수 있습니다.

파티션에 대해서는 이해해야 할 것이 많아서 따로 자세히 포스팅하겠습니다.

먼저 개념만 알고 넘어가겠습니다.

파티션은 하나의 토픽을 나누는 단위!

 

5. Log

Partition의 한 칸을 Log라 합니다.

Log는 key, value, timestamp로 구성됩니다.

하나의 메시지 단위!

 

6. Offset

컨슈머가 메시지를 어디서 부터 읽어올 지 가르키는 값입니다.

0부터 시작하여 1씩 증가되고 파티션마다 별도로 관리됩니다.

컨슈머는 오프셋이 가르키는 위치의 데이터를 읽어온다!

 

 

카프카를 이루는 요소들의 이름과 역할들을 알아보았습니다.

이제 카프카가 동작하는 기본 원리에 대해서 알아보겠습니다.

 

카프카 동작 출처 - https://docs.datastax.com/en/kafka/doc/kafka/kafkaHowMessages.html

동작 원리는 간단합니다.

메시지는 프로듀서 - 컨슈머로 이동하는데 프로듀서에서 브로커(카프카 서버) 내에 있는 토픽에 메시지를 넣고

컨슈머는 자신이 구독하고 있는 토픽에서 메시지를 가져오는 구조입니다.

 

카프카 특징

  • 대용량의 실시간 로그 처리에 특화되어 설계된 메시징 시스템으로기존 범용 메시징 시스템대비 TPS가 매우 우수합니다.
  • 메시지를 기본적으로 메모리에 저장하는 기존 메시징 시스템과는 달리 메시지를 파일 시스템에 저장합니다 → 카프카 재시작으로 인한 메세지 유실 우려 감소
  • 기존의 메시징 시스템(RabbitMQ, ActiveMQ 등)에서는 broker가 consumer에게 메시지를 push해 주는 방식인데 반해, Kafka는 consumer가 broker로부터 직접 메시지를 가지고 가는 pull 방식으로 동작하기 때문에 consumer는 자신의 처리 능력만큼의 메시지만 broker로부터 가져오기 때문에 최적의 성능을 낼 수 있습니다.

 

이번 포스트에서는 카프카의 아키텍처, 기본 동작 방식, 특징에 대해서 알아 보았습니다.

이 후에 카프카에 대해서 제대로 파악할 수 있도록 하나씩 포스팅해보겠습니다.