Масштабування веб-інфраструктури: коли навантаження зростає

Сайт починає гальмувати при 500 RPS, а сервер упирається в CPU — пора масштабуватися. Багато клієнтів приходять з проблемою: «купили потужний сервер, а навантаження не знизилося». Ми стикалися з цим не раз. Наша команда має 10+ років досвіду в масштабуванні інфраструктури сайту та реалізувала понад

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Масштабування веб-інфраструктури: коли навантаження зростає
Складний
~3-5 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1422
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1288
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    984
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1250
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    988
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1001

Сайт починає гальмувати при 500 RPS, а сервер упирається в CPU — пора масштабуватися. Багато клієнтів приходять з проблемою: «купили потужний сервер, а навантаження не знизилося». Ми стикалися з цим не раз. Наша команда має 10+ років досвіду в масштабуванні інфраструктури сайту та реалізувала понад 50 проєктів. Масштабування інфраструктури — не заміна маленького сервера великим. Це архітектурний процес: спочатку оптимізація, потім горизонтальне масштабування, потім вертикальне (якщо потрібно). Неправильний порядок призводить до витрати бюджету без вирішення проблеми. Наші сертифіковані інженери (AWS, Kubernetes) допомагають пройти цей шлях без простоїв. Гарантуємо стабільність на кожному етапі — всі зміни проходять через stage-середовище, забезпечуючи uptime 99.9%. Один із клієнтів — інтернет-магазин з трафіком 2000 RPS — після реорганізації архітектури знизив витрати на інфраструктуру на 40% при подвоєнні навантаження. Економія бюджету склала до 40% від колишніх витрат.

Як діагностувати вузькі місця?

Перш ніж масштабувати — зрозуміти, де пляшкове горлечко. Використовуємо стандартні утиліти Linux:

# CPU, I/O, memory, database, network diagnostics top -b -n 1 | head -20 iostat -x 1 5 free -m && vmstat 1 5 mysql -e "SHOW PROCESSLIST;" psql -c "SELECT pid, now()-pg_stat_activity.query_start AS duration, query FROM pg_stat_activity WHERE state != 'idle' ORDER BY duration DESC LIMIT 10;" ss -s # Load testing with k6, ab, wrk k6 run --vus 100 --duration 30s script.js ab -n 10000 -c 100 https://mysite.com/ wrk -t12 -c400 -d30s https://mysite.com/ 

Згідно з Wikipedia, горизонтальне масштабування часто є більш економічно ефективним для високонавантажених систем.

Кешування, CDN та балансування навантаження

Кешування дає найшвидший ROI. Один із проєктів — інтернет-магазин на Laravel — після налаштування Redis і Nginx fastcgi_cache знизив навантаження на БД на 80% при тих же RPS. Порівняно з використанням лише кешування nginx, комбінація Redis та FastCGI забезпечує прискорення у 5-10 разів. Ось конфігурація:

# Nginx: кешування статики та FastCGI cache для PHP location ~* \.(css|js|jpg|png|gif|ico|woff2)$ { expires 1y; add_header Cache-Control "public, immutable"; } fastcgi_cache_path /tmp/nginx-cache levels=1:2 keys_zone=MYAPP:100m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; 

Redis додатково кешує дані додатка: php artisan config:cache, route:cache, view:cache. CDN (Cloudflare, CloudFront) розвантажує сервер від статики — це основа балансування навантаження. Налаштовуємо правило: статика кешується на Edge, API — пропускається. Для цього задаємо заголовки Cache-Control в коді: const cacheControl = isStatic ? 'public, max-age=31536000' : 'no-cache';. Балансувальник (Nginx, HAProxy) розподіляє трафік між репліками додатка — основа горизонтального масштабування. Пам'ятайте: кешування nginx і CDN для сайту разом здатні знизити навантаження на сервер у 5-10 разів.

Чому варто обрати горизонтальне масштабування?

Горизонтальне масштабування (додавання реплік) у 3–5 разів ефективніше за вертикальне (апгрейд заліза) при високому навантаженні, оскільки дозволяє розподіляти трафік і забезпечує відмовостійкість. Вертикальне масштабування простіше на старті, але впирається у фізичні обмеження.

Параметр Вертикальне Горизонтальне
Вартість Одноразово висока Лінійно зростає
Відмовостійкість Низька Висока
Складність впровадження Низька Середня/висока
Межа продуктивності Апаратна Теоретично безмежна

Як оптимізувати базу даних та використовувати черги завдань?

Навіть з кешем БД — частий bottleneck. Знаходимо повільні запити через EXPLAIN ANALYZE та додаємо індекси:

EXPLAIN ANALYZE SELECT * FROM products WHERE category_id = 5 ORDER BY created_at DESC LIMIT 20; CREATE INDEX CONCURRENTLY idx_products_category_created ON products (category_id, created_at DESC); 

Connection pooling через PgBouncer знижує навантаження на БД у 2–3 рази. Також налаштовуємо пули з'єднань для додатків: pdo_mysql.default_socket та max_connections у конфігу MySQL. Оптимізація бази даних – ключ до швидкодії.

Важкі операції — розсилка листів, генерація PDF, обробка зображень — не повинні виконуватися синхронно. Використовуємо черги завдань: Laravel Queue + Redis, RQ, або RabbitMQ. Це розвантажує веб-сервер і покращує відгук. Приклад з Laravel:

dispatch(new ProcessImageJob($file)); // Фронтенд не чекає завершення — користувач отримує відповідь миттєво 

Масштабування за допомогою Kubernetes HPA

Один сервер не справляється — додаємо репліки. Kubernetes з HorizontalPodAutoscaler (HPA) автоматично масштабує кількість подів по CPU:

apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: myapp-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: myapp minReplicas: 2 maxReplicas: 20 metrics: - type: Resource resource: name: cpu target: type: Utilization averageUtilization: 70 

Поступово ділимо моноліт на мікросервіси — це основа мікросервісної архітектури:

  • API Gateway (Nginx/Kong)
  • Auth Service (stateless JWT)
  • Content Service
  • Media Service (окремий для завантаження файлів)
  • Search Service (Elasticsearch)

Важкі операції виносимо в черги: замість синхронної обробки використовуємо Laravel Queue + Redis.

Архітектура за рівнем навантаження

RPS Архітектура Орієнтовна вартість інфраструктури
До 50 1 VPS + Redis + PgBouncer Невелика
50–500 2–3 App + LB + RDS/managed DB Середня
500–5000 Kubernetes + CloudFront + ElastiCache + Aurora Висока
5000+ Багаторегіональний K8s + DynamoDB/Cassandra Дуже висока

Правило: масштабуй те, що виміряно як вузьке місце. Не масштабуй припущення.

Що входить в роботу?

Наш комплексний підхід «під ключ» включає:

  • Аудит поточної архітектури та вузьких місць (1-2 дні)
  • Налаштування кешування та CDN
  • Оптимізація БД: індекси, конфіги, пулінг
  • Контейнеризація додатка та налаштування оркестрації
  • Навантажувальне тестування до та після змін
  • Документація архітектури та інструкції для команди
  • Навчання вашої команди роботі з новою інфраструктурою
  • Підтримка після впровадження (2 тижні)

Ми також надаємо доступ до stage-середовища для тестування.

Ціни та строки

Аудит та оптимізація під навантаження (без зміни архітектури) — 1–2 тижні, вартість від 500 $. Перехід на горизонтальне масштабування — 2–6 тижнів. Вартість розраховується індивідуально після оцінки вашої системи, але економія від оптимізації зазвичай становить 30-50% від поточних витрат. Оцінимо ваш проєкт за 1 день.

Пишіть нам для отримання деталей проєкту. Наші сертифіковані інженери проаналізують вашу інфраструктуру та запропонують план. Замовте аудит інфраструктури — ми виявимо вузькі місця та розробимо план масштабування.