GPT랑 만들었는데... 작동 다 하는데.... 내일부터는 개념 공부해야할 듯....
✨ 요청하는 기능 설명
Kafka와 Redis Pub/Sub을 연동하여 채팅 메시지를 송수신할 수 있는 인프라 구성을 도입했습니다.
각 서비스(Spring, Redis, Kafka, Mongo, MySQL)를 하나의 docker-compose로 구성하였고, Kafka 기반 메시지 브로커와 Redis Pub/Sub 기반 브로드캐스트 구조를 구현했습니다.
🎉 기대 효과
- Kafka를 통한 안정적인 메시지 큐 처리로 확장성과 내결함성 확보
- Redis Pub/Sub을 활용한 WebSocket 브로드캐스트 처리로 실시간 응답 속도 향상
- 모든 컴포넌트를 Docker Compose로 통합하여 개발/운영 환경 일관성 유지 및 배포 용이성 확보
- MongoDB, MySQL을 동시에 활용하는 데이터 저장 구조 도입으로 각 데이터 유형에 최적화된 저장 가능
📝 작업 항목
- docker-compose.yml을 통한 Kafka, Redis, Spring, Mongo, MySQL 통합 환경 구성
- KafkaChatProducer, KafkaChatConsumer 클래스 작성 (채팅 메시지 Kafka 송수신 처리)
- RedisPublisher, RedisSubscriber 클래스 작성 (WebSocket 브로드캐스트 처리)
- RedisConfig 설정 파일 작성하여 RedisMessageListenerContainer 및 RedisTemplate 등록
- application.yml에 각종 설정(host, port, Kafka group-id 등) 명시
- 8082 포트로 서비스되는 WebSocket 기반 채팅 서버 구성
📎기타 참고사항
- Redis 사용 버전: 7.2
- Kafka/Zookeeper 이미지: confluentinc/cp-kafka:7.5.0, cp-zookeeper:7.5.0
- Redis는 WebSocket 메시지 브로드캐스팅에, Kafka는 채팅 메시지 수집에 사용됨
- MongoDB는 채팅 로그 저장, MySQL은 채팅방 메타 정보 저장 목적
- 이후 JWT 인증 적용 시 application.yml에 주석 처리된 jwt.secret.key를 복구해야 함
'코딩 > sparta TIL' 카테고리의 다른 글
채팅 서버 만들기 : 브로커별 추천 적용 프로젝트 (1) | 2025.06.13 |
---|---|
채팅 서버 만들기 : 통신 구조 파악하기 (0) | 2025.06.13 |
알림 서버 코드가 다른 모든 도메인들의 서비스 코드에 포함되는 구조가 맞는 구조인가에 대한 고찰 (0) | 2025.06.11 |
채팅 서버 만들기 : 브로커 종류 (2) | 2025.06.09 |
채팅 서버 만들기 : WebSocket, WebSocketMessageBrokerConfigurer (1) | 2025.06.09 |