그래프
사례3건
3건 중 1~3번째
- 증상
2026년 5월 29일 Azure OpenAI Service 고객의 추론 요청이 느려지고, 간헐적으로 실패하거나 타임아웃이 나거나 HTTP 5XX 오류를 받았다. 09:39 UTC 에 자동 모니터링이 요청 성공률이 떨어진 것을 잡았다. 영향은 가장 많은 트래픽을 처리하던 유럽 지역과 Australia East 에서 더 컸다.
- 촉발
Microsoft 365 가 쓰는 상위 API 계층의 변경으로, 용량 부족 실패가 재시도할 수 있는 일시적 서버 실패로 상위 계층에 전달되기 시작했다. 이 변경은 Australia East 에 먼저 배포되고 뒤에 Sweden Central 로 넓어졌다.
- 원인
- 구성 요소
- 기여 요인
- 감지
09:39 UTC 에 자동 모니터링이 요청 성공률이 떨어진 것을 잡아 장애 조사를 시작했다.
- 조치
- 16:30 UTC 에 불어난 재시도 트래픽의 출처를 찾아, 문제를 일으킨 내부 작업을 전용 인프라로 떼어 냈다.
- 상위 서비스가 장애를 일으킨 변경을 롤백하기 시작했고, 재시도로 불어난 트래픽을 줄이는 조치를 더 했다.
- 격리와 롤백이 끝나고 밀린 요청이 모두 처리된 뒤, 17:05 UTC 에 고객 영향이 끝났다고 확인했다.
- 후속 조치
- Microsoft 자체의 큰 생성형 AI 작업을 전용 라우팅 인프라로 옮겨, 여러 테넌트의 트래픽과 같은 추론 부하 분산 인프라를 함께 쓰지 않게 한다. 완료 예정은 2026년 6월이다.
- 빠르게 번지는 장애에서 엔지니어가 부차적인 크래시 증상과 과부하의 실제 출처를 더 빨리 구별하도록 진단 안내, 런북, 알림을 고친다. 완료 예정은 2026년 6월이다.
- 상위 서비스 팀과 함께 재시도 정책 설계, 의존 관계 계약, 텔레메트리를 고쳐 재시도 증폭을 더 일찍 잡고 공유 인프라로 번지지 않게 한다. 완료 예정은 2026년 7월이다.
- 과부하 방지와 작업 단위 스로틀링을 강화해, 어떤 내부 작업 하나의 과도한 재시도 트래픽도 공유 구성 요소를 무너뜨리지 못하게 한다. 완료 예정은 2026년 7월이다.
- 추론 라우팅 계층의 단일 장애점을 찾아 없애고 복원력을 높이는 일을 계속한다.
- 교훈
Australia East 에서 일어난 첫 번째 장애는 그럴듯하지만 불완전한 설명으로 이어졌다. 의심한 기능을 끈 뒤 트래픽이 줄어 회복한 것처럼 보였고, 그 때문에 실제 원인이 가려졌다. Sweden Central 에서 더 큰 규모로 다시 나고서야 재시도 증폭과 상위 API 계층의 변경을 원인으로 짚을 수 있었다. 이 장애는 내부 작업이 외부 트래픽만큼 보호받지 못한다는 빈틈도 드러냈다. 내부 작업의 트래픽은 같은 속도 제한과 과부하 제어를 받지 않아, 불어난 재시도가 공유 인프라에 닿기 전에 걸러지지 않았다. Microsoft 는 고객에게 중요한 AI 작업에는 여러 지역에 걸친 복원 전략을 고려하고, 클라이언트 재시도에 알맞은 백오프와 지터를 쓰며, 의존 서비스에 문제가 생겨도 애플리케이션이 기능을 줄여 버티도록 하라고 권했다.
- 증상
2025년 1월 21일 23시 UTC쯤, 보관 데이터를 담는 데이터베이스 인스턴스의 남은 저장 공간이 거의 없다는 자동 알림이 울렸다. 23시 26분부터 워크플로 대기열이 늘면서 워크플로와 잡의 시작과 취소가 느려지고 UI에서 워크플로를 보기 어려워졌다.
- 촉발
1월 16일에 보관 데이터베이스의 함수 하나를 고친 코드 변경이 의도치 않게 로그 메시지를 지나치게 많이 만들어 냈다.
- 원인
- 구성 요소
- 기여 요인
- 감지
23시쯤 보관 데이터베이스의 남은 저장 공간이 거의 없다는 자동 알림이 울렸다. 같은 시각에 요청량 알림이 따로 울려 팀은 워크플로 지연을 곧바로 이 문제와 연결하지 못했다. 그 알림이 해결된 뒤에도 대기열이 늘자 다른 팀이 조사에 나섰다.
- 조치
- 23시 44분에 워크플로 대기열을 처리하는 이벤트 소비자를 증설했다.
- 23시 55분에 문제가 난 보관 데이터베이스의 읽기 복제본을 독립된 주 인스턴스로 승격했다.
- 후속 조치
- 로그 메시지를 지나치게 많이 만들던 데이터베이스 함수를 고쳤다.
- 워크플로 보관 호출의 재시도 정책에 최대 지속 시간을 두어 기본 타임아웃보다 일찍 실패하게 하고, 보관 서비스에 문제가 생겨도 워크플로 서비스가 받는 영향을 줄인다.
- 장기적으로 워크플로 보관 과정을 이벤트 기반 방식으로 바꿔 두 서비스를 떼어 놓는다.
- 데이터베이스에 예측 모니터링과 이상 탐지 모니터링을 더해, 이상한 움직임이 위험 수준에 닿기 전에 알림을 받는다.
- 교훈
보관 데이터베이스의 문제를 알리는 알림은 울렸지만, 데이터베이스가 예측보다 훨씬 빨리 차서 고객 영향이 나기 전에 대응할 시간이 거의 없었다. 워크플로 서비스가 보관 서비스를 동기로 호출하기 때문에 보관 쪽 문제가 워크플로 전체의 지연으로 번졌다.
- 증상
2021-11-08 18:50 UTC 배포 직후 오류와 알림이 바로 들어왔고, 모든 executor 에서 고객 작업이 "not running" 상태로 막혔다.
- 촉발
18:50 UTC 에 분배 서비스의 PostgreSQL 데이터베이스에서 필드 타입을 바꾸는 배포를 내보냈다. 이 스키마 변경은 하위 호환되지 않았다.
- 원인
- 구성 요소
- 기여 요인
- 감지
18:50 UTC 배포 직후 분배 실패와 관련된 오류와 알림이 바로 보였다.
- 조치
- 오류와 알림을 보고 곧바로 변경을 롤백했다. 롤백 뒤에는 두 배포 사이에 쓰인 데이터를 읽지 못해 분배가 계속 실패했다.
- 분배 시스템이 그 필드를 무시하게 하는 수정을 빠르게 만들고 빌드해 직접 배포했다.
- 몰려들 작업에 대비해 주 컴퓨트 클러스터를 직접 늘렸다. 이 수동 확장은 CircleCI 장애 대응 절차의 표준 단계다.
- 작업 큐가 줄어 정상 처리가 이어지는 것을 잠시 지켜본 뒤 장애를 해결로 처리했다.
- 후속 조치
- 같은 장애가 다시 나지 않도록 테스트 전략의 빈틈을 찾아 고친다.
- 비슷한 배포가 시스템의 모든 작업에 영향을 주지 않도록, 분배 서비스가 예상하지 못한 데이터를 만났을 때의 동작을 바꾼다.
- 예상하지 못한 장애가 났을 때 더 빨리 복구할 수 있게 한다.
이 3건에서 가장 많이 나오는 구성 요소: 데이터베이스, CI 시스템. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.