SHOW HN: Cloudflare Workers용 사용량 서킷 브레이커

발행: (2026년 3월 10일 PM 10:09 GMT+9)
6 분 소요

Source: Hacker News

배경

저는 3mins.news(https://3mins.news)를 운영하고 있습니다. 이 서비스는 전적으로 Cloudflare Workers 위에 구축된 AI 뉴스 집계기입니다. 백엔드에는 몇 분마다 실행되는 10개 이상의 크론 트리거가 있습니다 — RSS 가져오기, 기사 클러스터링, LLM 호출, 이메일 전송 등.

문제점

Workers 유료 플랜에는 월간 제한이 강제됩니다(1천만 요청, 100만 KV 쓰기, 100만 큐 작업 등). “제한에 도달하면 일시 정지”와 같은 내장 기능이 없으며, Cloudflare는 초과 사용량에 대해 바로 청구를 시작합니다. KV 쓰기는 초과분당 $5 / M이 부과되므로, 재시도 루프 버그가 금방 비용을 폭증시킬 수 있습니다.

AWS는 예산 알림을 제공하지만, 이는 수동적인 알림에 불과합니다 — 이메일을 확인할 때쯤이면 이미 손해가 발생한 뒤입니다. 저는 능동적인, 애플리케이션 수준의 자체 보호가 필요했습니다.

해결책: 내부 지향 서킷 브레이커

다운스트림 장애를 방어하는(Hystrix 패턴) 것이 아니라, 제 자신의 리소스 사용량을 모니터링하고 한도에 도달하기 전에 우아하게 감소시키는 내부 지향 서킷 브레이커를 만들었습니다.

핵심 설계 결정

  • 리소스별 임계값

    • Workers 요청($0.30 / M 초과) – 80 %에서 경고만 발생.
    • KV 쓰기($5 / M 초과) – 90 %에서 브레이커가 트립.
    • 모든 리소스가 동일하게 위험한 것은 아니므로, 일부는 경고 전용(trip = null)으로 설정합니다.
  • 히스테리시스
    90 %에서 트립하고, 85 %에서 복구합니다. 5 % 차이는 진동을 방지합니다 — 그렇지 않으면 매 체크 사이클마다 트립·복구가 반복됩니다.

  • 모니터링 실패 시 안전장치
    Cloudflare 사용량 API가 다운되면 “모두 정상”이라고 가정하지 않고 마지막 알려진 상태를 유지합니다. 모니터링 장애가 사용량 급증을 가릴 수 없게 합니다.

  • 알림 중복 제거
    리소스별, 월별로 중복을 방지합니다. 그렇지 않으면 리소스가 80 %에 도달했을 때 남은 한 달 동안 약 8,600개의 동일한 이메일을 받게 됩니다.

구현

5분마다 시스템은 다음을 수행합니다:

  1. Cloudflare GraphQL API(요청, CPU, KV, 큐) Observability Telemetry API(로그/트레이스)를 병렬로 조회합니다.
  2. 8가지 리소스 차원을 평가합니다.
  3. 결과 상태를 KV에 캐시합니다.

체크 사이에는 애플리케이션이 단일 KV 읽기만 수행하므로 사실상 비용이 들지 않습니다.

브레이커가 트립되면 모든 예약 작업이 건너뛰어집니다. 크론 트리거 자체는 여전히 실행되지만(멈출 수 없음), 첫 번째 동작으로 브레이커 상태를 확인하고 트립된 경우 바로 종료합니다.

결과

  • 두 주간 운영 중.
  • 월 초에 KV 읽기 급증(82 %)을 포착 — 경고 이메일 1통을 받았고, 원인을 조사·수정했으며, 트립 임계값에 도달하지 않았습니다.

적용 가능성

이 패턴은 어떤 계량형 서버리스 플랫폼(Lambda, Vercel, Supabase)이나 예산 상한이 있는 API(OpenAI, Twilio)에도 적용할 수 있습니다. 핵심 아이디어: 다운스트림 서비스의 오류율을 건강 신호로 보는 것처럼, 자신의 리소스 예산을 건강 신호로 취급합니다.

추가 읽을거리

구현 코드와 테스트가 포함된 전체 글쓰기:

Comments URL:

0 조회
Back to Blog

관련 글

더 보기 »

RISC-V는 느려요

분류 작업: Fedora RISC‑V 트래커(https://abologna.gitlab.io/fedora-riscv-tracker/) 항목들을 살펴보았고, 대부분을 분류했습니다. 현재 17개의 항목이 남아 있습니다.

MidnightBSD 연령 확인 약관 수정

Age Verification Terms 운영 체제에 대한 연령 확인이 필요한 모든 국가, 주, 영토의 거주자는 Midnigh...를 사용할 권한이 없습니다.