라이브채팅 플랫폼 구현기 1탄 : 개발 언어 및 기반기술 조사
두줄요약
20만 동시 접속 실시간 채팅 요구를 위해 Kotlin·Spring Boot·WebSocket 기반을 선택했습니다.\nKafka 스트림과 아호-코라식으로 확장성과 실시간 금칙어 처리를 설계했습니다.
문제 상황
- MMA 2022 라이브 환경의 기존 댓글 시스템 참여 불편과 실시간 채팅 플랫폼 필요성
- 동시 접속자 20만 명, 메시지 송수신 1초 이내, 실시간 금칙어·도배 탐지·영구 저장 요구
- 5개월 내 분석·설계·구현·성능 검증이 필요한 제한된 개발 인력과 일정
선택 이유
- 학습 비용과 Coroutine 기반 비동기 구현을 고려한 Kotlin 선정
- 운영 사례와 문서 신뢰도를 고려한 Spring Boot 채택
- 전달 지연과 채팅 상태 불일치 최소화를 위한 WebSocket 선택
- 유연한 메시지 스키마와 저장·조회 중심 특성에 맞춘 MongoDB 채택
구조와 흐름
- WebSocket 서버와 부가 처리 워크로드 분리를 위한 Kafka 기반 스트림 처리
- 금칙어·스팸 방지·채팅방 분리·지표 수집·캐시·영구 저장을 개별 스트림 프로세서로 구성
- Kafka Streams DSL과 Kubernetes 기반 워크로드 운영으로 프로세서별 수직·수평 확장
성능/운영 포인트
- Redis Pub/Sub의 노드 확장 및 구독자 증가에 따른 발행 지연, 메시지 휘발성 확인
- Cloud Pub/Sub 대비 낮은 지연 시간과 Consumer Group 기반 브로드캐스트 편의성으로 Kafka 선택
- 114만 단어 사전에서 아호-코라식 적용 후 메시지 파싱 1~2ms 수준 확인


