Slack
기술 블로그
C레벨 - 고난도

Slack의 500만+ WebSocket 동시 세션 처리

실시간
메시징
스케일링
JavaWebSocketVitessMySQLKafka
2021년 3월조회 8면접 1원문 보기

배경

Slack은 실시간 메시징 플랫폼으로, 메시지 전송부터 수신까지 500ms 이내 글로벌 전송을 목표로 합니다. 500만 이상의 동시 WebSocket 연결을 관리해야 합니다.

도전 과제

500만+ 동시 WebSocket 연결을 유지하면서 메시지를 500ms 이내에 전달해야 합니다. 채널 서버와 게이트웨이 서버 간 라우팅, 일관된 해싱을 통한 세션 관리, 연결 끊김 시 재연결 처리가 핵심 과제였습니다.

해결 방안

Channel Server와 Gateway Server를 분리한 아키텍처를 설계했습니다. Gateway Server가 WebSocket 연결을 관리하고, Channel Server가 메시지 라우팅을 담당합니다. Consistent Hashing으로 채널을 서버에 매핑하고, Vitess를 사용하여 데이터베이스를 수평 확장했습니다.

결과

500만+ 동시 세션 안정 운영, 글로벌 메시지 전송 500ms 이내, 99.99% 가용성 달성.

핵심 인사이트

  • 1.Channel Server와 Gateway Server 분리가 확장성의 핵심
  • 2.Consistent Hashing으로 세션 라우팅 효율화
  • 3.Vitess를 통한 MySQL 수평 확장(샤딩)
  • 4.WebSocket 재연결 전략과 메시지 버퍼링

이 사례 기반 면접에 도전해보세요

Slack의 실제 기술적 결정과 트레이드오프를 깊이 파고드는 면접 질문 5가 준비되어 있습니다

시스템 설계
분산 시스템
운영
데이터베이스
타이머사례 참조 가능결과 아카이브

로그인 없이 바로 면접을 시작할 수 있습니다