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

사례2건

2건 중 1~2번째

  1. 증상

    2025-10-28 01:47 GMT 에 Feature Flags 서비스의 SDK 트래픽을 흉내 내는 자동 합성 검사가 실패하기 시작했다. http://config.ff.harness.io/client/auth 로 가는 일부 요청이 502 를 받았다.

    촉발

    일상 배포 중 쿠버네티스가 파드 일부를 이미지가 로컬에 캐시되지 않은 새 노드로 다시 스케줄했다. 그 이미지는 Google Artifact Registry 에서 이미 지워져 있었다.

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

    Feature Flags 서비스의 SDK 트래픽을 흉내 내는 자동 합성 검사가 01:47 GMT 에 실패하기 시작하면서 Harness 가 장애를 알아챘다.

    조치
    • 지워진 이미지를 Google Artifact Registry 에 되살렸다.
    • 영향받은 파드를 다시 배포해 정상 동작을 되찾았다.
    후속 조치
    • 의도하지 않은 삭제를 막도록 Google Artifact Registry 의 이미지 보존 정책을 검토하고 강화한다.
    • 운영 이미지가 정해진 최소 기간 동안 모두 남아 있는지 자동으로 검증한다.
    • 이미지 풀 오류를 감시하고 알림을 보낸다.
  2. 증상

    matrix.org 홈서버 사용자들이 방이 그냥 멈춘다고 보고했다. 새 메시지를 보내거나 새 멤버가 방에 들어가는 일이 이유 없이 실패했고, 오류 문구가 보일 때는 대개 "No create event in auth events" 였다.

    촉발

    matrix.org 의 PostgreSQL 테이블 state_groups_state 에서 오래전에 손상된 인덱스 영역에 Postgres 가 새 행을 채우기 시작했고, 쓰이지 않는 오래된 데이터를 지우는 백그라운드 정리 작업이 최근 그 영역을 다루기 시작했다.

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

    사용자의 버그 보고와 공개 Matrix 방, 다른 소셜 미디어의 비슷한 보고로 문제를 알았다. 보고가 더 쌓이자 팀이 조사를 시작했다.

    조치
    • 예방 조치로 쓰이지 않는 state group 을 지우는 정리 작업을 잠시 껐다.
    • 데이터를 백업에서 되살려야 할 것으로 보고 6월 26일 데이터베이스 백업을 Amazon EC2 의 새 Postgres 인스턴스에 복원하기 시작했다.
    • 아직 쓰이는 state group 의 상태를 지우려는 SQL 쿼리를 거부하는 Postgres 제약을 걸어 손상이 더 번지지 않게 했다.
    • 4 TB 가 넘는 손상된 인덱스를 밤새 다시 만들었다.
    • 정리 작업이 다룬 범위의 state group 을 복원한 백업에서 조회해 피해 후보를 뽑고, 운영 데이터베이스와 대조해 지워졌지만 아직 쓰이는 state group 을 찾아 운영 데이터베이스에 하나씩 다시 넣었다.
    교훈

    이 손상은 몇 달이나 몇 년 동안 아무도 모르게 있을 수 있었다. 인덱스가 힙의 빈 자리를 가리키는 동안에는 드러나지 않았고, Postgres 가 그 자리에 새 행을 채우기 시작한 뒤에야 문제가 보였다. pg_amcheck 는 이런 손상을 찾지 못했지만, 테이블의 모든 행이 인덱스에 있다는 것은 확인해 줘서 인덱스 행이 빠진 것이 아니라 남는 행이 있다는 것을 알 수 있었다. 팀은 이런 장애가 큰 규모의 서비스를 운영하면 가끔 일어나고, 미리 계획할 수 없으며, 기능 개발이나 버그 수정에 쓸 사람의 시간과 노력을 크게 잡아먹는다고 정리했다.

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

이 2건에서 가장 많이 나오는 구성 요소: 데이터베이스, 컨테이너 레지스트리와 자격 증명. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별1