Настройка балансировки нагрузки бэкенда мобильного приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Настройка балансировки нагрузки бэкенда мобильного приложения
Средний
~2-3 дня
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Настройка балансировки нагрузки бэкенда мобильного приложения

Балансировщик нагрузки — не просто «раздать запросы по двум серверам». Неправильная настройка сессий, sticky sessions или healthcheck'ов приводит к тому, что пользователь получает 401 Unauthorized после успешного логина, потому что запрос попал на другой инстанс.

Где конкретно ломается без правильной балансировки

Мобильный клиент логинится, получает JWT. Следующий запрос попадает на другой под — если токены в памяти, а не в Redis, пользователь разлогинен. Это реальный сценарий при stateful-сессиях без централизованного хранилища.

Другая проблема: WebSocket-соединения. Долгое соединение для чата или live-трекинга должно всегда попадать на один и тот же под. Если балансировщик разорвёт WebSocket при деплое нового пода — все активные соединения упадут одновременно.

Конфигурация под мобильный трафик

L7 балансировка (HTTP/HTTPS). Для большинства REST API — достаточно. Nginx, HAProxy, AWS ALB, Google Cloud Load Balancing. Алгоритм — Round Robin для stateless сервисов, Least Connections если есть тяжёлые запросы (загрузка файлов, сложные агрегаты).

Sticky sessions — избегать. Привязка пользователя к поду через SERVERID cookie или IP hash — это потеря горизонтальной масштабируемости. Если под упал, пользователь отвалился. Правильнее: stateless сервис + JWT + Redis для shared state.

WebSocket. Nginx: proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";. AWS ALB поддерживает WebSocket нативно. Timeout для WebSocket-соединений — выставить явно (proxy_read_timeout 3600s), иначе Nginx закроет idle-соединение через 60 секунд.

Health check. Не GET / — там может быть HTML страница «сервис запущен», но не значит что БД доступна. Отдельный endpoint /health/ready: проверяет коннект к БД, Redis, внешним зависимостям. Балансировщик исключает под из ротации при двух последовательных ошибках, возвращает при двух успешах.

Kubernetes Ingress как балансировщик

В Kubernetes-среде балансировка происходит на уровне Service (kube-proxy, iptables / IPVS) + Ingress-контроллер для внешнего трафика. Ingress-NGINX — стандарт де-факто: поддерживает WebSocket, rate limiting через nginx.ingress.kubernetes.io/limit-rps аннотацию, upstream hashing для нужных эндпоинтов.

IPVS-режим kube-proxy вместо iptables: при 1000+ сервисов iptables-правила становятся линейными по времени обработки, IPVS — O(1). Включается через --proxy-mode=ipvs в kube-proxy ConfigMap.

Кейс: мобильное приложение для доставки, пиковая нагрузка 8000 rps в обеденное время. Один инстанс бэкенда — 80% CPU в пик. Добавили балансировку на 3 пода через AWS ALB, настроили /api/health/ready с проверкой PostgreSQL-коннекта. После первого же деплоя без балансировщика: 20 секунд downtime (старый под убили, новый ещё не прошёл health check). После настройки minReadySeconds: 30 и rolling update стратегии с maxUnavailable: 0 — нулевой downtime на следующих 50+ деплоях.

Сроки: базовая настройка Nginx/HAProxy балансировки с health check — 1–2 дня. Полноценная Kubernetes Ingress конфигурация с mTLS, rate limiting, zero-downtime deploys — 1–2 недели.