구독해서 새 게시물에 대한 알림을 받으세요.

코드 오렌지: 실패를 통한 성장 — 최근 사고 발생에 따른 Cloudflare의 복원력 계획

2025-12-19

7분 읽기
이 게시물은 English, 繁體中文, Français, Deutsch, 日本語, Português, Español (Latinoamérica)简体中文로도 이용할 수 있습니다.

2025년 11월 18일에 Cloudflare 네트워크에서 약 2시간 10분 동안 네트워크 트래픽 전송에 심각한 오류가 발생했습니다. 거의 3주 후인 2025년 12월 5일, Cloudflare 네트워크 뒤에 있는 애플리케이션의 28%에서 약 25분 동안 트래픽이 처리되지 못했습니다.

두 사고 이후 자세한 사후 분석 블로그 게시물을 게시했지만, 저희는 여러분의 신뢰를 회복하기 위해 해야 할 일이 더 많다는 것을 알고 있습니다. 오늘 저희는 이와 같은 장애가 재발하지 않도록 Cloudflare에서 진행하고 있는 노력에 관한 세부 정보를 공유하고자 합니다.

저희는 이 계획을 '코드 오렌지: 실패를 통한 성장'이라고 부르기로 했습니다. 이는 대규모 장애를 초래할 수 있는 오류나 실수에 대한 저희 네트워크의 복원력을 강화하려는 목표를 반영합니다. '코드 오렌지'는 이 프로젝트 작업이 다른 모든 작업보다 우선해서 처리됨을 의미합니다. 참고로, 저희 Cloudflare에서는 또 한 번의 대형 사고 후에 회사 전체 직원의 최우선 작업이 필요하게 되어 '코드 오렌지'를 선언한 적이 있습니다. 저희는 최근 발생한 사고에도 동일한 집중적인 노력이 필요하다고 생각합니다.  코드 오렌지는 그러한 노력을 가능하게 하는 저희 방식으로, 여러 팀에서 필요에 따라 협업하여 작업을 완료할 수 있게 됩니다.

코드 오렌지 작업은 세 가지 주요 영역으로 구성됩니다.

  • 네트워크에 전파되는 모든 구성 변경 사항에 대해 제어된 롤아웃 적용. 이는 현재 소프트웨어 바이너리 릴리스와 동일하게 적용됩니다.

  • 네트워크 트래픽을 처리하는 모든 시스템의 장애 모드를 검토, 개선, 테스트. 이는 예기치 않은 오류 상태를 포함한 모든 조건에서 명확하게 정의된 동작이 보이는지 확인하기 위한 것입니다.

  • 내부 '브레이크 글래스'* 절차를 변경하고 모든 순환 종속성을 제거. 이는 당사와 고객이 사고 발생 시 신속하게 조치를 취하고 문제 없이 모든 시스템에 액세스할 수 있도록 하기 위한 것입니다.

이러한 프로젝트는 마무리될 때 하나의 '빅뱅' 변화가 일어나는 것이 아니라, 진행 과정에서 반복적으로 개선이 이루어집니다. 각각의 업데이트에 따라 Cloudflare의 복원력이 향상되는 것입니다. 최종적으로, 지난 두 달간 저희가 경험한 글로벌 장애를 유발한 문제들을 포함해 Cloudflare 네트워크의 복원력이 크게 향상될 것으로 예상합니다.

저희는 이러한 사고가 고객 여러분과 인터넷 전체에 고통스러운 일임을 잘 알고 있습니다. 이러한 문제로 인해 정말 당혹스럽습니다. 이 문제를 해결하는 것은 Cloudflare 전 직원의 최우선 과제입니다.

* Cloudflare에서는 브레이크 클래스 절차를 통해 특정 상황에서 특정 개인의 권한 등급을 올려 시급한 조치를 수행하고 심각한 시나리오를 해결할 수 있도록 합니다.

문제가 있습니까?

첫 번째 사고 시, Cloudflare의 고객 사이트를 방문한 사용자들은 Cloudflare에서 요청에 대한 응답을 제공할 수 없음을 나타내는 오류 페이지를 보았습니다. 두 번째에서는 빈 페이지가 보였습니다.

두 서비스 중단 모두 유사한 패턴을 따랐습니다. 각 사고가 발생하기 직전에 저희는 전 세계 수백 개 도시에 있는 데이터 센터에 구성 변경 사항을 즉각 배포했습니다.

11월 변경 사항은 Bot Management 분류기에 대한 자동 업데이트였습니다. 저희는 봇을 식별하는 감지 기능을 구축하기 위해 저희 네트워크를 오가는 트래픽을 통해 학습하는 다양한 인공 지능 모델을 실행합니다. 저희는 이러한 시스템을 지속해서 업데이트하여 당사의 보안 보호를 회피하여 고객 사이트에 접속하려는 악의적인 행위자보다 앞서 나가려고 합니다.

12월에 발생한 사고 당시, 널리 사용되는 오픈 소스 프레임워크 React의 취약점으로부터 고객을 보호하기 위해 저희는 보안 분석가가 사용하는 보안 도구에 변경 사항을 배포하여 서명을 개선했습니다. 새로운 봇 관리 업데이트의 시급성과 마찬가지로, 저희는 취약점을 악용하려는 공격자보다 먼저 앞서나가야 했습니다. 해당 변경으로 인해 사고가 촉발되었습니다.

이 패턴은 Cloudflare가 구성 변경 사항을 배포하는 방식과 소프트웨어 업데이트를 릴리스하는 방식 간에 심각한 격차를 드러냈습니다. 소프트웨어 버전 업데이트를 릴리스할 때, 저희는 제어되고 모니터링되는 방식으로 진행합니다. 전 세계에 걸쳐 트래픽을 처리하려면 먼저 새로운 바이너리 릴리스가 나올 때마다 여러 게이트의 배포를 성공적으로 완료해야 합니다. 저희는 먼저 직원 트래픽에 배포한 후 무료 사용자를 시작으로 전 세계 고객에게 점진적으로 변경 사항을 신중하게 배포합니다. 어느 단계에서든 이상 징후가 감지되면, 인적 개입 없이 릴리스를 되돌릴 수 있습니다

당사는 해당 방법을 구성 변경 사항에 적용하지 않았습니다. 네트워크를 구동하는 핵심 소프트웨어를 출시하는 것과는 달리, 구성을 변경할 때는 소프트웨어의 작동 방식을 수정하게 되므로 즉시 변경할 수 있습니다. 저희는 고객에게도 이러한 강력한 기능을 제공합니다. 사용자가 Cloudflare에서 설정을 변경하면 그 변경 사항이 몇 초 이내에 전 세계에 걸쳐 즉시 반영됩니다

그러한 속도에는 장점이 있지만, 해결해야 할 위험도 수반됩니다. 지난 두 번의 사고를 통해, 네트워크 트래픽 처리 방식에 적용되는 모든 변경 사항에 소프트웨어 자체 변경에 적용하는 수준의 검증된 주의를 기울여야 한다는 점이 드러났습니다.

Cloudflare에서는 구성 업데이트 배포 방식을 변경할 예정입니다

구성 변경 사항을 전 세계에 몇 초 이내에 배포할 수 있다는 점이 두 사고의 핵심적인 공통점이었습니다. 두 경우 모두 잘못된 구성으로 인하여 몇 초 만에 네트워크가 다운되었습니다.

소프트웨어 릴리스에서 이미 수행하고 있는 것처럼, 구성에 대한 제어된 롤아웃을 도입하는 것은 코드 오렌지 계획의 가장 중요한 작업 흐름입니다.

Cloudflare에서의 구성 변경 사항은 네트워크에 매우 빠르게 전파됩니다. 사용자가 새 DNS 레코드를 생성하거나 새로운 보안 규칙을 생성하면 몇 초 이내에 네트워크상의 서버 90%에 도달합니다. 이는 내부적으로 Quicksilver라고 하는 소프트웨어 구성 요소에 의해 작동됩니다.

Quicksilver는 저희 자체 팀에서 필요한 구성 변경 사항에도 사용됩니다. 속도가 특징임: Cloudflare에서는 네트워크 동작에 매우 빠르게 대응하고 전 그 동작을 전 세계에 걸쳐 업데이트할 수 있습니다. 그러나 두 사고 모두에서, 이로 인해 게이트를 거쳐 테스트되지 않은 채로 몇 초 이내에 전체 네트워크로 전파되는 중대한 변경 사항이 발생했습니다.

네트워크 변경 사항을 거의 즉시 배포하는 기능은 대부분의 경우에 유용하지만, 필수는 아닙니다. Quicksilver 내에서 제어된 배포를 도입하여 구성 변경 사항을 코드와 동일한 방식으로 처리하는 작업을 진행하고 있습니다.

저희는 상태 기반 배포(Health Mediated Deployment, HMD) 시스템을 통해 하루에 여러 번 네트워크에 소프트웨어 업데이트를 출시합니다. 이 프레임워크에서 Cloudflare의 서비스(네트워크에 배포된 소프트웨어)를 소유한 모든 팀에서는 배포 성공 또는 실패를 나타내는 메트릭, 롤아웃 계획, 실패 시 취할 조치를 정의해야 합니다.

여러 다른 서비스마다 변수가 조금씩 다를 수 있습니다. 일부는 더 많은 데이터 센터로 진행하기 전에 더 오래 기다려야 할 수 있지만, 긍정 오류 신호가 발생하더라도 오류율에 대한 허용 오차가 더 낮은 경우도 있습니다.

배포 후, 저희 HMD 툴킷은 각 단계를 모니터링하면서 계획에 따라 신중하게 진행되기 시작합니다. 어떤 단계에서라도 실패하면 롤백이 자동으로 시작되고 필요한 경우 팀에 연락할 수 있습니다.

코드 오렌지 종료 시 구성 업데이트는 이와 동일한 프로세스를 따릅니다. 저희는 이를 통해 과거 두 차례의 사고에서 발생했던 종류의 문제가 광범위한 문제로 확산되기 훨씬 전에 신속하게 포착할 수 있을 것으로 기대합니다.

Cloudflard에서는 서비스 간 오류 모드를 어떻게 해결할까요?

저희는 구성 변경을 더 잘 제어하여 사고가 발생하기 전에 더 많은 문제를 발견할 수 있으리라고 낙관하지만, 실수가 발생할 수 있고 또 발생하리라는 것을 알고 있습니다. 두 사고 모두에서, 고객이 Cloudflare 사용 방법을 구성하기 위해 의존하는 제어판을 포함하여 Cloudflare 네트워크 한 부분의 오류가 대부분의 기술 스택에서 문제가 되었습니다.

저희는 지리적 확장(더 많은 데이터 센터로 확산) 또는 인구 확장(직원 및 고객 유형으로 확산) 측면뿐만 아니라 신중하고 단계적인 롤아웃에 대해서도 고려해야 합니다. 또한 서비스 진행 실패(봇 관리 서비스와 같은 하나의 제품에서 대시보드와 같은 관련 없는 제품으로 확산되는)를 포함하는 더 안전한 배포를 계획해야 합니다.

이를 위해 저희는 네트워크를 구성하는 모든 핵심 제품 및 서비스 간의 인터페이스 계약을 검토하여 a) 각 인터페이스 간에 장애가 발생할 수 있음을 가정하고 b) 해당 장애를 가능한 한 가장 합리적인 방식으로 처리합니다. 

봇 관리 서비스 장애 시로 돌아가 보면, 장애가 발생하리라고 미리 예상했더라면 어떤 고객에게도 영향이 미칠 가능성이 없도록 처리할 수 있었을 핵심 인터페이스가 최소 두 곳 있었습니다. 첫 번째 인터페이스는 손상된 구성 파일을 읽는 인터페이스였습니다. 패닉에 빠지는 대신, 트래픽이 네트워크를 통과하도록 허용하는 검증된 기본 설정이 있어야 했고, 최악의 경우 봇 감지 머신러닝 모델에 제공되는 실시간 미세 조정 기능만 잃었을 것입니다. 두 번째 인터페이스는 네트워크를 운영하는 핵심 소프트웨어와 봇 관리 모듈 간의 인터페이스였습니다. 봇 관리 모듈이 실패한 경우(실제로 발생했지만) 기본적으로 트래픽을 삭제해서는 안 되었습니다. 대신, 트래픽이 적절한 분류로 통과하도록 허용한다는 더 합리적인 기본 설정을 다시 생각해 낼 수도 있었습니다.

향후 긴급 상황을 어떻게 더 신속하게 해결할 수 있을까요?

해당 사고들이 발생하는 동안 문제를 해결하는 데 너무 오랜 시간이 걸렸습니다. 두 경우 모두, 보안 시스템으로 인해 팀원들이 문제 해결에 필요한 도구에 접근하지 못하게 되어 상황이 악화되었고, 일부 경우에는 순환 의존성으로 인해 일부 내부 시스템을 사용할 수 없게 되면서 지체되었습니다.

보안 기업인 당사의 모든 도구는 고객 데이터 보호 및 무단 접근 방지를 위해 세분화된 액세스 제어 기능이 적용된 인증 계층 뒤에 있습니다. 이는 올바른 결정이지만, 동시에 속도가 최우선순위인 현재 프로세스와 시스템으로 인해 지체되었던 것입니다.

순환 의존성 때문에 고객 경험에도 영향이 미쳤습니다. 예를 들어, 11월 18일 사고 중에는 CAPTCHA 없는 저희 봇 솔루션 Turnstile을 사용할 수 없게 되었습니다. Cloudflare 대시보드 로그인 과정에 Turnstile이 사용됨에 따라, 활성 세션 또는 API 서비스 토큰이 없는 고객은 중요한 변경이 가장 필요한 순간에 Cloudflare에 로그인할 수 없었습니다.

저희 팀에서는 필요한 경우 보안 요구 사항을 준수하면서 올바른 도구에 최대한 신속하게 액세스할 수 있도록 모든 '브레이크 글래스' 절차와 기술을 검토하여 개선할 예정입니다. 여기에는 순환 종속성을 검토하여 제거하거나, 사고 발생 시 신속하게 이를 '우회'할 수 있는 기능이 포함됩니다. 또한 향후 발생할 수 있는 재난 상황에 대비하여 모든 팀에서 프로세스를 충분히 이해하도록 교육 훈련 빈도를 늘릴 예정입니다. 

언제 완료될까요?

이 게시물에서 내부적으로 진행하고 있는 작업을 모두 언급하지는 못했지만, 앞에서 자세히 설명한 작업 흐름은 팀에서 집중해야 할 최우선 과제입니다. 이러한 각 작업 흐름은 Cloudflare의 거의 모든 제품팀과 엔지니어링팀에 영향을 미치는 상세 계획과 연결됩니다. 향후 해야 할 일이 많습니다.

1분기가 말이면, 대체로 그 이전에 끝나겠지만, 다음과 같은 목표를 달성하겠습니다.

  • 구성 관리를 위해 모든 프로덕션 시스템이 상태 기반 배포(Health Mediated Deployments, HMD)로 관리되도록 합니다.

  • 각 제품군에 적합한 장애 모드를 준수하도록 시스템을 업데이트합니다.

  • 적절한 인원이 긴급 상황 발생 시 적절히 복구할 수 있도록 적절한 액세스 권한을 가질 수 있는 프로세스를 마련합니다.

이들 목표 중 일부는 앞으로도 바뀌지 않을 것입니다. 새로운 소프트웨어를 출시할 때마다 순환 종속성을 더 잘 처리해야 할 필요성이 항상 존재하며, 보안 기술이 시간이 지남에 따라 변화하는 것을 반영하여 브레이크 글래스 절차를 업데이트해야 합니다.

지난 두 번의 사고에서 Cloudflare는 사용자와 인터넷 전체에 실망을 안겨 드렸습니다. 저희는 이를 바로잡기 위해 해야 할 일이 있습니다. 이 작업이 진행되는 대로 업데이트를 공유할 예정입니다. 고객 및 파트너께서 보내주신 질문과 의견에 감사드립니다.

Cloudflare에서는 전체 기업 네트워크를 보호하고, 고객이 인터넷 규모의 애플리케이션을 효과적으로 구축하도록 지원하며, 웹 사이트와 인터넷 애플리케이션을 가속화하고, DDoS 공격을 막으며, 해커를 막고, Zero Trust로 향하는 고객의 여정을 지원합니다.

어떤 장치로든 1.1.1.1에 방문해 인터넷을 더 빠르고 안전하게 만들어 주는 Cloudflare의 무료 애플리케이션을 사용해 보세요.

더 나은 인터넷을 만들기 위한 Cloudflare의 사명을 자세히 알아보려면 여기에서 시작하세요. 새로운 커리어 경로를 찾고 있다면 채용 공고를 확인해 보세요.
중단사후코드 오렌지

X에서 팔로우하기

Dane Knecht|@dok2001
Cloudflare|@cloudflare

관련 게시물

2025년 12월 05일 오전 12:00

2025년 12월 5일 Cloudflare 서비스 중단

2025년 12월 5일, Cloudflare에서 UTC 기준 8시 47분경부터 상당한 트래픽 중단이 발생했습니다. 해당 사고는 해결되기까지 약 25분간 지속되었습니다. 고객과 인터넷에 피해를 끼쳐드려 진심으로 송구스럽게 생각합니다. 이번 사고는 공격으로 인한 것이 아니며, 최근 React Server Components에 영향을 미치는 업계 전반의 취약점을 완화하기 위한 구성 변경 적용 과정에서 발생했습니다....