그래프
사례2건
2건 중 1~2번째
- 증상
2025-10-20 07:45 UTC 부터 Vercel CDN 의 정적 파일 제공이 실패하기 시작했고, 실패는 최대 트래픽의 약 22% 에 이르렀다. 이 시간대가 그날 사고 전체에서 피해가 가장 컸다.
- 촉발
Vercel 이 iad1 이라 부르는 AWS us-east-1 리전에 예상치 못한 장애가 났다. 이 리전을 잃은 뒤 07:45 UTC 에 연쇄 장애가 일어나 Vercel 의 전역 캐시 인프라 일부가 사라졌다.
- 원인
- 구성 요소
- 기여 요인
- –
- 감지
06:55 UTC 에 Vercel 서비스 전반의 오류로 첫 자동 알림이 울렸고, 사고가 자동으로 만들어져 당직 엔지니어가 호출됐다. 이 알림은 us-east-1 장애가 시작될 때 울린 것으로, 캐시 장애가 시작되기 50분 전이었다.
- 조치
- 07:15 UTC 에 iad1 의 트래픽을 이웃 데이터센터로 옮기기로 했고, 07:20 에 단계적으로 옮기기 시작해 07:44 에 마쳤다.
- 07:25 UTC 부터 백업 리전이나 보조 리전을 설정한 고객의 함수 호출을 다른 리전으로 돌려 그 고객들의 서비스를 모두 되살렸다.
- 08:18 UTC 에 서비스를 복구했고, 이 연쇄 장애의 근본 원인을 완화했다.
- 후속 조치
- 이번 장애로 드러난 장애 모드를 체계적으로 막을 수 있도록 아주 자세한 기술 포스트모템을 쓴다.
- 큰 리전 장애를 미리 연습하는 훈련을 이어 가고 더 강화한다.
IL-0368AWS us-east-1 장애 동안 PlanetScale 컨트롤 플레인이 멈추고, 이어 일부 데이터베이스 브랜치가 네트워크 분할로 쿼리에 실패했다PlanetScale2025- 증상
7:13 UTC 에 프로덕션에서 계속 도는 PlanetScale 테스트가 실패하기 시작했다. 테스트는 새 데이터베이스 브랜치를 만들지 못하고 있었다. 데이터베이스 브랜치를 만들고 크기를 바꾸고 설정하는 서비스가 응답하지 않았다.
- 촉발
PlanetScale 의 서비스 제공자 한 곳에서 DNS 설정 오류가 났고, 이어서 AWS us-east-1 에 몇 시간 동안 용량 제약과 네트워크 불안정이 이어졌다.
- 원인
- 구성 요소
- 기여 요인
- –
- 감지
첫 단계는 7:13 UTC 에 프로덕션에서 계속 도는 테스트가 실패하면서 엔지니어들에게 알림이 갔다. 둘째 단계는 10:05 UTC 에 한 고객 환경의 Kubernetes operator 가 쓸 수 있는 자원을 모두 쓰고 있다는 알림으로 알았다.
- 조치
- us-east-1 에 새 데이터베이스를 만드는 것을 잠시 막고, 새 데이터베이스의 기본 리전을 AWS us-east-2 로 바꿨다.
- 추가 백업 예약을 미루고, EC2 인스턴스를 띄우려고 기다리던 백업을 취소했다. PlanetScale 의 표준 백업은 백업 동안 데이터베이스의 용량과 장애 내성이 줄지 않도록 복제본을 하나 더 띄워 이전 백업을 복원하고 복제를 따라잡은 뒤 새 백업을 뜬다.
- vtgate 자동 확장을 쓰는 PlanetScale Managed 고객에게 큐 처리를 미루거나 ETL 작업을 멈추는 식으로 줄일 수 있는 부하를 줄이라고 권했다.
- 30일이 넘은 EC2 인스턴스를 비우고 종료하던 상시 작업을 멈췄다.
- 비게 된 EC2 인스턴스를 종료하지 않고 다시 쓰려고 남겨 뒀다.
- 자동 확장을 설정한 고객의 vtgate 프로세스를 평소보다 빽빽하게 배치해 CPU 용량에 더 가깝게 돌리면서, 미국 업무 시간 동안 쓸 용량을 넉넉히 확보했다.
- 가능한 곳에서는 손으로 reparent 요청을 보내 프라이머리 데이터베이스를 더 건강하다고 알려진 가용 영역이나 고객 애플리케이션과 같은 영역으로 옮겼다.
- 네트워크 분할이 풀린 뒤 스스로 복구하지 못한 엣지 로드 밸런서와 vtgate 프로세스를 재시작해 서비스를 되살렸다.
- 후속 조치
- CI/CD, SSO, 웹 애플리케이션 호스팅, 장애 공지에 쓰는 SaaS 의 장애 양상을 더 잘 이해하고, 그 장애에 버틸 수 있게 한다.
- 런타임에 내부 서비스와 AWS 서비스에 기대는 정도를 더 크게 줄이는 방법을 조사한다.
- AWS us-east-1 에 있는 가용 영역 여섯 개를 모두 더 잘 써서, 영역 장애와 영역 사이의 네트워크 분할에 더 잘 버티는 방법을 살핀다.
- 교훈
PlanetScale 은 컨트롤 플레인과 데이터 플레인을 확실히 나눠 둔 덕분에 컨트롤 플레인 장애가 고객 데이터베이스에 번지지 않았다고 봤다. 중복 구성과 자동 장애 조치로 프라이머리 데이터베이스 서버가 네트워크 분할의 다수 쪽으로 옮겨 갔고, 영역을 고려한 트래픽 라우팅이 분할의 영향을 최대한 줄였다. 네트워크 분할은 장애 양상 가운데 따져 보기도, 시험하기도, 견디기도 가장 어려운 편이다. 가용 영역 세 개를 쓰면 하나가 망가져도 버틸 수 있지만, 나머지 두 영역 사이의 네트워크 연결이 믿을 만할 때만 그렇다.
이 2건에서 가장 많이 나오는 구성 요소: 오브젝트 스토리지, CDN 과 엣지 네트워크. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.