Cloudflare Just Took Down the Internet by Accidentally Doubling a Tiny File
클라우드플레어, 작은 파일 하나를 실수로 두 배로 늘리는 바람에 인터넷 전체를 다운시켰다

blog.cloudflare.com
So let me get this straight: one of the world’s most critical internet infrastructure companies goes down—not because of a state-sponsored cyberattack, not because of a cosmic ray, but because a database query started returning duplicate rows and doubled a config file? And that single file broke the entire network?
잠깐만요. 전 세계에서 가장 중요한 인터넷 인프라 회사 한 곳이 다운됐습니다. 국가 차원의 사이버 공격 때문도, 우주선 때문도 아닌데요. 데이터베이스 쿼리가 중복된 행을 돌려주면서 설정 파일 하나를 두 배로 만들었기 때문이라고요? 그리고 그 파일 하나가 네트워크 전체를 망가뜨렸다는 말인가요?
What’s wild is that their systems were designed to preallocate memory based on a fixed number of ML features—so when a ‘feature file’ grew past that limit, the whole proxy panicked. No failover, no graceful degradation, just… 500 errors for millions of sites. It’s like a power grid tripping because someone left a fridge door open.
놀라운 점은 그들의 시스템이 머신러닝 기능의 고정된 수에 기반해 미리 메모리를 할당하도록 설계되었다는 겁니다. 그래서 ‘기능 파일’의 크기가 그 한계를 넘자, 전체 프록시가 오류를 일으켰죠. 장애 조치도, 서서히 기능을 내리는 설계도 없었습니다. 수백만 사이트에 그냥 500 오류만 발생했을 뿐입니다. 마치 누군가 냉장고 문을 열어두는 바람에 전력망 전체가 정전되는 것과 같습니다.
아하, 그렇죠. '권한 설정을 고치다 인터넷을 다운시키는' 클래식한 실수 말이에요. 우리 모두 한 번쯤은 겪어봤겠죠. 솔직히 말해, 실패할 거면 스타일 있게 실패하는 게 낫지. 근데 조용히 설정 파일을 두 배로 만드는 건가요? 이건 멋진 버그도 아니고, 그냥 파국을 낳은 오타 수준입니다.
진짜 비극은 정전이 아니라, 회로 차단기나 기능 플래그의 부재였습니다. 현대적인 시스템이라면 시스템이 점차 성능을 낮추며 작동했어야 했죠. 그런데 한 모듈이 고장 나자 네트워크 전체가 고장 나버렸습니다. 이건 탄력성이 아니라, 규모에 가려진 취약성입니다.
정말로, 저는 클라우드플레어를 좋아하지만 이번 사태는 정말 부끄럽습니다. 파일이 조금만 커져도 시스템이 '공황' 상태에 빠진다고 직접 말했어요. 공황요? '우아하게 처리'하거나 '로그 기록 후 재시도'가 아니라 말이죠. 널 포인터에서 세그폴트 나는 수준의 학부생 코드 같아 보입니다.
그죠? 프로덕션 환경에서 공황 모드요? 그건 엔지니어링이 아니라 코드 형태의 정서 불안이에요.
모든 정전은 우리에게 무언가를 가르칩니다. 오늘 우리는 가장 견고한 시스템도 파일 크기에 대한 가정에 의해 무너질 수 있다는 것을 배웠죠. 교훈을 얻었습니다. 검증을 도입하고, 대체 경로를 마련하며, 설정 파일을 '돌처럼 불변하다'고 믿지 마십시오.
제가 제일 좋아하는 부분: 상태 확인 페이지도 다운됐다는 거예요. 완전한 시였죠. 인터넷의 경비견이 광견병에 걸려 자기 자신을 물어뜯었어요.
그리고 데이터베이스 중복 행 탓을 했죠. 아재, 다음 번엔 그냥 GROUP BY 써봐.