개요
이번 포스팅에서는 Confluent Kafka를 설치하는 방법을 설명하고, 간단하게 Confluent에서 제공하는 Control Center를 사용하여 토픽을 생성하고 메시지를 생성(produce)하는 방법을 알아보겠습니다.
포스팅의 내용을 따라 하면 Confluent Kafka를 실습하기 위한 최소한의 준비를 마친 것으로 간주할 수 있으며, 아래 화면을 확인할 수 있을 것입니다.
대상 독자
- Confluent Kafka를 처음 다루는 개발자
- 로컬에서 Confluent Kafka를 자유롭게 사용하고 싶은 개발자
단계
- Confluent Kafka란 무엇인가?
- Confluent Kafka 설치하기
- 토픽 생성하기
- 토픽에 메시지 생성하기
- 마치며
1. Confluent Kafka란 무엇인가?
Confluent Kafka를 다루기 전에 Apache Kafka에 대해 간략히 알아봅시다.
Apache Kafka는 오픈 소스 메시지 브로커 프로젝트입니다. Kafka는 메시지를 주고받기 위한 브로커로, 대용량의 메시지를 안정적으로 처리하기 위해 개발되었습니다.
그러나 메시지 브로커를 "잘" 운영하고 "쉽게" 사용하기 위해 Kafka를 기반으로 다양한 사이드 프로젝트가 진행되었습니다. 이러한 사이드 프로젝트에는 ksqlDB, Connect, Schema Registry, Control Center 등이 포함되어 있습니다. Confluent Kafka는 이러한 추가 컴포넌트를 포함하고 있으며, Apache Kafka는 기본적으로 이러한 컴포넌트를 제공하지 않습니다. 따라서 필요에 따라 추가 설치할 수 있습니다.
2. Confluent Kafka 설치하기
Confluent Kafka는 Confluent Cloud 커뮤니티 버전 및 엔터프라이즈 버전이 제공됩니다. 이 포스팅에서는 테스트 목적으로 로컬에서 사용할 것이므로 커뮤니티 버전을 설치합니다.
설치 과정은 공식 홈페이지에서 자세히 설명되어 있으므로 해당 가이드를 따라 진행하겠습니다.
2.1. Docker-Compose 파일 다운로드
우리는 Docker Compose를 사용하여 Confluent Kafka를 설치할 것입니다. Confluent Kafka의 컴포넌트를 설치하기 위한 docker-compose.yml
파일을 다운로드합니다.
wget https://raw.githubusercontent.com/confluentinc/cp-all-in-one/7.5.0-post/cp-all-in-one-kraft/docker-compose.yml
만약 wget
을 사용할 수 없다면, 여기에서 직접 파일을 다운로드할 수도 있습니다.
2.2. Docker-Compose로 설치
Docker-Compose 파일을 다운로드했다면, Docker가 설치되어 있어야 하고, Docker-Compose가 설치되어 있어야 합니다.
다운로드한 Docker-Compose 파일이 있는 디렉터리에서 다음 명령을 실행합니다.
docker-compose up -d # 다운로드한 docker-compose.yml 파일과 동일한 위치에서 실행
2.3. 설치 확인
위의 단계를 완료하면 Control Center라는 컴포넌트가 포함된 것을 볼 수 있습니다. 기본적으로 Control Center는 9021 포트에서 실행됩니다 (docker-compose.yml 파일을 확인하세요).
Control Center에 액세스하려면 http://localhost:9021/로 이동하여 다음과 같은 화면을 확인해야 합니다.
3. 토픽 생성하기
토픽은 메시지를 저장하기 위한 저장소라고 생각하면 됩니다. 일반적으로 각 주제별로 다른 토픽을 만듭니다.
메시지를 생성하려면 해당 토픽이 필요하므로, 사용자 정보를 저장하는 "users" 토픽을 만들어 봅시다.
Control Center에서 클러스터를 선택한 후 왼쪽 탭에서 "Topics"를 클릭하고 "Add Topic"을 클릭합니다.
Confluent Kafka에서 토픽을 생성하려면 두 가지 필수 정보가 필요합니다.
- 토픽 이름
- 파티션 수
파티션은 토픽을 물리적으로 구성하는 단위로, 병렬 처리와 관련이 있습니다. 파티션 수가 1이면 병렬 처리가 불가능합니다. 파티션 수를 적절하게 선택하는 것이 중요합니다.
토픽 이름, 파티션 수 외에도 토픽에 대한 다양한 구성 옵션을 설정할 수 있습니다. Confluent에서 제공하는 기본값은 오른쪽 상자에서
확인할 수 있습니다.
- replication.factor: 토픽을 n대의 브로커에 복제합니다. 특정 브로커에 문제가 발생해도 복구가 가능합니다.
- retention.ms: 토픽의 메시지 보관 기간
- ...
다양한 구성 옵션은 메시지의 성격과 요구사항에 따라 설정해야 합니다.
토픽을 만들려면 "Create with defaults" 버튼을 클릭합니다.
4. 토픽에 메시지 생성하기
토픽을 생성했으니 이제 메시지를 생성하고 소비하는 것이 중요합니다. 간단한 메시지를 생성해 보겠습니다.
Control Center에서 "Messages" 탭을 클릭하면 토픽에 저장된 메시지를 확인하고 생성할 수 있습니다.
메시지는 Key와 Value의 쌍으로 구성됩니다. Key는 필수가 아니지만 Value는 필수입니다.
Key
Key는 메시지를 구분하기 위해 사용됩니다. 또한, 파티션 단위로 메시지를 분리하여 저장하는 데 사용됩니다. 파티션을 구별하는 Key가 동일한 경우 해당 파티션에 저장됩니다. 이것은 메시지가 파티션 단위로 순서가 보장됨을 의미합니다.
Value
메시지의 주요 데이터는 Value에 저장됩니다. 데이터는 직렬화된 형식으로 저장되며 Key와 마찬가지로 파티션별로 저장됩니다.
"users" 토픽에 아래와 같은 정보(Value)를 입력해 보겠습니다. (이 포스팅에서는 Key를 다루지 않습니다)
{
"userid": 1,
"gender": "MALE",
"username": "수완"
}
"Produce"를 클릭하면 메시지가 생성됨을 확인할 수 있습니다.
5. 마치며
이렇게 Confluent Kafka를 로컬에서 Docker-Compose를 사용하여 설치하고 토픽을 생성하고 메시지를 생성하는 방법을 알아보았습니다.
다음 포스팅에서는 파이썬을 사용하여 토픽에 메시지를 생성(Produce)하고 소비(Consume)하는 방법에 대해 알아보겠습니다.