👋 안녕하세요, 드디어 왔습니다. Jake가 ...
2025년 11월 18일, 혹시 즐겨찾던 사이트나 앱이 갑자기 먹통이 돼서 당황하지 않았어? "어? 와이파이 고장 났나?" 하고 공유기 껐다 켠 친구들도 있었을 거야. 😅
범인은 전 세계 인터넷 트래픽의 상당 부분을 책임지는 Cloudflare(클라우드플레어)의 서비스 장애였어. 당시엔 너무 정신이 없어서 "터졌다!"라고만 전했는데, 이제 공식 로그가 공개되었으니 정확히 무엇이 문제였고, 어떻게 해결했는지 아주 쉽게 설명해 줄게.
준비됐지? 출발! 🚀

1. 해킹? 디도스? 아니, 범인은 '뚱뚱해진 파일' 📁
보통 이런 대규모 장애가 나면 "와, 역대급 해킹 공격인가?"라고 생각하기 쉬워. 그런데 이번엔 사이버 공격이나 네트워크 문제는 전혀 아니었어.
원인은 허무하게도 내부 시스템의 설정 변경 때문이었어. Cloudflare는 'ClickHouse'라는 데이터베이스를 쓰는데, 여기서 권한 설정을 바꾸던 중에 '피처(Feature) 파일'이라는 게 만들어졌어. 그런데 이 파일이 평소보다 두 배 이상 뚱뚱해진(용량이 커진) 상태로 생성된 거야.
💡 비유하자면? 평소엔 날씬한 A4 용지 한 장이 지나가던 파이프라인에, 갑자기 두꺼운 백과사전이 낀 거라고 보면 돼! 📚
이 뚱뚱한 파일이 시스템(프록시)에 전달되자, 시스템이 감당할 수 있는 메모리 한도를 초과해버렸고, 결국 "나 못해!!" 하고 패닉(Panic) 상태에 빠져버린 거지.

2. 왜 '됐다가 안 됐다가' 했을까? 🤔
장애 초기(11:20 UTC)에는 사이트가 열렸다가 안 열렸다가 하는 기이한 현상이 있었어. 마치 형광등이 깜빡거리는 것처럼 말이야.
이건 시스템이 '정상 파일'과 '잘못된 뚱뚱한 파일'을 5분 주기로 번갈아 가며 배포했기 때문이야.
- 정상 파일 배포 시: "어? 이제 되네?" (복구된 척)
- 뚱뚱한 파일 배포 시: "으악! 다시 500 에러!" (장애 발생)
결국 나중에는 모든 노드에 잘못된 파일만 깔리면서, 완전히 먹통이 되어버리고 말았지. 😭
3. 피해는 어느 정도였어?
Cloudflare의 핵심 서비스인 CDN, 보안 서비스, 대시보드 등 거의 모든 기능이 마비됐어. 우리가 웹사이트에서 흔히 보는 HTTP 5xx 에러(서버 내부 오류)가 쏟아져 나왔지.
재밌는 건(사실 안 재밌지만), 시스템 버전에 따라 증상이 달랐다는 거야.
- 최신 엔진(FL2) 사용 고객: 그냥 냅다 5xx 에러 뿜뿜 💥
- 구형 엔진(FL) 사용 고객: 에러는 안 나는데, 모든 접속자를 '봇(Bot)'으로 인식해서 점수를 0점 줘버림 🤖 (정상 사용자도 로봇 취급...)
🚀 엔지니어를 위한 TMI (Tech More Inside)
이번 섹션은 기술적으로 좀 더 깊이 파고들고 싶은 분들을 위해 준비했어! (어려우면 패스해도 좋아 😉)
1. ClickHouse와 Feature Flag의 나비효과 Cloudflare는 Bot Management 시스템을 위해 ClickHouse DB를 사용해요. 이번 작업은 데이터베이스 권한(Permission)을 변경하는 일상적인 작업이었는데, 이 과정에서 쿼리 결과가 예상치 못한 포맷으로 출력되면서 Feature Flag(기능 제어) 설정 파일의 크기가 급증했습니다. 보통 이런 설정 파일은 수 KB 단위여야 하는데, MB 단위 이상으로 커지면서 이를 로드하던 Lua 기반의 프록시 프로세스가 OOM(Out of Memory)으로 크래시(Crash)된 케이스입니다.
2. FL2 vs Legacy FL 아키텍처의 차이 본문에서 언급한 '최신 엔진'은 FL2(Front Line 2) 아키텍처를 말해요. FL2는 메모리 관리가 더 엄격해서 메모리 리밋에 도달하자마자 프로세스가 패닉(Crash & Restart)하며 502 Bad Gateway 같은 에러를 즉시 반환했어요. 반면, Legacy FL은 구조가 달라서 프로세스가 죽지는 않았지만, 봇 탐지 로직이 정상 작동하지 않아 모든 트래픽의 Bot Score를 0(Null)으로 처리해버렸죠. 이는 보안 정책이 "봇 점수가 낮으면 차단"으로 설정된 고객들에게 의도치 않은 서비스 거부를 유발했을 겁니다.
3. 롤백(Rollback)과 킬 스위치(Kill Switch) 결국 해결책은 Last Known Good Configuration(마지막 정상 설정)으로의 롤백이었습니다. Cloudflare는 이번 사태를 계기로, 배포 파이프라인에 파일 크기 검증 로직을 강화하고, 문제가 생겼을 때 즉시 해당 기능을 끌 수 있는 글로벌 킬 스위치를 도입한다고 해요.
4. 어떻게 해결했고, 앞으론 어떡해?
문제를 파악한 엔지니어들은 재빨리 '마지막으로 정상 작동하던 파일'로 되돌렸어(Rollback). 마치 게임하다 망하면 세이브 파일 불러오기 하는 것처럼 말이야! 💾 오후 2시 30분쯤(UTC) 주요 장애가 잡혔고, 오후 5시 6분에는 모든 서비스가 정상화됐어.
Cloudflare는 이번 일을 계기로 "파일이 갑자기 커지면 배포를 막는 시스템"과 "문제가 생기면 바로 기능을 꺼버리는 버튼(킬 스위치)"을 만들어서 다시는 이런 일이 없게 하겠다고 약속했어.

✨ 마무리하며
이번 장애는 2019년 이후 가장 큰 사고였어. 하지만 핑계 대지 않고 "우리가 설정 실수했다"라고 투명하게 공개하고, 기술적인 원인을 상세히 블로그에 올린 점은 배울 만해. (덕분에 우리도 이렇게 공부할 수 있고 말야! 👍)
완벽한 시스템은 없지만, 실수를 어떻게 수습하고 예방하느냐가 진짜 실력이겠지?
오늘 알쓸신네 #13은 여기까지야! 혹시 그날 장애 때문에 겪었던 황당한 에피소드 있어? 댓글로 공유해 줘! 👇
Would you like me to... 이번 장애의 원인이 된 'ClickHouse'나 'CDN'의 원리에 대해 더 자세히 다루는 포스팅을 준비해 볼까요?
'Jake의 알쓸신네' 카테고리의 다른 글
| [알쓸신네#15] 내 돈은 내가 지킨다! 🔗 블록체인, 도대체 뭐길래 난리일까? (1) | 2025.12.15 |
|---|---|
| [알쓸신네#14] 24시간 꺼지지 않는 나만의 컴퓨터? VPS 정복하기! (1) | 2025.12.06 |
| [알쓸신네#속보]Cloudflare 글로벌 네트워크 장애 – 2025년 11월 18일 실시간 현황 정리 (0) | 2025.11.18 |
| [알쓸신네#12] 5G가 'G'린다! 🚀 4G랑 뭐가 다르고 왜 이렇게 빠른 걸까? (0) | 2025.11.10 |
| [알쓸신네#11] 겉으론 하나, 속으론 둘? 🤯 웹서버와 WAS의 환상적인 콤비 플레이! (1) | 2025.11.04 |