-
[Spring] Kafka 채팅 기능 구현 - 1Spring 2023. 12. 19. 04:21
🛠️ 기술 스택
1️⃣ WebSocket & STOMP
실시간 양방향 통신을 위해 WebSocket을 선택했다.
WebSocket 상에서 STOMP 프로토콜을 사용해 메시징의 형식과 규약을 관리할 것이다.
2️⃣ Apache Kafka
대규모 메시지 처리를 위해 Kafka를 선택했다.
Kafka는 높은 처리량을 감당할 수 있는 데다가 데이터를 신속하게 처리하는 데 이상적이다.
RabbitMQ를 사용해도 충분히 채팅을 구현할 수 있지만, 이번에는 Kafka를 사용해보기로 결정했다!
3️⃣ MongoDB
채팅 메시지 저장소로 사용할 것이다.
NoSQL 데이터베이스로, 채팅 메시지와 같은 비정형 데이터를 관리하기에 적합하다.
또한 수평적 확장성이 뛰어나 대량의 데이터를 효율적으로 처리할 수 있어서, 채팅 메시지 데이터를 쉽게 관리할 수 있다.
4️⃣ MySQL
채팅방 목록 저장소로 사용할 것이다.
MySQL은 MongoDB와 달리 구조화된 데이터를 효과적으로 관리할 수 있기 때문에, 채팅방 목록은 MySQL에 저장할 것이다.
🔎 Kafka 설치
1️⃣ Kafk 파일 다운로드
2️⃣ 압축 해제 후 폴더로 이동
cd Downloads tar -xzf kafka_2.13-3.6.1 cd kafka_2.13-3.6.1
3️⃣ zookeeper와 kafka 실행
bin/zookeeper-server-start.sh config/zookeeper.properties & bin/kafka-server-start.sh config/server.properties &
4️⃣ topic 생성 테스트
bin/kafka-topics.sh --create --topic ahnsugyeong --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1
ahnsugyeong이라는 이름의 토픽 생성
5️⃣ 생성된 토픽 리스트 확인
설치 완료! ✨
🔎 MongoDB 설치
나는 homebrew가 있어서 아래 명령어로 간단하게 설치했다!
brew tap mongodb/brew brew search mongodb brew install mongodb-community@4.4 brew services start mongodb/brew/mongodb-community@4.4 vi ~/.zshrc export PATH="/opt/homebrew/opt/mongodb-community@4.4/bin:$PATH" 추가 source .zsh_profile brew services stop mongodb/brew/mongodb-community@4.4 터미널 재시작 brew services start mongodb/brew/mongodb-community@4.4 mongo
728x90'Spring' 카테고리의 다른 글
[QueryDSL] QueryDSL에서 조인 시 주의사항 | 객체 그래프 탐색 (2) 2023.10.22 [Spring] @GeneratedValue | 엔티티의 기본 키 생성 전략 (0) 2023.06.18 [Spring] TDD와 단위 테스트 (0) 2023.06.18 [Spring] Spring Security + JWT 로그인 구현하기 - 4 (6) 2023.06.16 [Spring] Spring Security + JWT 로그인 구현하기 - 3 (0) 2023.06.15