사례4건
4건 중 1~4번째
- 증상
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 버전을 바꿔 가며 시스템 테스트를 더 돌렸다면 이 문제를 찾았을 것이다.
- 증상
2020년 12월 6일 13:34 PST 부터 Render 의 Oregon 리전에서 많은 서비스가 높은 비율로 503 Service Unavailable 응답을 냈다. 모니터링 시스템이 바로 문제를 알렸다.
- 촉발
13:34 PST 에 Oregon 리전에 올라간 고객 API 하나가 들어온 요청을 붙잡고 있다가 타임아웃 오류로 끝내기 시작했다. 이 서비스는 Oregon 리전에서 요청을 가장 많이 받는 축에 들었다.
- 원인
- 구성 요소
- 기여 요인
- 감지
13:34 PST 에 장애가 시작되자 모니터링 시스템이 바로 Render 팀에 알렸다.
- 조치
- 이번 같은 장애를 막는 수정을 모든 로드 밸런서에 내보냈다.
- 후속 조치
- Render 의 라우팅 계층과 로드 밸런싱 계층에서 서비스끼리 더 격리하는 장치를 만든다.
- 로드 밸런싱 코드의 테스트 범위를 넓힌다.
- 예상하지 못한 일이 생겨도 플랫폼이 버티도록, CI 테스트 스위트에 가상의 장애 상태를 더 넣는다.
- 카오스 엔지니어링에 다시 힘을 쏟는다.
IL-0338Google Cloud 의 HTTP(S) 로드 밸런서와 TCP/SSL Proxy 로드 밸런서가 32분 동안 요청의 33~87% 에 502 나 연결 재설정을 냈다Google Cloud2018- 증상
2018년 7월 17일 12시 17분 PDT 부터 Google Cloud App Engine, HTTP(S) 로드 밸런서, TCP/SSL Proxy 로드 밸런서를 쓰는 고객의 요청이 502 응답 코드나 연결 재설정으로 실패했다. 오류 비율은 32분 동안 33% 에서 87% 사이를 오갔다.
- 촉발
두 번째 계층 GFE 코드에는 아직 쓰지 않던 새 기능이 들어가 있었고, 이 기능에 버그가 있었다. 운영 환경의 설정 변경이 이 버그를 간헐적으로 건드렸고, 버그는 GFE 를 재시작시켰다.
- 원인
- 구성 요소
- 기여 요인
- 감지
12시 19분에 자동 모니터링이 Google 엔지니어링 팀에 알림을 보냈다. 엔지니어는 장애가 시작되고 3분 안에 알림을 받고 바로 조사를 시작했다.
- 조치
- 12시 44분 PDT 에 원인을 찾고 문제의 설정 변경을 곧바로 되돌렸다. 영향받은 GFE 들이 재시작을 멈추고 모두 서비스에 돌아오자 트래픽이 평소 수준과 동작을 되찾았다.
- 후속 조치
- 아직 쓰지 않는 기능을 꺼 두는 안전장치를 더한다.
- 작업을 재시작시킬 수 있는 잠재 버그가 운영 바이너리에 남을 위험을 줄이도록 GFE 테스트 스택을 더 단단하게 만든다.
- 장애가 미치는 범위를 줄이도록 GFE 풀의 샤드끼리 더 격리한다.
- 진단을 빠르게 하도록 GFE 풀의 모든 설정 변경을 한곳에 모은 대시보드를 만들어, 엔지니어가 문제를 일으킨 변경을 쉽게 보고 대조해 찾아내게 한다.
IL-0396새로 만들거나 라이브 마이그레이션한 GCE 인스턴스, Cloud VPN 터널, 네트워크 로드 밸런서가 2시간 8분 동안 공인 IP 주소로 연결되지 않았다Google Cloud2017- 증상
2017년 1월 30일 새로 만든 GCE 인스턴스에 네트워크 연결이 되지 않았다. 라이브 마이그레이션 중인 인스턴스, 새로 만든 Cloud VPN 터널과 GCE 네트워크 로드 밸런서도 공인 IP 주소로 닿을 수 없었다. 이미 만들어져 있고 라이브 마이그레이션을 겪지 않은 인스턴스, 로드 밸런서, VPN 터널은 영향이 없었다.
- 촉발
드물게 쓰는 로드 밸런싱 구성에 대량의 변경이 들어갔다. 이 변경이 비효율적인 코드 경로를 타면서 canary 배포가 타임아웃됐다.
- 원인
- 구성 요소
- 기여 요인
- 조치
- 네트워크 로드 밸런서에 변경을 반영하는 작업을 재시작했다. 재시작 뒤 문제의 변경이 한 묶음으로 처리되면서 비효율적인 코드 경로를 타지 않았고, 변경이 다시 처리됐다.
- 이 조치를 11:36 부터 12:42 까지 존마다 차례로 적용했다.
- 후속 조치
- canary 타임아웃을 늘려, 비효율적인 코드 경로를 타는 변경이 네트워크 변경을 완전히 멈추지 않고 늦추기만 하게 한다.
- 비효율적인 코드 경로를 개선한다.
- 더 넓은 범위의 구성에서 동작을 확인하는 테스트를 새로 쓴다.
- 주소 구성을 전 세계로 퍼뜨리는 방식을 분산 라우팅으로 바꾸는 작업을 앞당겨, 이 계층의 문제가 전 세계에 영향을 주지 않게 한다.
- 이런 문제를 더 빨리 알아보고 더 빨리 해결할 수 있도록 지표와 알림을 더 만든다.
이 4건에서 가장 많이 나오는 구성 요소: 클라우드 로드 밸런서, CDN 과 엣지 네트워크. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.
원인별1
소프트웨어 결함4건
IL-0253Firefox 가 네트워크 스레드의 무한 루프에 빠져 전 세계에서 2시간 가까이 웹 페이지를 열지 못했다Mozilla2022IL-0345Render Oregon 리전의 많은 서비스가 4시간 동안 503 오류를 평소보다 많이 냈다Render2020IL-0338Google Cloud 의 HTTP(S) 로드 밸런서와 TCP/SSL Proxy 로드 밸런서가 32분 동안 요청의 33~87% 에 502 나 연결 재설정을 냈다Google Cloud2018IL-0396새로 만들거나 라이브 마이그레이션한 GCE 인스턴스, Cloud VPN 터널, 네트워크 로드 밸런서가 2시간 8분 동안 공인 IP 주소로 연결되지 않았다Google Cloud2017