구체적으로 카프카를 사용하는 이유와 주요 기능, 핵심 용어들을 정리하기에 앞서 먼저 환경을 설치하고 콘솔을 통해 producer와 consumer를 사용해보기 위해 겪은 시행착오 정리하기
터미널에 brew install kafka
brew를 이용해서 카프카를 설치할 수 있다.
brew services start zookeeper
brew services start kafka
위 같은 명령어를 입력해서 zookeeper와 kafka를 실행했다.
하지만 이 방법으로는 이제는 실행되지 않는 것 같았다.
Kafka를 설치하면 테스트를 해볼 수 있게 다양한 스크립트를 제공해준다.
이런 스크립트를 사용해서 여러가지를 할 수 있지만 스크립트를 사용하기 위해서는 kafka가 설치된 경로를 알아야 했다.
일단 경로를 알아보기전에 Kafka에서 Topic이 뭔지 간단하게 알아보자
Topic이 뭔가요?
Topic
은 데이터가 들어갈 수 있는 공간을 의미한다.
쉽게 데이터베이스 같은 것이다. 데이터베이스도 데이터를 보관해주듯이
이 Topic
은 여러개 생성될 수 있고 내부에 여러개의 파티션을 두어
파티션 별로 데이터를 나누어 담을 수 있다.
이러한 토픽은 이름을 가질 수 있다. 이름을 정해주는 방법과 생성한 토픽을
사용하는 것을 이번 글과 다음 글에서 볼 수 있다.
한줄 요약 : Topic
은 데이터가 들어갈 수 있는 이름이 있는 공간이다. (like DB Table)
Kafka가 설치된 경로 알아보기
brew info kafka
를 터미널에 입력하면 아래와 같이 확인할 수 있다.
/opt/homebrew/Cellar/kafka/3.8.0/bin
./kafka-topics --create --zookeeper [localhost:2181](http://localhost:2181) --replication-factor 1 -partitions 1 --topic hoho
위 명령어를 입력했을 때 아래와 같은오류가 발생했다.4년전 유튜브를 보면서 따라 하다가 zookeeper 옵션을 사용할 수 없다는 에러를 확인하고 아하 뭔가 이건 버전 차이 이슈가 분명하다는 생각에 공식문서 GetStart를 참고하러 공식문서로 달려갔다!
https://kafka.apache.org/quickstart <- kafka 튜토리얼
위에 서버 실행하는 명령어부터 뭔가 달랐지만 괜찮아! 나는 brew로 설치했잖아 하면서 가볍게 넘겼다.
뭔가 지금 Topic을 Create하는 명령어를 찾았다.
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092
내가 입력한 명령어와 차이는 zookeeper 옵션이 아닌 bootstrap-server를 사용했다는 점과 2181포트가 아닌 9092 포트가 다르다는 점을 인지했다.
그럼? 바로~ 구글링 했다. 쉽게 3.0 이상 버전부터는 zookeeper를 사용할 수 없고 bootstrap-server 옵션을 사용해줘야 한다고 했다.
또한 9092 포트를 사용해야 한다는 반응이 대다수였고 공식문서 또한 그렇게 알려주었기에 믿고 따라 했다.
서버를 공식문서 버전으로 실행하기
/opt/homebrew/bin/zookeeper-server-start /opt/homebrew/etc/zookeeper/zoo.cfg
**`/opt/homebrew/bin/kafka-server-start /opt/homebrew/etc/kafka/server.properties`**
공식문서에서 정확히 위와 같은 경로를 제공하는 것은 아니지만 zoo.cfg
, sever.properties
를 실행하라는 의미로 이해했고위와 같은 감격스러운 코드를 볼 수 있었다.
내가 이것을 실습한 이유는 EC2 환경에서 사용하는 것이 목적이었기에 바로 진행해서 결과물을 얻을 수 있었다.
2편에서 EC2 환경세팅 삽질을 기록해보자