awesome-everything EN
↑ Обратно к восхождению

Сети и протоколы

CDN: операции и observability

Суть Cache-tag purge, multi-CDN steering, WAF на edge, ключевые метрики для обнаружения CDN-инцидентов до того, как пользователи заметят, и разбор кейса новостного издателя.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 14 min

Вы задеплоили hotfix в 3 часа ночи. Origin обновлён. Но через 20 минут 40% пользователей по-прежнему на старой версии — разные CDN-регионы в разных состояниях кеша, устаревший edge в Азиатско-Тихоокеанском регионе раздаёт вчерашние данные, а мониторинг показывает только агрегированные частоты ошибок, выглядящие нормально. CDN-инциденты невидимы — пока не становятся видимыми.

Cache-tag purge: точечная инвалидация в масштабе

Для сайта с тысячами URL (новостной издатель, e-commerce каталог) purge по URL операционно неуправляем. Cache tags (Cloudflare Enterprise, Fastly) решают это:

  1. Origin устанавливает Cache-Tag: article-1001, category-tech на ответы статей.
  2. При редактировании статьи CMS вызывает POST /cdn/purge {"tag": "article-1001"}.
  3. CDN инвалидирует все закешированные ответы с этим тегом — по всем POP, за секунды.
  4. Тег категории позволяет почистить все статьи категории (tag: category-tech) одним API-вызовом.

Без cache tags: каждое редактирование вызывает O(URL) purge-вызовов. С cache tags: каждое редактирование — O(тегов) вызовов, обычно 1–5.

Multi-CDN управление трафиком

Крупные операторы (Netflix, Apple, крупные новостные сайты) одновременно используют два и более CDN для:

  • Устойчивость к отказу вендора: отказ одного CDN не роняет сайт.
  • Региональная оптимизация: у одного CDN может быть лучший пиринг в Азии, у другого — в Латинской Америке.
  • Коммерческие рычаги: конкурирующие CDN-контракты снижают стоимость за ГБ.

Механизм управления: DNS-based steering (NS1 Pulsar, Cedexis Openmix, кастомный). Агрегируют real-user-monitoring (RUM) данные и обновляют DNS-записи каждые несколько секунд, направляя к наиболее производительному CDN по региону. DNS TTL: 30 с для быстрой реакции на управление.

Цена: операционная сложность. Purge, заголовки и код edge-worker должны работать идентично на каждом CDN. Purge, отправленный в CDN A, не очищает CDN B автоматически — каждый требует собственного API-вызова.

Ключевые числа CDN-операций
Время распространения cache-tag purge (Cloudflare, Fastly)
1–5 секунд глобально
DNS TTL для multi-CDN steering
30 с (быстрый failover)
mTLS edge-to-origin: защита от прямого доступа к origin IP
CDN client cert обязателен для origin
Уровень блокировок WAF OWASP Top 10 (типичный production)
0.1–2% запросов (настраивается под приложение)
Целевой cache hit rate (статические ассеты)
>90%
Целевой cache hit rate (HTML-страницы)
>70%
Целевой коэффициент offload origin shield
>90% edge-промахов не достигают origin

BGP-оптимизация: Argo и Global Accelerator

Anycast выбирает POP, ближайший по BGP, а не по задержке. На межконтинентальных путях «ближайший по BGP» и «наименьшая задержка» существенно расходятся.

Cloudflare Argo Smart Routing и AWS Global Accelerator непрерывно измеряют реальную end-to-end задержку со всех POP и направляют трафик через приватный backbone (не публичный интернет) к POP с наименьшей задержкой. Типичная экономия: 30–50% снижение p95-задержки на межконтинентальных путях. Цена: повышенная стоимость за ГБ за backbone-транзит. Оправдано для latency-sensitive API; обычно избыточно для доставки статических ассетов, где BGP уже эффективен.

mTLS edge-to-origin. Даже с Anycast, скрывающим IP origin, атакующие могут обнаружить его через историю DNS, certificate transparency logs или неправильно настроенные пути прямого доступа. mTLS (mutual TLS): origin принимает соединения только если клиент предъявляет сертификат CDN. Без CDN-сертификата прямые запросы к origin отклоняются — раскрытие origin IP больше не имеет значения.

WAF и управление ботами на edge

CDN стоят на пути всего трафика — что делает их самым дешёвым слоем защиты от атак:

  • WAF (Web Application Firewall): сопоставляет паттерны запросов с наборами правил OWASP Top 10 (SQL injection, XSS, path traversal, command injection). Блокировка за <1 мс на edge, без участия origin.
  • Управление ботами: TLS-фингерпринтинг JA3/JA4 (фингерпринт TLS ClientHello), поведенческий анализ, IP-репутация для различения человеческого и автоматизированного трафика. Блокирует credential stuffing, парсинг и злоупотребление API.
  • Rate limiting: по IP, по токену, по маршруту. Конфигурируется на edge; выполняется без round-trip к origin.
  • DDoS scrubbing: объёмные атаки (L3/L4) поглощаются на edge до достижения origin. Anycast-сеть Cloudflare охватывает 330+ городов, распределяя атакующий трафик по всем POP.

103 Early Hints

RFC 8297 определяет информационный ответ 103 Early Hints, отправляемый до финального 200 OK. Edge может отправить Link: </style.css>; rel=preload в ответе 103, пока origin генерирует основной HTML. Браузер начинает загружать критические ассеты до прихода HTML, экономя один RTT из критического пути рендеринга. По состоянию на 2026: 93% поддержки браузерами, ~5% реального использования. Vercel лидирует с ~2.8%; Cloudflare и Fastly ниже 1%. Трение при внедрении: edge должен знать, какие ресурсы подсказывать для каждой страницы — без поддержки фреймворка автоматизировать сложно.

Ключевые метрики observability

CDN-инцидент часто начинается как дрейф метрик до появления жалоб пользователей:

МетрикаЦельПорог алерта
Cache hit rate (статические ассеты)>90%<80% — требует расследования
Cache hit rate (HTML-страницы)>70%<60% — требует расследования
Коэффициент offload origin shield>90%<80% — edge может обращаться к origin напрямую
p95 времени ответа edge по регионам<50 мс>100 мс — проблема регионального POP
p99 времени ответа edge по регионам<200 мс>500 мс — серьёзная региональная деградация
Кардинальность Vary-key на URL<100>1000 — проверить ловушку Vary: User-Agent
Уровень блокировок WAF0.1–2%>5% — возможная атака; <0.01% — правила WAF слишком мягкие

Экспортируйте из CDN-дашбордов в Prometheus/OTel для SLO-алертинга. Нативные CDN-дашборды (Cloudflare Analytics, Fastly Real-Time) полезны для углублённого анализа, но не для кросс-CDN корреляции.

Найди ошибку

Вывод curl -I, раскрывающий мисконфигурацию CDN

log
$ curl -I https://example.com/article/123
HTTP/2 200
date: Wed, 13 May 2026 14:33:00 GMT
content-type: text/html; charset=utf-8
cache-control: public, max-age=3600
cf-cache-status: MISS
vary: User-Agent, Accept-Encoding, Cookie, Authorization
age: 0
server: cloudflare

Cache hit rate 5%. Что не так с заголовками ответа и как исправить?

Проследи
1/4

Origin недоступен 8 минут во время failover базы данных. Пользователи обращаются к CDN в течение простоя. Что видят пользователи с настроенным и без stale-if-error?

1
Step 1 of 4
Без stale-if-error: пользователь запрашивает страницу товара во время простоя. Кеш был свежим 20 минут назад (max-age=300, теперь истёк). Что он видит?
2
Locked
С stale-if-error=86400 (1 день): тот же сценарий. Что видят пользователи?
3
Locked
Origin восстанавливается. Как CDN понимает, что нужно прекратить раздавать устаревший контент?
4
Locked
Какие типы контента НЕ должны использовать stale-if-error?
Спроектируй

Спроектируйте конфигурацию CDN для новостного издателя: 50 млн читателей в месяц, статьи с встроенным платным контентом, баннер срочных новостей в реальном времени и комментарии читателей.

  • Тело статьи (большинство байт страницы) может устаревать до 5 минут.
  • Баннер срочных новостей должен обновляться в течение 30 секунд глобально.
  • Комментарии читателей — user-specific (нельзя разделять между пользователями), но сам список комментариев разделяемый.
  • Пейволл: анонимные пользователи видят 3 бесплатные статьи в месяц по IP, затем блокировка пейволла.
Викторина

Почему multi-CDN traffic steering использует DNS, а не HTTP-редиректы?

Вспомните перед уходом
  1. 01
    Объясните разницу между origin shield и стандартным edge-кешем и когда shield критичен.
  2. 02
    Деплой-пайплайн обновляет origin, но не чистит CDN. Через 30 минут пользователи в Европе видят устаревший контент, в Азии — свежий. Почему?
  3. 03
    Cache hit rate CDN падает с 92% до 45% за два дня. Перечислите три возможные причины по вероятности на основе типичных production-инцидентов.
Итог

Эксплуатация CDN в production-масштабе требует четырёх возможностей. (1) Cache-tag purge: назначать семантические теги кешируемым ответам, чистить по тегу при обновлении контента — O(тегов) API-вызовов вместо O(URL). (2) Интеграция с деплой-пайплайном: каждый деплой запускает purge затронутых URL-паттернов или тегов сразу после обновления origin. (3) Multi-CDN устойчивость: DNS-based steering (TTL 30 с) с RUM-данными направляет пользователей к наиболее производительному CDN по региону; mTLS edge-to-origin предотвращает обход при IP-экспозиции. (4) Observability: cache hit rate по URL-префиксам, коэффициент offload origin shield, p95/p99 времени ответа edge по регионам, кардинальность Vary-key. Алертировать на дрейф метрик — падение hit rate предшествует жалобам пользователей на минуты и часы. WAF и управление ботами на edge останавливают атаки до достижения origin.

Связанные уроки
встречается в162
Продолжить восхождение ↑CDN и edge: тест с выбором ответа
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.