핵심 요약
카카오엔터테인먼트의 라이브채팅 플랫폼 구현 2탄은 비동기 아키텍처로 룸을 다수 서버에 분산 운영하고 Kafka로 메시지를 전달하는 설계와 성능 테스트를 다룹니다. 목표는 Pod당 동시접속 2000명, 1초 이내 송수신이며 이를 달성했습니다.
구현 방법
- WebSocket 기반 연결 유지로 룸 내 다수 사용자의 실시간 송수신 구현
- Kafka를 중심 메시지 브로커로 사용하고 Kafka Streams로 금칙어/도배 검사 및 저장 파이프라인 구축
- Redis를 룸 메타정보 캐시로 활용하고 Sink Processor를 통해 MongoDB 및 ElasticSearch에 비동기로 저장
주요 결과
- 목표 달성: Pod당 2000명 동시접속, 1초 이내 응답 달성
- Redis Pub/Sub 이슈를 스트림으로 대체, Consistent Hashing으로 로드밸런싱 개선
- 테스트 도구로 k6를 사용해 Kubernetes에서 분산 로드 테스트를 운용


