본문 바로가기

패스트캠퍼스/50일의 기적 AI 환급반

패스트캠퍼스 환급챌린지 43일차 : 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4n8ztzq

 

 

안녕하세요 :)

오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판" 챌린지에 도전하는 마흔 세번째 날입니다.

 

마흔 두번째 날에는 채팅 프로젝트에 메시지 시퀸스 넘버 생성기 추가에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.

 

 

오늘 학습할 내용의 제목은,

Part 4. 서비스 부하 분산을 위한 분리 시작 Ch 5. 메시지 순서 보장을 위한 메시지 시퀸스 넘버 생성기 추가 >

04-4. 채팅 프로젝트에 메시지 구간 요청 처리 기능 추가

입니다.

 


💬 채팅 프로젝트에 메시지 구간 요청 처리 기능 추가

  • 구간 단위 메시지 조회 · 순서 보장 · 성능 최적화

 

📌 TL;DR

  • 채팅방에서 특정 범위의 메시지만 요청할 수 있는 기능 추가
  • 클라이언트가 startSeqId와 endSeqId를 전달하면, 해당 구간 메시지를 반환
  • Redis 시퀀스 번호와 DB 복합키 기반으로 순서·정합성 보장
  • 누락·중복 없는 조회와 대량 트래픽 대비 성능 고려
  • 운영 시에는 구간 범위 제한·캐싱·인덱스 최적화 필요

 

🎯 배경

  • 실시간 채팅에서 무작정 모든 메시지를 불러오면 네트워크·DB 부하가 커집니다.
  • 특히 모바일 환경이나 대규모 채팅방에서는 구간 단위 요청이 필수입니다.
  • 이번 작업의 목표는 다음과 같습니다.
    1. 채널별 메시지를 범위(start~end) 기준으로 조회
    2. 순서 보장정합성 유지
    3. 불필요한 데이터 전송 최소화

 

⚙️ 구현 내용

  1. 프로토콜 확장
    • FETCH_MESSAGES_REQUEST에 startSeqId·endSeqId 필드 추가
    • 서버는 요청 범위에 해당하는 메시지만 조회 후 반환
  2. DB 쿼리 수정
    • 복합 PK(채널ID + 메시지Seq) 기반으로
    • SELECT * FROM message
      WHERE channel_id = :channelId
        AND message_seq BETWEEN :startSeq AND :endSeq
      ORDER BY message_seq ASC
    • 인덱스 최적화로 조회 성능 보장
  3. Redis 시퀀스 연동
    • 최신 시퀀스 번호를 Redis에서 조회
    • 범위 끝(endSeqId)이 현재 최대값을 넘지 않도록 조정
  4. 예외 처리
    • 범위 값이 유효하지 않으면 에러 반환
    • 조회 결과가 비어도 정상 응답 처리

 

🧪 테스트

  • 로컬·통합 테스트에서 구간별 메시지 조회 검증
  • 범위 초과·역순 요청·빈 결과 등 엣지 케이스 처리
  • Redis Insight로 시퀀스 값과 DB 데이터 동기 확인

 

🚀 성능 및 운영 고려

  • 범위 제한: 요청 당 메시지 개수 상한 설정(예: 100건)
  • 캐싱 전략: 자주 요청되는 구간은 Redis 캐시 활용
  • DB 인덱스: (channel_id, message_seq) 복합 인덱스 유지
  • 모니터링: 범위 조회 요청 빈도·처리 시간 추적

 

✅ 체크리스트

  • 프로토콜 필드 추가 반영
  • 범위 유효성 검사 로직 구현
  • DB 쿼리 성능 테스트 완료
  • 캐싱·모니터링 설정

 

  • 메시지 구간 요청 기능은 성능·사용성·데이터 정합성의 균형이 핵심입니다. 범위를 나누어 조회하면 네트워크와 DB 부하를 줄일 수 있지만, 잘못 설계하면 순서 뒤틀림·중복·누락 문제가 발생할 수 있습니다.
  • Redis 시퀀스 번호를 기준으로 한 범위 검증은 단순하면서도 안정적입니다. 다만 대규모 환경에서는 샤딩·캐싱·비동기 로딩까지 고려해야 합니다.
  • 운영 단계에서 요청 패턴을 분석해 범위 상한·프리페치 정책을 조정하면 트래픽이 폭증하는 이벤트 상황에서도 안정적으로 서비스할 수 있습니다.