session-management

1 개의 포스트

You’ve Got (Too Much) Mail: Behind the Scenes of the 3/25/26 Voice Outage (새 탭에서 열림)

2024년 3월 25일, Discord는 일상적인 인프라 설정 변경 중 발생한 실수로 인해 세션 관리 서버의 17%가 동시에 종료되는 대규모 장애를 겪었습니다. 이 사건은 실시간 서비스의 핵심인 세션 시스템의 붕괴가 어떻게 하위 시스템으로 전이되어 음성 및 영상 통화 라우팅 기능을 마비시키는지 보여주는 전형적인 연쇄 장애(Cascading Failure) 사례였습니다. Discord 엔지니어링 팀은 이번 장애를 통해 분산 시스템에서 갑작스러운 부하가 유발하는 병목 현상을 정밀 분석하고, 시스템의 복원력을 높이기 위한 인프라 개선의 계기로 삼았습니다. ### 설정 오류로 인한 세션 관리 서버의 대량 종료 * **장애 발생:** PDT 기준 3월 25일 12:13부터 약 3시간 동안 서비스 성능 저하가 지속되었으며, 사용자들은 통화 연결 시 "Awaiting Endpoint" 메시지와 함께 연결 실패를 경험했습니다. * **근본 원인:** 인프라 설정 업데이트 과정에서 발생한 구성 오류로 인해, Discord 실시간 인프라의 핵심인 세션 관리 서버 중 17%가 일시에 셧다운되었습니다. * **세션의 중요성:** Discord의 세션은 모든 연결된 장치와 서버 간의 상태를 유지하는 '심장 박동'과 같으며, 앱 내에서 사용자가 보고 듣는 거의 모든 활동을 조율하는 필수 구성 요소입니다. ### 하위 시스템으로 전이된 연쇄 장애의 메커니즘 * **병목 현상의 전이:** 대규모 세션 손실은 단순한 서버 중단에 그치지 않고, 하위 시스템인 음성/영상 통화 라우팅 서비스로 막대한 부하를 전달했습니다. * **라우팅 서비스 마비:** 전 세계 사용자들을 적절한 통화 서버로 연결해주는 서비스가 갑작스러운 재연결 요청과 상태 복구 부하를 견디지 못하고 과부하 상태에 빠졌습니다. * **분산 시스템의 취약성:** 분산 환경에서 발생하는 급격한 부하(Sudden load)는 기존의 알려진 병목 지점뿐만 아니라 예상치 못한 새로운 지점의 결함을 찾아내며 시스템 전반을 타격합니다. ### 장애 분석을 통한 시스템 복원력 강화 * **심층 분석:** 사고 이후 팀은 시스템이 연쇄적인 부하 상황에서 왜 제대로 대응하지 못했는지 분석하고, 분산 시스템의 한계를 시험하는 계기로 활용했습니다. * **인프라 레벨업:** 겉보기에 사소한 설정 변경이 여러 단계 떨어진 서비스에까지 영향을 미칠 수 있음을 인지하고, 이를 방어하기 위한 인프라 고도화 작업을 진행 중입니다. * **경험의 자산화:** 장애 상황에서의 실제 데이터를 바탕으로 병목 현상을 해결함으로써, 향후 유사한 대규모 부하 발생 시에도 시스템이 견딜 수 있는 내성을 확보했습니다. 분산 시스템을 운영하는 엔지니어라면 사소한 설정 변경이 가져올 수 있는 연쇄 효과를 항상 경계해야 합니다. 갑작스러운 대량 부하 상황에서도 핵심 기능이 유지될 수 있도록 시스템 간의 격리를 강화하고, 장애 발생 시 부하를 제어할 수 있는 서킷 브레이커나 속도 제한(Rate Limiting) 같은 방어 기제를 인프라 전반에 걸쳐 점검하는 것이 중요합니다.