Incident Library
적용된 필터 증상서비스 중단기여 요인자동 테스트 공백모두 풀기검색어 없이 필터만 적용한 목록입니다. 최근 사례부터입니다.
추천 필터 검색하면 검색어에서 찾은 분류 값이 여기에 나옵니다.

그래프

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

사례4건

4건 중 1~4번째

  1. 증상

    2025-10-29 15:41 UTC 부터 Azure Front Door 와 Azure CDN 을 쓰는 고객과 Microsoft 서비스에서 연결 타임아웃 오류와 DNS 해석 문제가 났다. 15:48 UTC 에 모니터링 알림이 울려 조사가 시작됐다.

    촉발

    두 컨트롤 플레인 빌드 버전에 걸쳐 이뤄진 특정 순서의 고객 설정 변경이 호환되지 않는 고객 설정 메타데이터를 만들었다. 15:35 UTC 에 들어간 이 메타데이터가 엣지 사이트 서버에 배포되면서 데이터 플레인의 잠재 버그가 드러났고, 데이터 플레인 서비스가 비동기 처리 중에 크래시했다.

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

    장애는 15:41 UTC 에 시작됐고 15:48 UTC 에 모니터링 알림이 울려 조사가 시작됐다. 그보다 앞선 15:43 UTC 에 설정 보호 시스템이 넓은 데이터 플레인 문제를 감지해 설정 배포를 자동으로 막았다.

    조치
    • 15:43 UTC 에 설정 보호 시스템이 넓은 데이터 플레인 문제에 반응해 새 설정 변경과 진행 중인 설정 변경의 전 세계 배포를 자동으로 막았다.
    • 최신 LKG 에 문제 메타데이터가 들어 있어 LKG 로도 그 이전 버전으로도 롤백하지 않았다. 대신 17:10 UTC 부터 최신 LKG 에서 문제 고객 설정을 손으로 지웠다.
    • 복구하는 동안 같은 문제가 다시 들어오지 않도록 17:30 UTC 에 모든 고객 설정 변경이 데이터 플레인으로 전파되지 않게 막았다.
    • 17:40 UTC 에 고친 LKG 설정을 전 세계 엣지 서버에 배포하기 시작했다. 엣지 사이트마다 모든 고객 설정을 다시 읽었고, 돌아오는 엣지 사이트가 과부하에 걸리지 않도록 트래픽을 천천히 재분배했다.
    • 17:26 UTC 에 Azure Portal 이 표준 복구 절차에 따라 Azure Front Door 를 거치지 않는 경로로 failover 했다.
    • 18:30 UTC 에 AFD DNS 서버가 회복하자 소수의 정상 엣지 사이트로 트래픽을 손으로 재분배했다. 20:20 UTC 에 충분한 엣지 사이트가 회복하자 자동 트래픽 관리로 바꿨다.
    • 완화 뒤 데이터 플레인을 지키려고 Azure Resource Manager 수준에서 모든 AFD 고객 설정 변경을 임시로 막았다. 2025년 11월 2일부터 고객 설정 큐를 비우기 시작했고, 안전장치를 모두 넣은 뒤 11월 5일에 이 제한을 풀었다.
    후속 조치
    • 원래의 컨트롤 플레인 비호환 문제와 데이터 플레인 버그를 둘 다 고쳤다. 완료됐다.
    • 운영 단계로 넘어가기 전에 고객 설정마다 동기 처리를 끝까지 마치도록 강제한다. 완료됐다.
    • 단계적 설정 롤아웃에 단계를 더 넣고 단계마다 배포 뒤 지켜보는 시간인 bake time 을 늘려 설정 문제를 잡게 했다. 완료됐다.
    • 데이터 플레인 서버의 설정 처리를 트래픽을 받는 인스턴스에서 떼어 별도 워커 프로세스 인스턴스로 옮겨, 설정 결함이 데이터 플레인 처리에 영향을 주지 않게 한다. 2026년 1월에 끝낼 예정이다.
    • 이 설정 파이프라인의 사전 검증이 갖춰지면 전파 시간을 45분에서 약 15분으로 줄인다. 2026년 1월에 끝낼 예정이다.
    • 이전 컨트롤 플레인 빌드 버전에서 만든 설정과의 하위 호환성을 보장하도록 시험과 검증 체계를 강화한다. 2026년 2월에 끝낼 예정이다.
    • Azure Portal, Azure Communication Services, Marketplace, Linux Software Repository for Microsoft Products, 지원 티켓 생성 같은 핵심 자체 인프라를 active-active 구성으로 바꿔, AFD 를 거치지 않는 경로로 옮겨 갈 수 있게 했다. 완료됐다.
    • AFD 데이터 플레인을 'micro cell' 로 나눠 고객 설정과 트래픽 격리를 강화하고, 한 고객의 트래픽이나 설정 문제가 다른 고객에게 영향을 주지 않게 한다. 2026년 6월에 끝낼 예정이다.
    • 로컬 고객 설정 캐시를 더 잘 써서 데이터 플레인 복구 시간을 줄여, 고객 설정을 한 시간 안에 복원하게 했다. 완료됐다.
    • 데이터 플레인 복구 시간을 더 줄여 고객 설정을 약 10분 안에 복원하게 한다. 2026년 3월에 끝낼 예정이다.
    • 리소스 한도를 올려 Azure Service Health 로 영향받은 고객에게 가는 알림이 늦게 전달되던 문제를 해결했다. 완료됐다.
    • Azure Service Health 의 자동 고객 알림 범위를 비슷한 종류의 서비스 저하까지 넓혀 영향받은 고객에게 더 빨리 알린다. 2025년 11월에 끝낼 예정이다.
    • Premier 와 Unified 고객이 지원 요청을 만들지 못하게 한 기술과 인력 문제를 해결하고, 백업 시스템으로 더 빨리 failover 할 수 있게 한다. 2025년 11월에 끝낼 예정이다.
    교훈

    Microsoft 는 라우팅, WAF, 오리진 변경을 전 세계에 빠르게 배포해야 하는 전 세계 CDN 에는 설정 전파 위험이 따른다고 봤다. 이번 사고와 10월 9일의 AFD 사고는 모두 이 위험에서 나왔다. 설정 보호 시스템은 데이터 플레인의 정상 신호를 보고 다음 단계로 넘긴다. 이번에는 크래시가 나중에 도는 비동기 처리에서 늦게 드러나, 문제 메타데이터가 보호 시스템을 통과했다. 앞선 사고에서 얻은 교훈과 개선 항목 일부가 이번 사고에도 들어맞았다. Microsoft 는 고객에게 리전 장애나 네트워크 장애 때도 가용성을 지키는 전 세계 HTTP 진입 계층을 만들라고 권했다. 관리 포털을 쓸 수 없을 때는 REST API 나 PowerShell 로 리소스를 관리하고, 알맞은 사람이 서비스 문제를 알 수 있도록 Azure Service Health 알림을 설정하라고도 권했다.

  2. 증상

    2022년 1월 13일 07:28 UTC 직후 크래시 리포터로 들어오는 크래시가 갑자기 늘었고, Mozilla 안팎에서 브라우저가 멈춘다는 신고가 여럿 들어왔다. 전 세계 사용자의 Firefox 가 2시간 가까이 웹 콘텐츠를 불러오지 못하고 쓸 수 없는 상태가 됐다.

    촉발

    2022년 1월 13일 07:28 UTC 에 GCP 가 예고 없이 로드 밸런서의 HTTP/3 를 기본으로 켰다. Mozilla 의 로드 밸런서는 "Automatic (default)" 설정이어서 Firefox 가 Telemetry 서비스로 여는 연결 일부가 HTTP/2 대신 HTTP/3 를 쓰게 됐다.

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

    크래시 리포터로 들어오는 크래시가 갑자기 늘었고, Mozilla 안팎에서 브라우저가 멈춘다는 신고가 여럿 들어왔다.

    조치
    • 09:12 UTC 에 GCP 에서 HTTP/3 를 명시적으로 껐다.
    후속 조치
    • GCP 와 함께 예고 없는 기본값 변경 문제를 개선한다.
    • 비슷한 실수를 막으려고 모든 서비스의 설정을 다시 검토한다.
    • HTTP 버전을 바꿔 가며 시스템 테스트를 더 돌린다.
    • 이런 문제에 브라우저가 더 잘 견디고 사고 대응이 더 빨라지도록 할 조치를 찾는다.
    교훈

    문제는 처음 보기보다 훨씬 복잡했고 여러 요인이 함께 작용했다. GCP 가 HTTP/3 기본값 변경을 예고했다면 사고를 완전히 막지는 못했어도 스테이징 환경 같은 곳에서 더 통제된 실험과 배포를 할 수 있었을 것이다. 로드 밸런서를 명시적인 값 대신 "Automatic (default)" 로 둔 탓에 변경이 저절로 적용됐다. Firefox Desktop 에서 HTTP/3 와 viaduct 를 함께 쓰는 조합은 CI 가 시험하지 않았다. 모든 조합을 시험할 수는 없어도 HTTP 버전 선택이나 viaduct 같은 추가 네트워크 계층은 시험했어야 했다. HTTP 버전을 바꿔 가며 시스템 테스트를 더 돌렸다면 이 문제를 찾았을 것이다.

  3. 증상

    2021-11-08 18:50 UTC 배포 직후 오류와 알림이 바로 들어왔고, 모든 executor 에서 고객 작업이 "not running" 상태로 막혔다.

    촉발

    18:50 UTC 에 분배 서비스의 PostgreSQL 데이터베이스에서 필드 타입을 바꾸는 배포를 내보냈다. 이 스키마 변경은 하위 호환되지 않았다.

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

    18:50 UTC 배포 직후 분배 실패와 관련된 오류와 알림이 바로 보였다.

    조치
    • 오류와 알림을 보고 곧바로 변경을 롤백했다. 롤백 뒤에는 두 배포 사이에 쓰인 데이터를 읽지 못해 분배가 계속 실패했다.
    • 분배 시스템이 그 필드를 무시하게 하는 수정을 빠르게 만들고 빌드해 직접 배포했다.
    • 몰려들 작업에 대비해 주 컴퓨트 클러스터를 직접 늘렸다. 이 수동 확장은 CircleCI 장애 대응 절차의 표준 단계다.
    • 작업 큐가 줄어 정상 처리가 이어지는 것을 잠시 지켜본 뒤 장애를 해결로 처리했다.
    후속 조치
    • 같은 장애가 다시 나지 않도록 테스트 전략의 빈틈을 찾아 고친다.
    • 비슷한 배포가 시스템의 모든 작업에 영향을 주지 않도록, 분배 서비스가 예상하지 못한 데이터를 만났을 때의 동작을 바꾼다.
    • 예상하지 못한 장애가 났을 때 더 빨리 복구할 수 있게 한다.
  4. 증상

    2016년 1월 28일 00:23am UTC 에 여러 온콜 엔지니어에게 알림이 갔고, GitHub 가 HTTP 503 응답과 함께 유니콘 그림이 있는 오류 페이지를 내기 시작했다. 로드 밸런서와 프런트엔드 애플리케이션 서버 다수는 멀쩡했지만, 그 서버들이 요청을 처리하는 데 의존하는 시스템들에 닿을 수 없었다.

    촉발

    2016년 1월 28일 00:23am UTC 에 주 데이터센터에서 서버와 장비에 전원을 대는 시스템이 잠깐 끊겼고, 전체 서버의 25% 를 조금 넘는 서버와 여러 네트워크 장비가 재부팅됐다.

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

    서버에 닿을 수 없다는 알림과 Redis 연결 예외 급증 알림이 여러 온콜 엔지니어에게 갔다.

    조치
    • 현장 기술자와 함께 flea power 를 빼 완전히 꺼진 상태에서 서버를 다시 켜, 디스크가 다시 보이게 했다.
    • 영향받은 Redis 클러스터를 다른 하드웨어에 다시 만들기 시작했다.
    • Redis 클러스터 데이터를 대기 장비에 복원하고 Redis 서버 프로세스를 다시 올렸다.
    • 사이트 동작을 확인한 뒤 점검 페이지를 내리고 상태를 노란색으로 바꿨다.
    후속 조치
    • 전원이 다시 들어온 뒤 서버가 자기 드라이브를 보지 못하게 한 알려진 펌웨어 문제를 전체 서버에서 업데이트한다.
    • 새 펌웨어 업데이트가 나오면 도구가 팀에 이슈를 자동으로 열어, 변경 내역을 GitHub 환경과 대조해 검토하게 한다.
    • 애플리케이션 테스트에서 일부 외부 시스템이 없어도 애플리케이션 프로세스가 시작하는지 명시적으로 확인한다.
    • 백엔드 서비스가 꺼졌을 때 기능을 단계적으로 줄일 수 있도록 서킷 브레이커를 개선한다.
    • 새 서버 준비처럼 중요한 운영 작업을 맡는 내부 시스템의 가용성 요건을 사용자용 시스템과 같은 수준으로 다시 검토한다.
    • 팀 사이의 소통을 강화한다.
    • 모든 인원이 대응에 나서야 하는 상황의 에스컬레이션 방식을 미리 정해, 사고 조정자가 문서를 찾는 대신 복구를 관리하는 데 시간을 쓰게 한다.
    • 장애 동안 사용자에게 보내는 안내를 개선해, 무슨 일이 일어나는지와 다음 안내가 언제 올지 알 수 있게 한다.
    교훈

    복잡한 시스템은 구성 요소마다 의존을 이해해도 그 의존을 엄격하게 시험하지 않으면 새로운 방식으로 실패할 수 있다. 인프라의 큰 부분이 전원을 잃는 일을 완전히 막을 수는 없지만, 복구를 빠르고 믿을 만하게 하고 사용자 피해를 줄일 수는 있다. 예상하지 못한 장애에서 복구하는 데 필요한 내부 시스템은 복구 대상 시스템만큼 믿을 만해야 한다.

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

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

원인별3