Incident Library

IL-0305 Intercom · 2026-01-27database

Intercom 의 PlanetScale 샤드 하나에서 복제본이 CPU 100% 로 주 데이터베이스를 따라가지 못해 받은편지함에 최대 2.2시간 전의 데이터가 보였다

Intercom 은 Vitess 위에 만든 PlanetScale 을 핵심 데이터베이스 계층으로 쓰고, 규모가 큰 데이터 대부분을 여러 데이터베이스 클러스터에 샤딩해 둔다. 2026년 1월 27일 한 샤드에 부하가 큰 작업 두 가지가 겹쳤다. 고객 워크스페이스를 지우는 내부 앱 삭제 작업이 속도 제한 없이 앱마다 평소보다 많은 삭제 단계를 동시에 돌렸고, 같은 때에 ETL 파이프라인이 분석과 보고에 쓸 데이터를 동기화하려고 같은 샤드를 읽었다. 두 작업의 부하가 복제본의 용량을 넘어 이 샤드를 맡은 복제본 두 대가 모두 CPU 100% 에 닿았다. 복제본은 주 데이터베이스의 변경 스트림을 따라가지 못했고, 복제 지연이 최대 2.2시간까지 늘었다.

17:03 UTC 부터 복제 지연이 쌓였고, 17:25 UTC 에 메시지 백로그 알람이 울려 장애가 자동으로 선언되었다. 18:25 UTC 에 이 샤드의 부하를 줄이려고 ETL 처리를 껐고, 21:33 UTC 에 앱 삭제 워커를 0 으로 줄였다. 지표가 안정된 것을 본 뒤 ETL 을 조심스럽게 다시 켰다. 22:09 UTC 에 모든 복제본의 CPU 가 정상으로 돌아오고 복제 지연이 사라졌다. 영향은 Intercom 고객 1% 미만에 그쳤다. 쓰기는 내내 정상이었고, 고객 데이터가 사라지거나 손상된 증거는 없었다.

심각도
–
영향 범위
Inbox reads for customers on one shard were slow and returned data up to 2.2 hours old; writes kept working
영향 사용자
fewer than 1% of Intercom customers
지역
US
감지까지
22m
복구까지
5h 6m

증상

2026년 1월 27일 17:25 UTC 에 메시지 백로그가 지나치게 쌓였다는 워커 알람이 울려 장애가 자동으로 선언되었다. 일부 고객의 받은편지함에서 지연이 들쭉날쭉했고 오래된 데이터가 보였다.

고객 쪽에서는 대화를 만들어도 받은편지함에 바로 나타나지 않았다. 메시지가 보내지지 않은 것처럼 보였지만, 실제로는 제대로 저장되었다. 설정이나 데이터를 바꿔도 적용되지 않은 것처럼 보였다. 쓰기는 장애 내내 정상이었고, 영향은 읽기에서 오래된 데이터가 나오는 것에 그쳤다.

데이터베이스 쪽에서는 17:03 UTC 부터 한 샤드의 복제본 CPU 가 오르며 복제 지연이 쌓이기 시작했다. 이 샤드를 맡은 복제본 두 대가 모두 CPU 100% 에 닿았고, 주 데이터베이스에서 오는 변경 스트림을 따라가지 못해 백로그가 쌓였다. 복제 지연은 꾸준히 늘어 최대 2.2시간까지 갔다.

증상 복제 지연데이터베이스 과부하지연 시간 증가

원인

촉발
내부 앱 삭제 작업과 ETL 파이프라인이 한 샤드에 겹쳤다. 앱 삭제 작업은 속도 제한 없이 평소보다 많은 삭제 단계를 동시에 돌렸고, ETL 파이프라인은 분석과 보고에 쓸 데이터를 같은 샤드에서 읽고 있었다.

감지

17:25 UTC 에 워커에서 메시지 백로그가 지나치게 쌓였다는 알람이 울렸고, 이 알람으로 장애가 자동으로 선언되었다.

조치

후속 조치

교훈

Intercom 은 이 장애가 샤딩한 데이터베이스 구조의 가치를 보여 줬다고 밝혔다. 데이터를 서로 독립된 여러 샤드에 나눠 두었기 때문에, 플랫폼 전체의 성능 저하가 될 수 있었던 일이 고객 1% 미만에 그쳤다.

출처

관련 사례

내 클러스터에도 있는지 확인하기

kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이 사례와 같은 상태를 점검합니다. 이 사례의 구성 요소: 데이터베이스, 데이터베이스 복제. 점검 항목의 근거는 이 사례 같은 공개 보고서입니다.

AI 도구와 스크립트용

API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.