목록 보기
Loopin 메신저 개발기
백엔드

Loopin 메신저 개발기

넥스트리
넥스트리
2026년 7월 9일

두줄요약

오래된 메신저를 WebSocket과 STOMP 기반으로 재구축한 사례를 소개했습니다. Presence를 RDB로 관리해 단순한 구조와 운영 효율을 확보한 점이 핵심입니다.

문제 상황

  • 오래된 메신저 구조가 변화하는 웹 환경과 유지보수 요구에 대응하기 어려운 상태
  • HTTP 단방향 요청-응답만으로는 실시간 메시지 송수신과 접속 상태 관리 구현에 한계
  • Redis, Kafka 같은 분산 인프라를 붙이는 방식은 규모 대비 운영 복잡도와 비용 상승 우려

구조와 흐름

  • React 프론트엔드가 STOMP로 웹소켓 커넥션을 맺고 비동기 송수신 후 컴포넌트 단위 리렌더링
  • Spring Boot 백엔드가 웹소켓 엔드포인트, JWT 검증, STOMP 라우팅, 이벤트 리스너를 담당
  • RDB가 채팅 메시지와 Presence 세션 상태, 이력까지 함께 보존하는 단일 저장소 역할

선택 이유

  • Raw WebSocket보다 STOMP 프레임 구조가 명확해 메시지 구분과 라우팅이 직관적
  • Presence를 RDB에 두어 백업, 모니터링, 무결성, 감사 이력, JOIN 기반 조회를 단순화
  • 외부 분산 캐시를 배제해 단순함과 운영 효율을 우선

적용해볼 점

  • 실시간 기능도 요구사항과 규모에 따라 RDB 중심으로 단순하게 설계하는 접근
  • 세션 로그와 상태값을 함께 관리해 접속 이력 추적성과 조회 편의성 확보
  • WebSocket 세션 이벤트 기반으로 접속/종료를 명시적으로 처리하는 방식

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...