Хмарна інфраструктура для високого навантаження: кейси платформ розваг

Ніч піку

22:07. Прем’єра серіалу. Кнопка «Play» — і крива трафіку злітає. За хвилину — ще ×8. Система живе на кеші. У черзі — тисячі запитів. Першими стогнуть сесії та пошук. Через три хвилини доїдає ліміти API платежів. Якщо нема плану, усе лягає каскадом.

Картина схожа у ставках на топ‑матч. Кожна секунда — гроші. Затримка у 300 мс — і ставка вже не та. Без ідемпотентних подій і жорстких лімітів хаос росте. У соціальному лайві інша пастка: тисячі мікро‑подій (лайки, подарунки) душать бекенд метриками високої кардинальності.

Цей текст — для CTO, CPO, SRE та архітекторів, які готують платформи розваг до піку. Будуть реальні патерни, антипатерни, цифри, таблиця, і 90‑денний план.

Що тепер означає «високонавантажена розвага»

Профіль трафіку не рівний. Він «б’є хвилями». Є короткий бурст ×10–×20 на 10–20 хв. Є плато на 2–3 години. Є довга «коса» фонового трафіку. Користувачі приходять з усього світу. Кеш рятує, але не вічно. Балансер має бачити гео і здоров’я сервісів.

Цілі прості на словах, жорсткі на ділі: P95 до 150–250 мс у регіоні, P99 до 400–600 мс; 99.9–99.99% доступності; чіткий бюджет помилок. Це класика підходу SRE і роботи зі SLO — докладно описано у книзі Google про SRE: підхід SRE та SLO.

Сучасна платформа — це CDN/edge, глобальний балансер, мультірегіон, Kubernetes з автоскейлом, події (Kafka), кілька шарів кешу, фінансові сервіси з точною послідовністю. Поради по внутрішній інженерії добре зібрані у AWS Builders Library.

Три кейси, де все вирішують мілісекунди

1) Відеострімінг під прем’єру

Бурст трафіку — ×10–×20 за хвилини. Рятує CDN. Прогрівати edge до старту. Відео йде адаптивно (ABR). Вміст кешується близько до глядача. Початковий маніфест і ключі DRM — у гарячому кеші. Бекенд бачить тільки auth і нетипові запити.

Перед стартом — «суха репетиція» з синтетичним трафіком. Якщо P95 росте — збільшуємо warm‑pool нод, готуємо rate‑limits на API. Досвід гігантів добре описує Netflix TechBlog. Ключ: менше стани на бекенді, більше на клієнті та в edge.

2) Гемблінг/беттінг під великий матч

Критично мало затримки в оновленні коефіцієнтів. Події з полів ідуть у Kafka. Прайсинг — окремо. Ставка — транзакція з ідемпотентним ключем. Схема «exactly‑once» для грошей. Будь‑який повтор — не має подвоювати виплату. Антиботи фільтрують спайки, WAF ріже «пилососи». Сесії тримати не липкими; стан — у Redis або подіях.

Тут маркетинг іде хвилями. Юзери одночасно шукають, де грати. Часто вони відкривають огляди та порівняння. Саме в такі хвилини корисно мати прогріті промо‑сторінки і ввімкнений тротлінг на «важкі» блоки. Якщо ви даєте довідку про ліцензії та ліміти гри, дайте її поруч. Для прикладу, огляди й освітні матеріали є на ebgt.info (азартні ігри — 21+, грайте відповідально). Це не про заклик, а про прозору інформацію для дорослих користувачів.

3) Соціальний геймінг і лайв‑івенти

Тут болить не одне велике відео, а тисячі дрібних подій: подарунки, реакції, чати. Вони створюють шквал запитів до бекенду та баз моніторингу. Краще збирати їх у черги та батчити. На edge можна ставити «кімнату очікування» для великих прем’єр — як у Cloudflare Waiting Room. Так ви тримаєте досвід стабільним під час бурсту.

Швидкий вибір архітектури під пік

Немає однієї схеми «на всі випадки». Нижче — карта, яка допоможе зорієнтуватись за 5 хвилин. Перед читанням перевірте ваші граничні SLO і ліміти провайдерів.

Стрімінг прем’єри ×10–×20 на 10–20 хв; глобально 150–250 мс / 400–600 мс CDN/edge, глобальний LB, K8s Статус у клієнті; мінімум стану HPA + warm‑pool; rate limits TTL 60–120 с; прогрів; маніфести в кеші Error budget, saturation, 5xx Холодний кеш; API‑квоти DRM GDPR, антиботи, WAF CDN offload, reserved інстанси
Лайв‑беттінг ×5–×12 під час матчу; регіонально 80–150 мс / 250–400 мс Kafka, Redis, мультірегіон Event‑sourcing; ідемпотентність Karpenter/HPA; жорсткий тротлінг Короткий TTL; інвалідація за подією P50/P95 латентність, queue lag Дубль ставок; ліміти платіжних API PCI DSS, KYC/AML, WAF Кеш коефіцієнтів, storage class
Лайв‑івент/соціальний ×3–×8 бурсти; спалахи дрібних подій 120–200 мс / 350–500 мс Edge фільтри, черги, LB Агрегація, батчинг Backpressure; квоти на події Кеш API‑відповідей 30–60 с Cardinality метрик, RPS High‑cardinality; DDoS шар GDPR, SOC 2 Cloud‑сейвінг плани, CDN

Щоб автоскейл не «запізнювався», перегляньте HPA в Kubernetes. Для потоків грошей корисні «exactly‑once» підходи у Kafka — дивіться розбір від Confluent: як Kafka робить exactly‑once.

Антипатерни, що ламають пік

  • Один регіон на все. Будь‑яка аварія — і ви в офлайні. Рішення: active‑active у щонайменше двох регіонах, глобальний балансер. База — з реплікацією, а читання — ближче до юзера. Базові патерни балансування тут: що таке load balancing.
  • Приховані квоти провайдера. RPS, конекшени, IP‑репутація. Вони «б’ють» у найгірший момент. Майте табличку з усіма лімітами й контакти підтримки.
  • Висококардинальні метрики. Коли лейбли вибухають, моніторинг сам стає проблемою. Чим менше унікальних тегів — тим краще. Пояснення від Datadog: ризики high‑cardinality.
  • Sticky‑сесії без шардінгу стану. Один под — і трафік «прилипає». Краще зберігати стан поза подом (Redis/події) і дозволити вільне балансування.

Коробочка інженера: що справді працює

  • Edge і CDN. Прогріти гарячі маршрути. Статичні й напівдинамічні блоки — на edge. Керуйте TTL і варіантами кешу. Гарне джерело практик — блог Akamai: продуктивність і edge.
  • Глобальний балансер + мультірегіон active‑active. Тримайте стійкість до збою регіону й латентність ближче до юзера. Приклад реалізації від Cloudflare: Cloudflare Load Balancing.
  • Подійна шина. Kafka для потоків ставок, подій глядачів, нотифікацій. Ідемпотентні ключі, дедуплікація, отруйні черги — це must. Офіційні гіди тут: документація Apache Kafka.
  • Кеш‑шари. Redis як гарячий кеш, короткі TTL, інвалідація за подією. Продумані ключі: версія, локаль, user tier. Практики від спільноти Redis: як будувати кеш.
  • Автоскейл з теплим резервом. Мін/макс для HPA, warm‑pool для нод, Karpenter для швидкого підйому. Backpressure і rate‑limits як запобіжник лавини.
  • Спостережуваність. RED/GOLDEN сигнали, трейсинг, профайлінг. eBPF дає глибокий погляд без великого оверхеду — див. гайд від Grafana Labs: що таке eBPF.
  • IаC і швидкі розгортання. Terraform як стандарт, окремі стеки для регіонів. Один клік — і у вас ще один регіон. Документація: Terraform docs.
  • Edge‑обчислення для легких правил. Прості фільтри й перепис URL на edge, щоб не вантажити бек. Див. також Fastly Compute@Edge.
  • CDN прогрітий; гарячі маніфести в кеші.
  • HPA має мін/макс; warm‑pool увімкнено.
  • Rate‑limits і квоти API перевірені.
  • WAF/бот‑політики оновлені.
  • Дашборди P95/P99, saturation, queue lag — на екрані.
  • Черги подій мають запас на X хвилин.

Безпека і відповідність: не лише галочки

Автоматизовані загрози ростуть у пік. Скрейпери, боти, карт‑тестинг. Почніть із WAF і керування ботами. Список типових атак — у OWASP Automated Threats. Далі — сегментація, принцип найменших прав, секрети у менеджері секретів.

Комплаєнс — це стримувач хаосу. PCI DSS 4.0 для карткових даних: офіційні матеріали PCI. Для персональних даних — GDPR. Для довіри партнерів — SOC 2 та ISO 27001. Для хмари — матриця контролів CSA CCM.

Для гемблінгу діють KYC/AML і вікові обмеження. Будьте чіткі: 21+ в Україні. Додайте блок «відповідальна гра». Якщо на довідковій сторінці є перелік ліцензій і політик, посилайтеся на нього поруч із промо. Прикладом може бути нейтральна довідка на ebgt.info (без агресивних закликів).

Вартість без міфів: короткий FinOps

80% економії дає просте: більше кешу на edge, правильний storage class, підбір типів інстансів. CDN offload інколи знімає 40–70% трафіку з бекенду. Те, що не потрібно в реальному часі, відправляйте у черги.

Бюджет має слухати SLO. Якщо SLO по P95 — 200 мс, не варто платити за 100 мс, якщо це не дає бізнес‑вигоди. Вимірюйте вартість на запит, на хвилину відео, на ставку. Культура й інструменти — на FinOps Foundation.

Обережно з «знижками». Reserved/Savings плани — лише для стабільних сервісів. Для піків — спот/авто підйом і падіння. Логи та метрики — з ретенцією за класами.

Дорожня карта на 90 днів

Дні 0–30: побачити вузькі місця

  • Аудит SLO і бюджетів помилок. Випишіть «де болить». Звірте ліміти API та квоти постачальників.
  • Політика кешу: TTL, прогрів, інвалідація. Пронумеруйте гарячі маршрути.
  • Rate‑limits і backpressure. Додайте захист на рівні edge і бекенду.

Дні 31–60: включити масштаб

  • Пілот мультірегіону з глобальним балансером. Перевірка фейловеру.
  • Критичні потоки переводимо на події. Ідемпотентність, ключі, дедуплікація.
  • HPA/Karpenter з warm‑pool. Тест бурстів у нічний час.

Дні 61–90: зробити стійким

  • Chaos‑ігри: вимкніть регіон, ланку мережі, брокер подій. Міряйте P95/P99.
  • Тюнінг трейсингу, метрик, алертів. Приберіть висококардинальні теги.
  • Закрийте комплаєнс‑прогалини. Оновіть політики, навчіть команду. На додачу — перегляньте референс‑каркаси: Google Cloud Architecture Framework та Azure Well‑Architected.

FAQ: п’ять коротких відповідей

Чим HPA відрізняється від Karpenter? HPA масштабує поди за метриками. Karpenter — ноди під ваші поди. Разом вони швидше ловлять бурст.

Active‑active чи active‑passive? Для критичних піків — active‑active. Дорожче, але швидше. Для другорядних сервісів — active‑passive з чітким RTO/RPO.

Як планувати пік + DDoS? Edge‑фільтри, WAF, бот‑менеджмент, квоти. Залишайте запас у CDN і балансері. Прогрівайте кеш до старту.

Що робити з холодним стартом функцій? Тримайте «теплі» екземпляри на пікових маршрутах. Критичну логіку — у довгоживучих сервісах, не у функціях.

Моніторинг з’їв бюджет? Зменшити кардинальність, обрізати ретенцію, зберігати сирі логи в холодному сховищі, робити семплінг трейсів.

Міні‑постмортем: як ми «врятували» реліз

Було: бекенд витримував до 15 тис. RPS, P99 — 900 мс у бурсті. Каса впиралась у 1 000 req/s на под, HPA розганявся запізно, кеш на edge — холодний.

Що зробили за тиждень: прогріли CDN, TTL маніфестів — 120 с, ввели warm‑pool на 20% кластера, додали ключі ідемпотентності, в Kafka поставили батчі. У платіжного провайдера підняли квоти на 3 години. Вимкнули 5 висококардинальних лейблів.

Стало: той самий бурст — P95 170 мс, P99 430 мс. Каса — без черг. 5xx — мінус 72%. Вартість на запит — мінус 28% завдяки CDN offload.

Польові нотатки наостанок

  • Тестуйте піки у нічний час із синтетикою. Тільки так видно реальні квоти.
  • Вимірюйте все, але бережіть метрики від «кардинальності заради кардинальності».
  • Документація має жити. Оновлюйте «плейбуки піку» перед кожною великою подією.
  • Не штовхайте всі запити у бекенд. Edge і кеш — перша лінія оборони.
  • Гроші люблять ідемпотентність. Ставка має бути або одна, або нуль.

Автор: Інженер з хмари та SRE. 8+ років у стрімінгу, гемблінгу, соціальних івентах. Сертифікації: AWS, GCP, Kubernetes.

Оновлено: 05/2026

У тексті є посилання на сторонні ресурси: Netflix TechBlog, AWS Builders Library, книга SRE та інші. Партнерські/афілійовані — позначені як nofollow/sponsored. Для азартних ігор діє правило 21+, грайте відповідально.