본문 바로가기

DevOps/kafka

kafka 개요

1장. 카프카 개요 

카프카란?

Apache Kafka는 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산형 데이터 스트리밍 플랫폼이다. 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계되었다.

 

카프카의 특징

  • 높은 처리량과 낮은 지연시간
  • 높은 확장성
  • 고가용성
  • 내구성
  • 개발 편의성
  • 운영 및 관리 편의성
  • 리플리케이션 기능
    • 내부 카프카 클러스터에서 브로커의 장애가 발생해도 리플리케이션 기능으로 인해 데이터 유실 없이 안정적으로 사용 가능
  • 스키마 레지스트리
    • 규모가 커지면서 펍/섭 모델의 한계 같은 비효율적인 문제 발생으로 프로듀서와 컨슈머 간에 서로 데이터 구조를 설명할 수 있는 스키마를 등록 지정해 사용, 스키마에 정의된 데이터만 주고받게 된다.
    • 스키마를 이용해 데이터 변화등에 유연하게 대응
  • 카프카 커넥트
    • 카프카 커넥트를 이용해 별도의 코드 작성 없이도 다양한 프로토콜과 카프카를 연동
    • 카프카와 카프카 사이의 안정적인 데이터 전송을 위해 활용
  • 카프카 스트림즈
    • 간단하고 가벼운 클라이언트를 이용해 많은 개발자나 기업에서의 실시간 분석 처리 가능
  • KSQL
    • SQL 언어로 처리

 

2장. 카프카 환경 구성 

책에서는 AWS, 온프레미스 환경에서 카프카를 구성하지만 AWS 의 특화된 기능을 사용하는것이 아닌 단순히 물리적 서버대신 인스턴스를 사용하는것이기 때문에 큰 차이는 없다.

  • 책 실습 카프카 구성 환경 특징
    • 서비스의 안정성이 최우선이므로 단독 서버 형태로 운영하는 경우는 거의 없고, 대부분 이중화 또는 클러스터 형태로 구성한다. 책에서는 주키퍼 3대 카프카 3대로 구성하였다.
    • 7대의 서버와 DNS 서버로 구성 , 별도의 DNS 서버를 구성하기 어려운 경우라면 /etc/hosts 파일 수정 후 실습
  • AWS/온프레미스 카프카 클러스터 구성
    • 클러스터 환경을 기본으로 구성 / 앤서블로 환경 구성
    • 주키퍼, 카프카 클러스터가 설치되는 서버 외에, 관리 도구 목적으로 서버를 따로 한대 더 준비
  • 카프카 기본 구성
    • 카프카는 데이터를 받아서 전달하는 데이터 버스의 역할을한다. 카프카에서 데이터를 만들어서 주는 쪽을 프로듀서라고 부르고, 카프카에서 데이터를 빼내서 소비하는 쪽을 컨슈머라고 한다. 그리고 주키퍼는 카프카의 정상 동작을 보장하기 위해 메타데이터를 관리하는 코디네이터이다.
    • 프로듀서와 컨슈머는 클라이언트이며, 카프카는 프로듀서와 컨슈머 중앙에 위치하여, 프로듀서로부터 전달받은 메세지들을 저장라고 컨슈머에 메세지를 전달한다.
    • 카프카의 메타데이터 저장소로 주키퍼를 사용하며 브로커들의 노드 관리 등을 하고있다.
  • 메세지 보내고 받기
    • 프로듀서가 카프카로 메시지를 전송할 때 카프카로 그냥 전송하는것이 아니라, 카프카의 특정 토픽으로 전송하게 된다. 카프카가 설치된 서버에서 카프카에서 제공하는 kafka-topic.sh 명령어를 이용해 토픽을 생성하여 보낸다.

 

 

 

출처 : 책 - 실전 카프카 개발부터 운영까지