IL-0356 Railway · 2026-09-30networking
Railway 에 호스팅된 모든 도메인으로 오는 새 연결이 5분 동안 HTTP 404 를 받았다
Railway 의 분산 라우팅 제어 플레인은 오리진 프록시에 도메인마다 그 뒤의 워크로드로 사용자 요청을 어떻게 보낼지 알려 주는 시스템이다. Railway 는 큰 클라우드 장애에도 버티도록 최근 이 제어 플레인을 모놀리스에서 떼어 내 전 세계에서 운영했고, 배포 파이프라인도 병렬로 돌렸다. 모놀리스 시절에는 파이프라인 하나가 스키마 변경과 서비스 배포의 순서를 지켰다. 분리한 뒤에는 둘이 서로 다른 파이프라인으로 배포됐고, 파이프라인 설정의 오류로 스키마 마이그레이션까지 병렬로 돌 수 있었다.
Railway 는 고객이 서비스 앞에 로그인을 둘 수 있게 하는 인증 계층을 만들고 있었다. 이 기능에는 라우팅 데이터를 담는 데이터베이스의 데이터 타입을 바꾸는 스키마 변경과, 새 테이블 형식을 읽는 라우팅 서비스 새 버전이 함께 필요했다. 엔지니어는 2026-09-30 07:29 UTC 에 스테이징에서 시험한 이 변경을 병합했다. 07:35 무렵 새 라우팅 서비스가 마이그레이션보다 먼저 모든 리전에 배포됐고, 아직 없는 컬럼을 조회하면서 모든 경로 조회가 오류를 냈다. 이 변경은 조회가 실패했을 때 도메인이 마지막 경로로 되돌아가는 대체 동작도 바꿨다. 그래서 오리진 프록시는 조회 실패를 경로가 없는 도메인처럼 다뤄 404 를 냈고, 그 도메인의 마지막 경로로 되돌아가지 못했다. 모든 도메인의 새 연결이 오류를 받았고, 라우팅 서비스가 맡은 사설 네트워크 DNS 조회 일부도 실패했다.
07:40 무렵 CI 시스템이 스키마 변경을 적용했고, 라우팅 서비스의 다음 재시도가 성공해 라우팅이 돌아왔다. 07:44 에 엔지니어들이 원인을 찾았고 07:47 에 완전 복구를 확인했다. 롤백은 필요하지 않았다. Railway 는 07:48 에 상태 페이지에 공개 사고를 올렸고 08:17 에 해결로 표시했다. 데이터 손실은 없었다.
- 심각도
- –
- 영향 범위
- New connections to all domains hosted on Railway, custom and *.up.railway.app, returned HTTP 404; public access and some private networking lookups between services failed; existing connections and running workloads were not affected
- 영향 사용자
- all customers
- 지역
- all regions
- 감지까지
- 0m
- 복구까지
- 5m
증상
2026-09-30 07:35 UTC 무렵부터 Railway 에 호스팅된 모든 도메인이 새 연결에 HTTP 404 not found 를 냈다. 경로 조회가 실패하기 시작하자 곧바로 내부 알림이 울려 당직 대응팀이 소집됐다.
오류는 커스텀 도메인과 *.up.railway.app 도메인에서 모든 리전에 걸쳐 났다. 이미 맺어진 연결은 끊기지 않았고 사용자 워크로드도 계속 돌았다. 스키마가 맞지 않는 동안 사용자 페이지를 새로 방문하면 오류를 받았다.
라우팅 서비스는 사설 네트워크 DNS 도 맡고 있어서, 같은 시간 동안 서비스 사이의 사설 네트워킹 조회 일부도 실패했다.
라우팅 서비스는 아직 없는 컬럼을 조회했고 모든 경로 조회가 오류로 끝났다. 오리진 프록시는 조회 실패를 경로가 없는 도메인과 똑같이 다뤄 404 를 냈고, 그 도메인에서 마지막으로 본 경로로 되돌아가지 않았다.
07:40 무렵 스키마 변경이 적용되자 라우팅 서비스의 다음 재시도가 성공했고 도메인 라우팅이 곧바로 정상으로 돌아왔다. 엔지니어들은 07:44 에 원인을 찾았다. 원인은 새 라우팅 서비스가 자기가 의존하는 스키마 변경보다 먼저 올라온 데 있었다.
원인
원인 배포 결함
- 촉발
- 07:29 에 병합된 라우팅 제어 플레인 변경을 배포할 때, 파이프라인 설정의 오류로 스키마 변경 파이프라인과 새 라우팅 서비스 배포 파이프라인이 동시에 돌았다. 두 파이프라인이 경쟁하다가 새 라우팅 서비스가 스키마 변경보다 먼저 모든 리전에 올라왔다.
감지
경로 조회가 실패하기 시작하자 곧바로 내부 알림이 울려 당직 대응팀이 소집됐다.
조치
- CI 시스템이 스키마 변경을 적용했고, 라우팅 서비스가 조회를 재시도하면서 도메인 라우팅이 곧바로 정상으로 돌아왔다.
후속 조치
- 배포 파이프라인을 하나로 합쳐 마이그레이션 롤아웃이 차례대로 돌게 하고, 병합 전에 배포 순서와 피해 범위를 검사한다.
- 블루/그린 롤아웃에서 바이너리마다 작성 당시의 스키마 버전을 검증하고, 맞는 데이터베이스 스키마가 갖춰질 때까지 서비스가 운영에 올라가지 않게 한다.
- 새 구성 요소인 분산 제어 플레인에 리전별 샤드 단위 롤아웃을 더해 앞으로는 피해를 샤드 안에 가둔다.
교훈
–
출처
관련 사례
IL-0324External Storage 데이터베이스 클러스터에 과부하가 걸려 mw-api-int, mw-parsoid, mw-jobrunner 의 지연과 데이터베이스 오류가 늘었다Wikimedia Foundation · 2025같은 원인 · 공통 데이터베이스, CI 시스템
같은 원인 · 공통 데이터베이스, CI 시스템
IL-0136Sweden Central 리전에서 내부 서비스 배포가 캐시를 비워 메타데이터 백엔드에 평소 20배의 트래픽이 몰렸고, 데이터베이스 연결에 기대는 헬스 체크가 인스턴스를 계속 재시작시켜 Azure OpenAI 요청이 6시간 가까이 실패했다Microsoft Azure · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 네트워크 컨트롤 플레인
같은 원인 · 공통 데이터베이스
IL-0234내부 배포 자동화가 개발용 애플리케이션을 고객의 Managed Kubernetes 클러스터들에 잘못 설치해 컨트롤 플레인 연결과 쿠버네티스 기능에 문제가 났다IONOS Cloud · 2026같은 원인 · 공통 CI 시스템
IL-0510MIT Learn 운영 RDS PostgreSQL 의 저장 공간이 임시 파일로 가득 차 learn.mit.edu 가 세 시간 동안 503 과 504 를 냈다MIT Open Learning · 2026같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0547Buildkite 의 Agent API, REST API, GraphQL 이 annotations 테이블 쿼리 타임아웃으로 4시간 가까이 저하됐다Buildkite · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 네트워크 컨트롤 플레인
IL-0307Supabase us-east-1 에서 Supavisor 2.0 업그레이드 뒤 Postgres 연결 풀러가 테넌트 약 80% 의 연결을 끊었다Supabase · 2025같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0530us-central1 의 가상 네트워크 라우터 컨트롤러가 메모리 부족으로 재시작을 되풀이해 새 VM 과 마이그레이션된 VM 의 네트워크가 오래 끊겼다Google Cloud · 2023같은 원인 · 공통 네트워크 컨트롤 플레인
IL-0523TANF-app 의 운영 배포가 PostgreSQL 마이그레이션 실패로 두 달 동안 막힘U.S. Department of Health and Human Services · 2023같은 원인 · 공통 데이터베이스
IL-0567쿠키런: 오븐브레이크의 패키지 매출 랭킹 기능을 배포한 뒤 Aurora MySQL CPU가 100%에 이르러 유저가 게임에 접속하지 못했다Devsisters · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0524인덱스를 다시 만드는 마이그레이션이 운영에서 Transactions 테이블을 잠가 Open Collective 서비스가 느려짐Open Collective · 2023같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
같은 원인 · 공통 데이터베이스
IL-0467Prow 빌드 클러스터의 노드 업그레이드 중 Boskos 파드가 크래시 루프에 빠져 GCP 프로젝트가 필요한 테스트 작업이 9시간 넘게 모두 실패했다Kubernetes project · 2019같은 원인 · 공통 CI 시스템
같은 원인 · 공통 CI 시스템
같은 원인 · 공통 데이터베이스
내 클러스터에도 있는지 확인하기
AI 도구와 스크립트용
- 이 사례의 JSON: https://incidentlib-api.benchlet.com/cases/IL-0356
- 가장 비슷한 사례들: https://incidentlib-api.benchlet.com/cases/IL-0356/similar
- MCP 서버(Streamable HTTP, 키 없음):
https://incidentlib-mcp.benchlet.com/mcp
API 는 키가 필요 없습니다. MCP 서버는 search_incidents, get_incident, list_incidents, get_topic, vocab 도구를 내놓습니다. 사용법은 API 와 MCP.