프론트엔드 | Vue 3 | 경량 SPA 프레임워크, 실시간 채팅의 특성상 새로 고침 없이 새로운 채팅을 화면에 랜더링 해야함, WebSocket 연동이 쉬움 |
백엔드 | Java 17 , Spring Boot 3.4 | 안정적인 엔터프라이즈 개발, WebSocket, Redis 등 다양한 기술과의 통합 용이 |
DB | MySQL | 안정적이고 범용적인 관계형 데이터베이스 |
인증 | JWT | 기존 세션 기반 로그인은 서버가 상태를 관리해야 하며 분산 서버환경에서는 적합하지 않음 따라서 JWT를 이용해 클라이언트가 인증 정보를 직접 가지고 있도록 해 서버는 상태를 기억할 필요 없음 |
실시간 통신 | WebSocket , STOMP | HTTP는 비실시간, 요청/응답 기반이기 때문에 채팅과 맞지 않음 , WebSocket은 연결을 유지한 채 양방향 통신 가능 → 실시간 메시지 송수신에 적합 |
확장성 | Redis Pub/Sub | 단일 서버에서만 동작한다면 WebSocket으로 충분하지만, 다중 서버 환경에서는 메시지 동기화가 필요함 또한 Redis의 Pub/Sub는 여러 서버 간에 메시지를 브로드캐스트할 수 있어 수평 확장에 적합 |