Incident Library
  • 원인
  • 구성 요소
  • 증상
  • 기여 요인
  • 사례

사례8건

8건 중 3~7번째

  1. 증상

    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 에 서비스를 복구했고, 이 연쇄 장애의 근본 원인을 완화했다.
    후속 조치
    • 이번 장애로 드러난 장애 모드를 체계적으로 막을 수 있도록 아주 자세한 기술 포스트모템을 쓴다.
    • 큰 리전 장애를 미리 연습하는 훈련을 이어 가고 더 강화한다.
  2. 증상

    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 은 컨트롤 플레인과 데이터 플레인을 확실히 나눠 둔 덕분에 컨트롤 플레인 장애가 고객 데이터베이스에 번지지 않았다고 봤다. 중복 구성과 자동 장애 조치로 프라이머리 데이터베이스 서버가 네트워크 분할의 다수 쪽으로 옮겨 갔고, 영역을 고려한 트래픽 라우팅이 분할의 영향을 최대한 줄였다. 네트워크 분할은 장애 양상 가운데 따져 보기도, 시험하기도, 견디기도 가장 어려운 편이다. 가용 영역 세 개를 쓰면 하나가 망가져도 버틸 수 있지만, 나머지 두 영역 사이의 네트워크 연결이 믿을 만할 때만 그렇다.

  3. 증상

    21:45 UTC 에 R2 전역 가용성 알림이 울렸다. 알림은 오류 예산 소진율 2% 를 가리켰고, R2 의 읽기와 쓰기 가용성 지표가 조금씩 계속 내려가고 있었다.

    촉발

    R2 엔지니어링 팀이 R2 Gateway 서비스의 스토리지 인프라 자격 증명을 교체하면서 wrangler secret put 과 wrangler deploy 에 --env 인자를 빠뜨렸다. 새 자격 증명은 운영 Worker 가 아니라 기본 환경 Worker 에 들어갔고, 그 뒤 스토리지 인프라에서 옛 자격 증명을 지웠다.

    원인
    구성 요소
    기여 요인
    감지

    21:45 UTC 에 R2 전역 가용성 알림이 울렸다. 알림은 오류 예산 소진율 2% 를 가리켰고, R2 엔지니어링 팀은 운영 대시보드와 로그를 보기 시작했다.

    조치
    • 22:45 UTC 에 올바른 운영 R2 Gateway Worker 에 자격 증명을 배포했고, R2 가용성이 돌아왔다.
    후속 조치
    • R2 Gateway Worker 가 스토리지 인프라 인증에 쓰는 자격 증명 ID 의 끝자리를 로그 태그에 넣어, 어떤 자격 증명을 쓰는지 바로 확인할 수 있게 했다.
    • 옛 토큰을 지우기 전에 새 토큰 ID 의 끝자리가 스토리지 인프라 로그와 맞는지 반드시 확인하도록 내부 절차를 바꿨다.
    • 키 교체를 wrangler 명령을 손으로 치는 대신 핫픽스 배포 도구로만 하도록 했다. 이 도구는 환경 설정을 강제하고 다른 안전 검사도 한다.
    • 변경을 적어도 두 사람이 확인한다는 관행을 관련 표준 운영 절차에 명시했다.
    • 엔드포인트를 감시하는 기존 폐루프 상태 검사 시스템을 넓힌다. 이 시스템이 새 키를 시험하고, 그 상태를 알림 플랫폼으로 자동 보고하고, 게이트웨이 Worker 를 배포하기 전에 새 키가 전역으로 퍼졌는지 확인하게 한다.
    • 분산 스토리지 엔드포인트의 문제를 빨리 가려내도록, 관측 플랫폼에 캐시를 거치지 않은 업스트림 성공률 화면을 더한다.
    교훈

    이번 장애는 사람의 실수로 일어났고, R2 Gateway Worker 가 어떤 자격 증명으로 스토리지 인프라에 인증하는지 볼 수 없어서 더 길어졌다. Cloudflare 는 옛 자격 증명을 지운 뒤 가용성 지표에 기대지 말고, R2 Gateway 서비스가 실제로 어떤 토큰을 쓰는지 직접 확인했어야 했다고 적었다.

  4. 증상

    2024년 11월 28일 22:38 UTC 부터 DigitalOcean 의 Cloud Control Panel 이 열리지 않았고, 고객은 가입하거나 로그인하지 못했다. 모니터링과 고객 신고로 장애가 선언됐고, 22:44 에 내부 알림이 문제를 잡았다.

    촉발

    도메인 등록 대행자 Network Solutions 가 11월 28일 22:38 UTC 에 digitaloceanspaces.com 도메인에 Extensible Provisioning Protocol, 곧 EPP 의 clientHold 상태 코드를 잘못 걸었다. 이 코드는 고객이 Network Solutions 에 연락해 풀기 전까지 DNS 해석을 막는다.

    원인
    구성 요소
    기여 요인
    감지

    22:38 UTC 에 Cloud Control Panel 이 열리지 않는다는 모니터링과 고객 신고로 장애가 선언됐다. 22:44 에 내부 알림이 문제를 잡았고, 22:57 에 Cloud Control Panel 영향을 알리는 첫 고객 연락이 들어왔다.

    조치
    • Cloud Control Panel 을 다시 살리는 조치를 배포해 01:42 UTC 에 기능을 되살렸다. 사용자에게는 페이지를 몇 번 새로 고쳐 캐시를 비우라고 안내했다.
    • 01:08 UTC 에 Network Solutions 에 연락해 clientHold 를 풀어 달라고 요청했다.
    • 02:44 부터 04:03 UTC 까지 Verisign 임원진에게 여러 차례 에스컬레이션했고, 04:03 에 도메인의 clientHold 가 풀렸다.
    후속 조치
    • Network Solutions 와 함께 그쪽에서 무슨 일이 있었기에 도메인에 clientHold 가 잘못 걸렸는지 알아낸다.
    • DigitalOcean 도메인을 옮길 곳으로 다른 도메인 등록 대행자들을 검토한다.
    • 등록 대행자가 건 변경과 DNS 해석 문제로 생기는 장애를 더 빨리 알아채도록 모니터링과 알림을 검토한다.
  5. 증상

    2024-07-30 PDT 오후 2:45 부터 US-EAST-1 리전의 여러 AWS 서비스에서 지연과 오류율이 올랐다. CloudWatch Logs, Amazon Data Firehose, Amazon S3 이벤트를 게시하는 이벤트 프레임워크, Amazon ECS, AWS Lambda, Amazon Redshift, AWS Glue 가 영향을 받았다. 같은 리전의 다른 Kinesis Data Streams 셀로 가는 요청은 정상이었다.

    촉발

    2024-07-30 PDT 오전 9:09 에 내부 Kinesis 셀 하나의 가용 영역 한 곳에서 정기 배포가 시작됐다. 이 셀에는 처리량이 아주 낮은 샤드가 아주 많았다. 배포가 호스트를 서비스에서 뺐다가 다시 넣자 셀 관리 시스템이 잘못 동작했다.

    원인
    구성 요소
    기여 요인
    조치
    • PDT 오후 4:25 에 덜 급한 내부 워크로드의 유입 스트림을 줄여 부하를 덜어 내는 변경을 배포했다. 셀 관리 시스템이 처리할 데이터가 줄어 오후 5:39 에 오류율과 지연이 나아지기 시작했다.
    • 보안 연결을 만드는 하위 시스템에 용량을 더해 셀 관리 시스템의 상태를 되살렸다. 오후 5:55 에 셀 관리 시스템이 Kinesis 요청 처리에 쓰는 보안 연결을 제대로 맺었다.
    • 오후 6:32 에 연결 프로비저닝을 더 나아지게 하려고 용량을 더 늘렸고, 오류율이 더 내려갔다.
    후속 조치
    • 장애 중에 한 변경을 US-EAST-1 에 그대로 남긴다. 데이터 플레인 연결을 만드는 용량을 늘리고, 부하를 덜어 내는 도구를 운영에 넣고, 연결 한도를 바꾼 것이 여기에 든다.
    • 새 Kinesis Data Streams 아키텍처의 셀이 있는 다른 모든 AWS 리전에도 같은 변경을 이미 적용했다.
    • 이번 장애를 일으킨 워크로드를 더 잘 다루도록 셀 관리 시스템을 더 고친다.
내 클러스터에도 있는지 확인하기

이 8건에서 가장 많이 나오는 구성 요소: 오브젝트 스토리지, CDN 과 엣지 네트워크. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별6

설정 변경1건

  1. IL-0366 us-central1 의 Cloud Storage 업로드와 쓰기가 이틀에 걸쳐 18시간 넘게 느려지고 실패했다

의존성 장애2건

  1. IL-0515 files.pythonhosted.org 에서 파일을 받을 때 2주 가까이 502 와 503 이 간헐적으로 나서 PyPI 설치가 실패했다
  2. IL-0343 digitaloceanspaces.com 도메인의 DNS 해석이 멈춰 DigitalOcean 의 Spaces, 컨테이너 레지스트리, App Platform, 로드 밸런서가 실패했다

클라우드 제공자 장애2건

기여 요인
–
  1. IL-0357 Vercel CDN 의 전역 캐시 일부를 잃어 정적 파일 요청이 최대 약 22% 실패했다
    Vercel2025
  2. IL-0368 AWS us-east-1 장애 동안 PlanetScale 컨트롤 플레인이 멈추고, 이어 일부 데이터베이스 브랜치가 네트워크 분할로 쿼리에 실패했다

운영 실수1건

  1. IL-0378 Cloudflare R2 객체 스토리지에서 1시간 7분 동안 쓰기가 모두 실패하고 읽기가 전 세계에서 약 35% 실패했다

소프트웨어 결함1건

  1. IL-0535 US-EAST-1 에서 AWS 내부용 Kinesis Data Streams 셀 하나가 느려져 CloudWatch Logs 와 이를 쓰는 여러 서비스의 지연과 오류가 늘었다

용량 한계1건

조직
  1. IL-0382 Newark 와 Atlanta 의 Linode Object Storage 가 느려지고 모든 클라이언트에 503 - Slow Down 으로 응답했다
    Linode2022