AWS Kafka MSK

1 분 소요

AWS Kafka MSK

Kafka

Apache kafka는 분산환경용 pub / sub model의 메시지 큐 플랫폼이고, 오픈소스 솔루션이며 대용량의 실시간 로그처리에 성능적으로 특화되어 있다.

Untitled

Topic과 Partition

Kafka cluster에 데이터를 큐잉할 때, topic, partition, offset 등의 개념이 도입된다.

Kafka cluster는 record라는 stream data를 topic이라고 불리는 카테고리에 따라 저장한다.

  • Topic : stream of records
  • Partition : topic을 여러 개로 나눈 것. partition의 한 칸은 log라고 부른다.
  • Offset : message의 상대적인 위치를 나타낸 것.

1 topic : N records 1topic : N partitions 1 records : N key, value and a timestamp

Partition의 필요성

메시지가 kafka의 해당 topic에 쓰여질 때, 많은 메시지가 동시에 kafka에 쓰여지면 하나의 topic에 순차적으로 append 되며 처리하는데 시간을 많이 소요할 수 있다. partition을 통해 분산저장을 시킨다.

내가 이해한 바로는, DB 샤딩 저장? 과 비슷한 개념이라고 생각하면 될 것 같다.

Producer & Consumer

Producer : kafka에 데이터를 입력하는 클라이언트. records 의 stream을 하나 이상의 kafka topic에 publish 한다.

Consumer : 데이터를 가져올 topic을 지정한 후, 해당 topic에서 데이터를 가져온다. topic으로부터의 subscription을 진행한다.

Producer, Consumer는 인증된 사용자여야 한다.

중간에 브로커 클러스터가 임의 개수의 노드로 구성되는 클러스터로, Topic이라고 불리는 데이터 관리 유닛을 몇개 호스팅 한다.

하나의 topic에 여러 개의 consumer가 여러 목적으로 여러 번 가져올 수 있음

Untitled 1

Broker & Zookeper

Broker

  • kafka의 서버
  • Multi-broker

    broker의 아이디를 관리하면서 동일한 노드 내에서 여러 개의 broker 서버를 띄울 수도 있다.

Zookeper

  • 분산 메시지 큐의 정보를 관리해주는 역할 / 분산 코디네이터 시스템
  • kafka를 띄우려면 zookeper를 반드시 실행해야 한다.

Kafka 사용 예시

  • 단순하게 분산 큐잉 시스템으로 사용하는 방법

    어떤 서비스의 web application 서버에서 처리하는데 자원을 많이 사용해야하는 업무가 발생했을 때, 다른 프로세스에서 작동 중인 백그라운드의 task 프로세서에 요청하기 위한 큐로 사용

  • 데이터 허브로 사용하는 방법

Amazon MSK

Amazon에서 kafka를 서비스로 제공하는 서비스를 Amazon MSK라고 한다.

Broker nodes는 EC2 instances로 생성되고, Zookeper nodes도 EC2 instances로 생성된다.

  • Broker node : 각 가용영역에 생성할 브로커 노드 수를 지정한다.
  • Zookeper node : MSK 는 zookeper node를 자동 생성한다.

Amazon MSK 설정 요소

Amazon MSK를 이용해 큐잉 시스템을 구성 할 때 필요한 필수 설정 요소가 몇 가지 있다.

  • vpc 지정 (kafka가 분산될 vpc)
  • zone

    몇개의 zone을 사용할껀지 (몇개의 zone에 brokers를 배포할 것인지 지정)

  • brokers 설정
    • broker type(ec2의 타입 지정)
    • number of brokers per zone (zone 별로 broker를 몇 개 배포할껀지)
  • storage option : Amazon MSK는 용량이 부족하면 자동으로 storage를 확장시킨다.