Инженерлік блог

TikTok-цунами: Cloud Run арқылы бір кеште 200 000 пайдаланушыны қалай қабылдап, 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 қосып қоюдың (және оларға ғарыштық ақша төлеудің) қажеті жоқ. Оның орнына біз Google Cloud өнімдеріне негізделген толықтай серверсіз (Serverless) архитектура құрдық.

1. Кіру есігі: Cloud CDN + Load Balancer

Трафик толқынын ең бірінші болып қарсы алған — Cloud CDN қосылған Google Cloud Load Balancer. Біз желінің шетінде (Edge) агрессивті кэштеуді баптадық. Барлық суреттер, CSS, JS және статикалық HTML-дің бір бөлігі пайдаланушыларға ең жақын орналасқан Google серверлерінің кэшінен берілді.

Кеңес: Міндетті түрде Cache-Control тақырыптарын (headers) баптаңыз. Статика үшін 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 параметрін қолданамыз. Ол іске қосылу кезінде (cold start) контейнерлерге көбірек CPU беріп, іске қосылу уақытын 50%-ға қысқартады. Ал --concurrency 80 бір контейнерге 80 параллель сұрауды өңдеуге мүмкіндік береді.

Деректер базасын (PostgreSQL) қалай сақтап қалдық?

Cloud Run-да жиі кездесетін мәселе: инстанстар күрт көбейген кезде олар деректер базасына жүздеген байланыс ашып, пул шегін (Connection Pooling) сарқып алады да, база құлайды. Бұған жол бермеу үшін біз Cloud SQL Proxy және сыртқы қосылымдар пулы PgBouncer-ді пайдаландық.

Сонымен қатар, біз барлық ауыр сұрауларды (мысалы, лайктарды санау немесе үздік мақалаларды шығару) Redis (Memorystore)-де кэштедік. Деректер базасы TikTok-цунамиді мүлдем сезген жоқ, өйткені деректердің 95%-ы жадыдан (memory) берілді.

TikTok-вирус кезіндегі инфрақұрылымға түскен жүктеме

Кіріс трафигі (RPS) мен Cloud Run белсенді инстанстарының санын салыстыру.

Монетизация: Google AdSense-тегі рекордтық чек

Трафикті көтере білу — бұл жұмыстың жартысы ғана. Екінші жартысы — одан ақша табу. Көптеген сайттар трафик ағылған кезде жарнама блоктарының да жылдам жүктелуі керек екенін ұмытып кетеді. Егер сайтыңыз 5 секунд жүктелсе, TikTok пайдаланушысы оны 3 секундтан кейін жауып тастайды да, сіз көк тиын да таппайсыз.

Біз Google AdSense үшін бірнеше агрессивті оңтайландыру енгіздік:

  1. Асинхронды жүктеу және Preload: Біз <head> бөліміне <link rel="preload" href="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" as="script"> қостық. Бұл браузерді парақша рендерленбес бұрын AdSense скрипттерін жүктеп алуға мәжбүрледі.
  2. Көрінбейтін бөліктегі жарнамаға арналған Lazy Loading: Біз сайттың жертөлесіндегі (footer) жарнама блоктарын пайдаланушы сол жерге дейін скроллдамайынша (IntersectionObserver арқылы) инициализацияламадық. Бұл смартфонның CPU-ын алғашқы экранды (Hero Section) жылдам салу үшін босатты.
  3. CLS (Cumulative Layout Shift) оңтайландыру: TikTok пайдаланушылары контенттің секіргенін ұнатпайды. Жарнама баннерлері жүктелгенде контент ығысып кетпеуі үшін CSS арқылы жарнама блоктарының биіктігін қатаң белгілеп қойдық. Бұл мінез-құлық факторларын жақсартып, клик құнын (CPC) арттырды.

Оңтайландырудың табысқа (RPM) әсері

Lazy Loading және CLS оңтайландыруға дейінгі және одан кейінгі 1000 көрсетілім үшін табыс (RPM).

Инсайттар және Кеңестер (Tips & Tricks)

  • Логирование (журналға жазу) — сіздің досыңыз, бірақ DDoS кезінде ол сізді өлтіреді: 10 000 RPS кезінде әрбір сұрауды консольге немесе файлға (тіпті Cloud Logging-ке) жазу өте үлкен кідірістер мен шығындарға әкеледі. Продакшенде логирование деңгейін WARN немесе ERROR-ға дейін төмендетіңіз.
  • Cold Start (салқын старт) туралы ұмытпаңыз: Жеңіл Docker образдарын (мысалы, Alpine немесе Distroless) пайдаланыңыз. Образ неғұрлым кіші болса, трафик секірген кезде Cloud Run жаңа контейнерлерді соғұрлым тез көтереді.
  • AdSense-тегі Smart Bidding: AdSense параметрлерінде жарнаманы авто-оңтайландыруды қосыңыз. Ең жоғары трафик кезінде Google алгоритмдері RPM-ді (мың көрсетілім үшін табыс) барынша арттыра отырып, релевантты жарнаманы жылдам таңдайды.

Қорытынды: Үлкен сандар

Видеоның вирустық таралуының 4 сағаты ішінде біз мыналарды өңдедік:

  • 200 000-нан астам уникалды келушілер.
  • Ең жоғары жүктеме: секундына 12 500 сұрау (RPS).
  • Аптайм (Uptime): 100%. Сайт бірде-бір рет 5xx қатесін берген жоқ.
  • Осы кештегі Cloud Run және CDN шығындары: шамамен $15.
  • Google AdSense-тен түскен табыс: [коммерциялық құпия, бірақ клиент көлігін жаңартты].

Бұл кейс мынаны дәлелдейді: сізге алдын ала "керек болып қалар" деп қымбат серверлер сатып алудың қажеті жоқ. Google Cloud-та дұрыс жобаланған Cloud-Native архитектурасы TikTok, Instagram немесе Reddit-тен келетін кез келген трафикті қорыта алады, және сіз тек нақты жұмсалған ресурстар үшін ғана төлейсіз. Ал жылдам жүктелу әрбір келген пайдаланушының жарнаманы көріп, сізге ақша әкелуіне кепілдік береді.

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

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

Инженерлік блог авторы

Google Cloud архитектурасы саласындағы сарапшы және 15 жылдан астам тәжірибесі бар Senior Full-Stack әзірлеушісі. Ақауға төзімді архитектураларға, жоғары жүктемелі жобаларды оңтайландыруға және AI (Vertex AI) интеграциясына маманданған.

Сараптама: GCP, Kubernetes, Микросервистер, React, Node.js

Пікірлер (0)