1. 서론
이번에 회사 동기들과 지연이체 서비스를 구현해보려고 한다.
시작은 아래 카카오 테크 발표 영상이었고, 우리의 목적은 카프카를 공부하고 적용해보자는 것에 있다.
https://www.youtube.com/watch?v=LECTNX8WDHo&ab_channel=kakaotech
가장 먼저 서로 다른 로컬 환경이지만 동일하게 테스트하기 위해서 Docker Compose를 사용하기로 했다. 컨테이너로는 zookeeper, kafka, redis, postgreSQL을 띄우고, API 서버는 로컬로 실행하여 테스트해보려고 한다.
우선 카프카부터 시작해보자!
2. 본론
가장 먼저 docker-compose가 설치되어있는지 확인한다. 만약 없다면 새로 설치한다.
# 버전 확인
docker-compose --version
# 없다면 설치
sudo apt update
sudo apt install docker-compose
아래와 같이 docker-compose.yml 파일을 작성 후 실행한다.
services:
zookeeper:
image: bitnami/zookeeper:latest
container_name: zookeeper
environment:
- ALLOW_ANONYMOUS_LOGIN=yes
ports:
- "2181:2181"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
kafka:
image: bitnami/kafka:latest
container_name: kafka
environment:
- KAFKA_BROKER_ID=1
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
ports:
- "9092:9092"
depends_on:
- zookeeper
# docker-compose 실행
sudo docker-compose up -d
# 컨테이너 확인
sudo docker ps
위와 같이 뜨면 성공이다.
이제 카프카 전송되는 걸 테스트해보자. 기존 터미널에 아래 명령어를 입력한다. 메시지를 제공하는 역할이다.
# 카프카 컨테이너 접속
docker exec -it kafka bash
# test-topic 생성
kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092
# producer 실행
kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092
한편, 메시지를 소비하는 새로운 터미널을 열고 아래 명령어를 입력한다.
# consumer 실행
docker exec -it kafka kafka-console-consumer.sh --topic test-topic --bootstrap-server localhost:9092 --from-beginning
그리고 producer에 메시지를 입력하면 consumer에서 확인할 수 있다. (위가 producer, 아래가 consumer)
3. 결론
오늘은 간단하게 예제 코드로 docker-compose 위에서 카프카를 작동시켜보았다. 다음에는 카프카에 대해 좀 더 자세히 알아보고 코드를 수정해보자.
'개인 프로젝트' 카테고리의 다른 글
Kafka로 메시지 전송하여 지연이체 처리하기 (0) | 2024.12.28 |
---|---|
안드로이드 TTS 구현하기 (0) | 2024.09.21 |
SpeechRecognizer 음성인식 API 사용하기 - 2탄 (0) | 2024.09.20 |
SpeechRecognizer 음성인식 API 사용하기 (4) | 2024.09.17 |