사례3건
3건 중 1~3번째
- 증상
2026년 1월 9일 19:40 UTC 에 US 리전의 Inbox Heartbeat Anomaly 알람이 울려 장애가 선언되었다. US 리전에 호스팅된 고객은 Intercom 서비스를 전혀 쓸 수 없었다.
- 촉발
테스트용으로 테이블을 옮기는 MoveTables 명령이 제공업체 Kubernetes 클러스터의 일시적인 네트워크 문제로 실패했다. 이 실패를 처리하는 과정에서 Vitess v22 의 롤백 로직 버그 때문에 운영 데이터베이스에 빈 VSchema 가 적용되었다.
- 원인
- 구성 요소
- 기여 요인
- 감지
19:40 UTC 에 US 리전의 Inbox Heartbeat Anomaly 알람이 울려 장애가 선언되었다. 19:41 UTC 에 엔지니어들과 인시던트 커맨더가 장애를 확인하고 조사를 시작했다.
- 조치
- PlanetScale 엔지니어가 장애 한 시간 전에 찍어 둔 VSchema 스냅샷을 다시 적용해 라우팅 토폴로지를 되살렸다.
- PlanetScale 엔지니어가 실패한 MoveTables workflow 가 남긴 잔여물을 지웠다.
- 21:00 UTC 이후 Vitess 를 v21 로 롤백하기 시작했고, 그 뒤 몇 시간에 걸쳐 끝냈다.
- 후속 조치
- PlanetScale 이 회귀를 일으킨 코드 경로를 찾았고 수정을 배포한다.
- Vitess 수정 패치가 충분히 검증될 때까지 Intercom 인프라의 추가 데이터베이스 업그레이드를 멈춘다.
- PlanetScale 이 장애 시작 때 Kubernetes 네트워크에서 패킷이 드롭된 원인을 찾는다.
- 잘못된 토폴로지 갱신이 애플리케이션에 닿지 않게 막을 안전장치를 PlanetScale 과 함께 더 찾는다.
- 데이터베이스 'branch unfreeze' 가 대기 중이던 버전 업그레이드를 자동으로 시작하게 만든 파이프라인 설정을 PlanetScale 과 함께 검토한다.
- 의도하지 않은 배포가 일어나지 않도록 유지보수 작업과 버전 업그레이드를 더 엄격하게 나눈다.
IL-0227의도하지 않은 자동 OS 업데이트가 호스트 네트워킹을 다시 시작해 Heroku dyno 의 외부 연결이 끊기고 많은 고객이 최대 24시간 서비스 중단을 겪었다.Heroku2025- 증상
2025-06-10 06:00 UTC 부터 Heroku 서비스의 성능이 크게 떨어졌다. 고객은 로그인이 됐다 안 됐다 한다고 알렸고, 모니터링은 dyno 네트워킹에서 넓은 범위의 오류를 잡았다.
- 촉발
꺼져 있어야 할 자동 운영체제 업데이트가 운영 인프라에서 돌아 호스트의 네트워킹 서비스를 다시 시작했다. 올바른 라우팅 규칙은 첫 부팅 때만 도는 오래된 스크립트가 넣은 것이었다. 그래서 서비스가 다시 시작된 뒤 경로가 다시 적용되지 않았고, 그 호스트에 있는 모든 dyno 의 외부 네트워크 연결이 끊겼다.
- 원인
- 구성 요소
- 기여 요인
- 감지
06:00 UTC 부터 서비스 성능이 크게 떨어지자 고객이 간헐적인 로그인 문제를 알렸고, 모니터링이 dyno 네트워킹에서 넓은 범위의 오류를 잡았다. Heroku 의 자체 도구와 Heroku Status Page 도 함께 영향을 받았다.
- 조치
- UTC 12:56 부터 내부 인스턴스를 돌아가며 다시 시작해 증상을 어느 정도 덜었다.
- 업스트림 벤더에 요청해 자동 업데이트에 쓰는 토큰을 무효화했다. 17:30 에 확인됐고 19:18 에 끝나, 더는 다른 호스트가 영향받지 않았다.
- 사고 중인 6월 10일에 자동 업그레이드 서비스를 껐다.
- Heroku Dashboard 가 20:59 에 완전히 복구된 뒤, 22:01 에 남은 서비스를 안정시키려고 전체 dyno recycle 을 시작했다.
- 후속 조치
- 다음 주 초에 영구적인 통제 장치를 넣어, 앞으로는 통제된 배포 절차 밖에서 시스템 변경이 일어나지 않게 한다.
- 모든 베이스 이미지에 비슷한 위험이 있는지 감사한다.
- 네트워크 서비스가 다시 시작돼도 문제없도록 네트워크 라우팅을 개선한다.
- 최악의 상황에서도 제때 공지할 수 있도록 운영 인프라와 완전히 독립된 백업 소통 채널을 만든다.
- 엔지니어가 문제를 더 빨리 진단하고 전체 호스트에 대규모로 질의할 수 있도록 새 도구를 만들고 기존 도구를 개선한다.
- 비상시 팀이 핵심 시스템에 빨리 접근할 수 있도록 break-glass 절차를 간소화한다.
- 복잡한 문제를 훨씬 일찍 잡도록 모니터링을 강화한다.
- 교훈
사후 분석은 세 가지 개선 영역을 짚었다. 운영 환경을 함부로 바꾸지 못하게 막는 불변성 통제가 부족해 자동 프로세스가 운영 환경에 계획에 없던 변경을 할 수 있었다. 상태 페이지가 사고의 영향을 받으면서 고객이 가장 필요로 할 때 제때 공지하지 못했다. 도구와 절차의 빈틈 때문에 엔지니어가 문제를 빨리 진단하고 해결하지 못해 복구가 필요 이상으로 오래 걸렸다.
IL-0404Karpenter 가 운영 EKS 노드를 Bottlerocket v1.26.0 으로 바꾼 뒤 BSEE SaaS 고객 인스턴스의 파드가 모두 crash loop back off 에 빠졌다PortSwigger2024- 증상
2024년 10월 24일 BSEE SaaS 고객 인스턴스가 모두 Environment Unavailable 메시지를 띄웠다. 04:45 에 SaaS Uptime Over Time 지표의 가용률이 크게 떨어졌고, 08:07 에 Growth 팀이 장애를 채널에 알렸다.
- 촉발
2024년 10월 24일 eu-west-1 에 Bottlerocket v1.26.0 이 최신 AMI 로 나오자, Karpenter 가 이를 알아채고 04:00 부터 운영 EKS 클러스터의 EC2 노드를 새 버전으로 바꾸기 시작했다.
- 원인
- 구성 요소
- 기여 요인
- 감지
04:45 에 SaaS Uptime Over Time 지표의 가용률이 크게 떨어졌다. 08:07 에 Growth 팀이 BSEE cloud onboarding issues 채널에 장애를 알렸고, 08:15 에 Product 팀원이 기술팀에 구두로 알렸다.
- 조치
- 기술팀이 SaaS 운영 계정의 EC2 인스턴스를 모두 Bottlerocket v1.25.0 으로 되돌리기 시작했고, 09:15 에 고객 인스턴스가 다시 올라와 서비스가 복구됐다.
- 모든 EKS 클러스터에 Bottlerocket 1.25.0 을 배포하고 새 EKS 노드로 교체했다.
- 후속 조치
- Karpenter 리소스를 바꿔 최신 AMI 대신 버전을 고정한 Bottlerocket AMI 를 배포하게 했다. 이 방식은 기술팀의 유지 보수 부담을 늘리고 중요한 보안 패치 배포를 늦출 수 있다.
- Bottlerocket 릴리스 ATOM 피드를 내부 도구 릴리스 대시보드에 넣었다.
- 고객에게 투명하게 알리는 공개 상태 페이지를 만든다.
이 3건에서 가장 많이 나오는 구성 요소: 데이터베이스, 데이터베이스 프록시와 커넥션 풀러. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.
원인별1
업그레이드로 깨진 호환성3건
IL-0304Intercom US 리전에서 Vitess 의 라우팅 설정 VSchema 가 빈 값으로 덮여 서비스 전체가 71분 동안 멈췄다Intercom2026IL-0227의도하지 않은 자동 OS 업데이트가 호스트 네트워킹을 다시 시작해 Heroku dyno 의 외부 연결이 끊기고 많은 고객이 최대 24시간 서비스 중단을 겪었다.Heroku2025IL-0404Karpenter 가 운영 EKS 노드를 Bottlerocket v1.26.0 으로 바꾼 뒤 BSEE SaaS 고객 인스턴스의 파드가 모두 crash loop back off 에 빠졌다PortSwigger2024