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

사례4건

4건 중 1~4번째

  1. 증상

    2024년 12월 15일 03:53 UTC 에 OpenStreetMap.org 에 접속할 수 없게 됐고, 04:01 UTC 에 StatusCake 모니터링이 장애를 잡아 SMS 알림을 보냈다. 웹사이트와 지도 API 가 완전히 내려갔다.

    촉발

    2024년 12월 15일 03:53 UTC 에 HE.net 의 암스테르담 라우팅 장비가 예기치 않게 고장 났다.

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

    04:01 UTC 에 StatusCake 모니터링이 장애를 잡아 SMS 알림을 보냈고, 곧바로 운영 팀에 알려졌다.

    조치
    • 11:31 UTC 에 더블린에 있는 OpenStreetMap.org 의 읽기 전용 백업 인스턴스를 켜 일부 기능을 되살렸다. 사이트에는 편집 내용을 저장할 수 없다는 점검 안내를 띄웠다.
    • 12월 17일 12:21 UTC 에 HE.net 을 거치지 않는 새 Equinix Internet 회선을 암스테르담에서 개통해 OpenStreetMap.org 와 API 의 모든 기능을 되살렸다.
    • 12월 18일 00:29 UTC 에 HE.net 이 암스테르담 서비스가 복구됐다고 확인했고, HE.net 경로가 정상으로 돌아와 OpenStreetMap.org 의 모든 네트워크 경로를 다시 쓸 수 있게 됐다.
    후속 조치
    • 한 사업자가 고장 나도 다른 사업자로 거의 끊김 없이 넘어가도록 여러 ISP 를 쓰는 구성으로 옮긴다.
    • 암스테르담 서버의 예비 ISP 후보를 대역폭, 신뢰성, 비용으로 비교한다. 2025년 2월 Karlsruhe Hack Weekend 에서 BGP 를 쓰는 방안과 HE.net 을 예비 ISP 로 남기는 방안을 포함해 실제 선택지를 논의한다.
    • 경로와 지연 시간을 더 깊이 모니터링해 ISP 문제를 빨리 잡고, 자동 에스컬레이션 절차를 만든다.
    • ISP 사이 트래픽 전환을 시험하는 페일오버 훈련 일정을 정하고, 복제 과정이 최신이며 믿을 만한지 확인해 사이트 페일오버를 부담 없이 쓸 수 있는 선택지로 만든다.
    • HE.net, Equinix Internet 과 계약상 SLA 를 협의하고, 정해진 에스컬레이션 절차와 응답 시간을 계약에 넣는다.
    • 대역 외 접속에 쓰는 Raspberry Pi 4 와 4G 모뎀을 ISP 장애 때 수동 예비 업링크로 쓸 수 있게 미리 설정한다. 이 회선으로 서버에 접속하고 Postgres 복제 데이터를 보조 사이트로 동기화한다. 대역 외 장비는 견고하고 이중화되도록 업그레이드한다.
    • 장애 소식을 알리는 일을 맡을 이해관계자와 각자의 책임, 권장 소통 채널을 정리한 문서를 만든다. 운영 팀은 소통을 다른 사람에게 맡기고 복구에 집중한다.
    • OpenStreetMap.org 의 "rails-port" 유지 관리자가 OAuth 서비스를 분리해, 사이트가 흔들릴 때도 제3자 서비스의 인증이 계속 동작하게 할 수 있는지, 그 방법이 현실적인지 조사한다.
    교훈

    암스테르담 서버가 HE.net 하나에만 기대고 있어 단일 장애 지점이 생겼고, 앞으로는 상위 사업자를 여럿 둔다. 4G 예비 회선을 쓴 대역 외 접속이 아주 쓸모 있었으므로, 데이터 동기화까지 할 수 있게 신뢰성과 기능을 넓힌다. 읽기 전용 백업으로 일부 서비스는 됐지만, 복제가 이어지고 있었다면 편집 기능을 더 빨리 되살렸을 것이다. ISP 와 자주 연락해도 쓸 만한 복구 예상 시각을 받지 못했으므로, SLA 를 더 잘 이해하고 ISP 에 더 투명하게 알려 달라고 요구해야 한다. 상위 연결의 알림을 다듬고 여러 모니터링 출처의 데이터를 한데 모아야 문제를 더 빨리 짚을 수 있다. OpenStreetMap.org 가 읽기 전용이 되면 새 토큰을 저장하지 못해, 장애와 무관한 community.openstreetmap.org 같은 서비스에도 로그인할 수 없게 된다.

  2. 증상

    2024년 1월 내부 CS 논의 채널에 XY 국가의 극히 일부 사용자가 Azar 에서 컴포넌트 A 와 관련된 오류를 겪는다는 제보가 들어왔다. 클라이언트에서는 몇 가지 에러 메시지가 꽤 많이 나고 있었다. 그러나 그 무렵 컴포넌트 A 에는 바뀐 것이 없었고 서비스 지표도 눈에 띄게 나빠지지 않았다.

    촉발

    STOMP 통신에 쓰던 라이브러리는 기본 설정에서 TLS Client Hello 에 SNI 를 넣지 않았다. SRE 팀은 통신사 Z 가 SNI 유무에 따라 QoS pool 을 조절하는 설정을 조금씩 rolling update 로 적용하면서 오류가 늘었다고 추정했다.

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

    XY 국가의 일부 사용자가 보낸 CS 가 내부 CS 논의 채널로 들어오면서 알게 됐다. 처음에는 원인을 못 찾고 넘어갔고, 관련 CS 가 계속 늘어난다는 리포트가 올라온 뒤에야 본격적으로 조사했다.

    조치
    • Android 팀과 iOS 팀이 STOMP 통신의 TLS 연결에 SNI 를 넣는 핫픽스를 만들었다. SNI 를 넣은 버전과 넣지 않은 버전을 Android 는 tun2socks, iOS 는 ShadowRocket 으로 SOCKS 프록시에 연결해 두 버전의 동작 차이를 확인한 뒤 배포했다.
    • iOS 에서 timeout 오류를 리포팅하는 로직의 버그를 같은 핫픽스에서 고쳤다.
    후속 조치
    • Oxylabs 같은 모바일 프록시 솔루션으로 여러 나라의 네트워크 환경에서 핵심 컴포넌트의 연결성을 자동으로 시험하고 메트릭을 모은다. 장애가 나면 이 메트릭으로 더 빨리 대처한다.
    교훈

    SRE 팀은 회고에서, 첫 문제가 생기고 최소 3개월이 지나 CS 가 쌓인 뒤에야 문제를 보기 시작했다는 점을 짚었다. 글로벌 서비스에서는 예상하지 못한 지역 네트워크의 변화 때문에 일부 사용자가 회사 인프라에 제대로 연결하지 못할 수 있다. 팀은 이 문제를 다음 순서로 풀었다. 데이터 분석으로 볼 곳을 정하고, 문제 구간을 좁혀 모바일 프록시로 재현하고, 원인을 찾아 테스트한 뒤 핫픽스를 배포했다.

  3. 증상

    2024년 1월 10일 06:00 UTC 무렵 모니터링 시스템이 SourceHut 의 PHL 인프라에 이상이 있다고 경보를 울렸다. 09:00 UTC 무렵에는 PHL 망에 아예 닿을 수 없게 됐다.

    촉발

    2024년 1월 10일 06:00 UTC 무렵 SourceHut 의 PHL 인프라를 노린 layer 3 DDoS 가 시작됐다. 상위 망인 Cogent 가 이에 대응해 SourceHut 의 하위 AS 에 null route 를 걸었다.

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

    06:00 UTC 무렵 모니터링 시스템이 이상을 알아채 경보를 울렸고, 운영팀은 곧 조사를 시작했다.

    조치
    • 코로케이션 사업자가 Cogent 를 설득해 null route 를 /24 전체에서 DDoS 가 노리던 IP 주소 하나인 /32 로 좁혔다.
    • 외부 DNS 로 옮겼다.
    • 새 주 데이터베이스를 띄웠다.
    • FRE 의 백업을 AMS 로 복원했다.
    • 운영 데이터와 마지막 백업 사이의 차이를 손으로 반영했다.
    • 새 메일 시스템을 갖추고 메일 서비스를 그 시스템에 맞게 설정했다.
    • OVH 서버를 두고 트래픽을 OVH 의 DDoS 방어 망을 거쳐 AMS 의 비공개 운영 서브넷으로 NAT 했다. 이 방식으로 종단 간 암호화를 지키면서 임의의 TCP 프로토콜도 서비스했다.
    • 1월 12일 PHL 망 사업자가 임시 서브넷을 내줘 PHL 서버에 대역 외로 접근했고, 이것으로 대체 인프라를 더 빨리 갖췄다.
    • PHL 에서 AMS 로 객체 저장소를 옮기는 동안 pages.sr.ht 를 PHL 로 가는 대역 외 링크로 서비스했다. 성능에는 제약이 있었다.
    • pages.sr.ht 가 새 서브넷과 IP 주소로 옮겨 가면서, apex 레코드가 PHL 서브넷을 직접 가리키던 사용자에게 손으로 고치는 방법을 메일로 보냈다.
    • AMS 의 연산 용량이 모자라 builds.sr.ht 의 빌드 워커를 OVH 의 전용 베어메탈 서버에서 돌렸다.
    후속 조치
    • 새 대기 데이터베이스를 갖춘다. 사고 뒤 작업 가운데 이미 끝난 일이다.
    • AMS 에서 FRE 로 백업을 받도록 설정한다. 이미 끝난 일이다.
    • 새 모니터링 시스템을 설치한다. 진행 중인 일이다.
    • PHL 데이터센터의 설비를 완전히 정리하고, PHL 의 서버를 포장해 AMS 로 보내 용량을 보탠다.
    • 몇 주 안에 빌드용 연산 서버를 PHL 에서 AMS 로 옮긴 뒤 빌드 서비스를 SourceHut 이 운영하는 인프라로 되돌린다.
    • SourceHut 을 온프레미스 쿠버네티스 클러스터에서 돌리는 방법을 연구해 구현한다. 내부 유지 보수 때 사용자가 겪는 중단을 줄이고 이런 사고에 더 잘 견디려는 것이다.
    • 그 작업이 끝나면 두 번째 운영 데이터센터를 계획한다. 두 데이터센터가 함께 부하를 나누고, 한 데이터센터에 장애가 나면 다른 쪽이 전체 서비스를 넘겨받게 한다.
    교훈

    SourceHut 은 데이터센터 전체 장애까지 대비해 둔 운영 계획이 이번 대응에 중요했다고 적었다. 이번 사고는 SourceHut 이 이중화와 복원력 목표를 다 이루기 전에, 알고 고치던 약점을 드러냈다. pages.sr.ht 의 S3 호환 객체 저장소가 오프사이트 백업에 들어 있지 않다는 것도 이번에 알았다. SourceHut 은 이번 일로 비상 절차를 실제로 시험해 볼 수 있었고, 안정성을 더 높일 방법을 많이 배웠다고 적었다. 긴급 이전으로 EU 로 옮기려던 장기 목표 상당수를 빨리 이뤘다.

  4. 증상

    2023년 6월 30일 03:00 UTC 무렵부터 Fastmail 과 인터넷 일부가 서로 통신하지 못했다. 문제는 약 19시간 이어졌고, 고객의 3~5% 로 추정되는 사용자와 일부 메일 서버가 영향을 받았다.

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

    고객들이 지원 티켓과 소셜 미디어로 알려 와서 처음 알았다. 세계 여러 곳에 둔 모니터링 장비도, 직원들도 문제가 있는 네트워크에 있지 않아 장애를 보지 못했다.

    후속 조치
    • 서버에 직접 들어오는 두 번째 트랜짓 회선을 둘 공급사를 고른다. Megaport 를 거치거나 365 의 New Jersey 데이터센터에 직접 들어와 있는 업체를 쓰고, 나가는 트래픽 경로를 직접 골라 문제 있는 네트워크를 피해 간다.
    교훈

    나가는 트래픽의 경로가 하나뿐이어서 Fastmail 은 공급사 네트워크의 문제를 피해 갈 수 없었고 스스로 고칠 수도 없었다. 나가는 경로를 여러 개 중에서 고를 수 있으면 모든 사용자를 더 빨리 다시 접속하게 할 수 있다.

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

이 4건에서 가장 많이 나오는 구성 요소: ISP·트랜짓 망, BGP 라우팅. kubegap 은 Claude Code 나 Codex 에서 쿠버네티스 클러스터를 읽기만 하며 이런 틈을 점검합니다. 점검 항목의 근거는 이 라이브러리와 같은 공개 보고서입니다.

원인별2