Инженерный блог

TikTok-цунами: Как мы приняли 200 000 юзеров за вечер на Cloud Run, не легли и заработали рекордный чек в AdSense

06.08.2026
Шарафутдинов Р.

Представьте ситуацию: вечер пятницы, вы собираетесь закрыть ноутбук и пойти отдыхать, как вдруг мониторинги начинают разрываться от алертов. Трафик на одном из развлекательных порталов нашего клиента начал расти не линейно, а экспоненциально. 1000 одновременных пользователей, затем 5000, 15000, 40000...

Причина? Одно вирусное видео в TikTok, опубликованное популярным казахстанским блогером со ссылкой на сайт клиента в шапке профиля. Алгоритмы TikTok подхватили видео, и оно начало набирать сотни тысяч просмотров в час.

Для любого классического сайта на VPS (виртуальном сервере) это означало бы мгновенную "смерть" (Error 502 Bad Gateway) через 3 минуты после начала наплыва. Но этот проект мы заранее перевезли на Google Cloud Run. В этой статье мы в деталях разберем, как наша архитектура справилась с 200 000 уникальными посетителями за один вечер, почему сайт не упал, и как мы монетизировали этот хаос через Google AdSense, получив рекордный чек.

Анатомия TikTok-трафика: почему он убивает серверы?

Трафик из TikTok и Instagram Reels кардинально отличается от поискового трафика (SEO). SEO-трафик распределен равномерно. Пользователи приходят постепенно в течение суток. TikTok-трафик — это лавина. Это DDoS-атака, только легитимная (ее еще называют "hug of death").

  • Мгновенный старт: Нагрузка возрастает с 0 до тысяч RPS (Requests Per Second) за пару секунд.
  • Мобильные устройства: 99% пользователей сидят со смартфонов, часто с нестабильным 3G/4G интернетом.
  • Короткая сессия: Пользователи быстро заходят, смотрят контент и уходят. Важно успеть загрузить сайт и показать рекламу в первые секунды.

Наша Архитектура: Serverless на максималках

Чтобы выдерживать такие спайки (пики) без необходимости держать мощные сервера 24/7 (и платить за них космические деньги), мы построили полностью бессерверную (Serverless) архитектуру на базе продуктов Google Cloud.

1. Входная дверь: Cloud CDN + Load Balancer

Первое, что встретило волну трафика — это Google Cloud Load Balancer с включенным Cloud CDN. Мы настроили агрессивное кэширование на границе сети (Edge). Все картинки, CSS, JS и даже часть статического HTML отдавались из кэша серверов Google, расположенных ближе всего к пользователям.

Совет: Обязательно настраивайте заголовки Cache-Control. Для статики ставьте public, max-age=31536000, immutable. Это снизит нагрузку на бэкенд на 80%.

2. Вычислительное ядро: Cloud Run

Те запросы, которые не попали в кэш, отправлялись в Cloud Run — сервис для запуска Docker-контейнеров без управления серверами. Главная фишка Cloud Run — автомасштабирование с 0 до 1000 контейнеров (инстансов) за считанные секунды.

В момент пика TikTok-цунами, Cloud Run автоматически поднял более 120 контейнеров, чтобы обработать запросы. Как только трафик начал спадать, лишние контейнеры были убиты, и клиент перестал за них платить.

# Пример настройки Cloud Run для высоких нагрузок (gcloud CLI)
gcloud run deploy my-app \
  --image gcr.io/my-project/my-app:latest \
  --min-instances 5 \
  --max-instances 500 \
  --concurrency 80 \
  --cpu-boost \
  --region europe-west4

В этом коде мы используем --cpu-boost, что дает контейнерам больше CPU во время запуска (холодного старта), сокращая время старта на 50%. А --concurrency 80 позволяет одному контейнеру обрабатывать до 80 параллельных запросов.

Как мы не положили базу данных (PostgreSQL)

Частая проблема Cloud Run: при резком увеличении инстансов они открывают сотни соединений к базе данных, исчерпывая лимит пула (Connection Pooling), и база падает. Чтобы избежать этого, мы использовали Cloud SQL Proxy и внешний пул соединений PgBouncer.

Более того, мы закэшировали все тяжелые запросы (например, подсчет лайков или вывод топ-статей) в Redis (Memorystore). База данных вообще не почувствовала TikTok-цунами, так как 95% данных отдавалось из памяти.

Нагрузка на инфраструктуру во время TikTok-вируса

Сравнение входящего трафика (RPS) и количества активных инстансов Cloud Run.

Монетизация: Рекордный чек в Google AdSense

Справиться с трафиком — это только половина дела. Вторая половина — заработать на нем. Многие сайты при наплыве трафика забывают о том, что рекламные блоки тоже должны грузиться быстро. Если ваш сайт грузится 5 секунд, пользователь из TikTok закроет его через 3 секунды, и вы не заработаете ни копейки.

Мы внедрили несколько агрессивных оптимизаций для Google AdSense:

  1. Асинхронная загрузка и Preload: Мы добавили <link rel="preload" href="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" as="script"> в <head>. Это заставило браузер начинать скачивание скриптов AdSense еще до рендеринга страницы.
  2. Lazy Loading для рекламы ниже сгиба (Below the fold): Мы не инициализировали рекламные блоки в подвале сайта до тех пор, пока пользователь не доскроллит до них (с помощью IntersectionObserver). Это освободило CPU смартфона для быстрой отрисовки первого экрана (Hero Section).
  3. Оптимизация CLS (Cumulative Layout Shift): TikTok-юзеры не любят, когда контент прыгает. Мы жестко зарезервировали высоту для рекламных блоков через CSS, чтобы избежать сдвигов контента при подгрузке баннеров. Это улучшило поведенческие факторы и повысило стоимость клика (CPC).

Влияние оптимизации на доход (RPM)

Доход на 1000 показов (RPM) до и после внедрения Lazy Loading и оптимизации CLS.

Инсайты и Советы (Tips & Tricks)

  • Логирование — ваш друг, но при DDoS оно вас убьет: При 10 000 RPS попытка записать каждый запрос в консоль или файл (даже в Cloud Logging) вызовет гигантские задержки и расходы. Уменьшайте уровень логирования до WARN или ERROR в продакшене.
  • Не забывайте про холодные старты: Используйте легковесные образы Docker (например, Alpine или Distroless). Чем меньше образ, тем быстрее Cloud Run поднимает новые контейнеры при скачках трафика.
  • Smart Bidding в AdSense: Включите автооптимизацию рекламы в настройках AdSense. В моменты пикового трафика алгоритмы Google быстрее подбирают релевантную рекламу, максимизируя ваш RPM (доход на тысячу показов).

Итоги: Большие цифры

За 4 часа активного вирального распространения видео мы обработали:

  • Более 200 000 уникальных посетителей.
  • Пиковая нагрузка: 12 500 запросов в секунду (RPS).
  • Аптайм (Uptime): 100%. Сайт ни разу не выдал ошибку 5xx.
  • Затраты на Cloud Run и CDN за этот вечер: около $15.
  • Доход с Google AdSense: [коммерческая тайна, но клиент обновил машину].

Этот кейс доказывает: вам не нужно покупать дорогие серверы "про запас". Правильно спроектированная Cloud-Native архитектура в Google Cloud способна переварить любой трафик из TikTok, Instagram или Reddit, заплатив только за фактически потребленные ресурсы. А быстрая загрузка гарантирует, что каждый пришедший пользователь увидит вашу рекламу и принесет вам деньги.

Рустам Шарафутдинов

Рустам Шарафутдинов

Автор инженерного блога

Эксперт в области архитектуры Google Cloud и Senior Full-Stack разработчик с более чем 15-летним опытом. Специализируется на отказоустойчивых архитектурах, оптимизации высоконагруженных проектов и интеграции AI (Vertex AI).

Экспертность: GCP, Kubernetes, Микросервисы, React, Node.js

Комментарии (0)