«Next Train»: как устроена архитектура приложения с реальным временем

«Next Train»: как устроена архитектура приложения с реальным временем

Май 25, 2026 real-time-data geospatial-databases backend-architecture api-design redis-caching location-services transportation-tech system-design

Технологии под капотом: как работают приложения с реальным временем

Вы стоите на платформе и ждёте поезд. Открываете приложение — и сразу видите, через сколько минут подойдёт состав. Кажется, что это просто. На деле за каждым обновлением стоит сложная система, которая обрабатывает данные о тысячах объектов одновременно.

Проблема: данные меняются каждую секунду

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

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

Определение местоположения

Сначала приложение должно понять, где находится пользователь. GPS-координаты сами по себе не дают ответа — нужно сопоставить их с реальными объектами: станциями, остановками, зонами.

Для этого используют:

  • Обратное геокодирование — преобразование координат в названия
  • Поиск ближайших объектов в заданном радиусе
  • Кеширование результатов, чтобы не повторять одни и те же запросы

Пространственные индексы (GeoHash, QuadTree) помогают быстро находить нужные объекты. Вместо перебора всех станций в городе система проверяет только те, что попадают в нужный сектор карты.

Два типа данных: статические и динамические

В таких приложениях всегда есть два слоя информации. Первый — это то, что почти не меняется: расположение станций, маршруты, базовое расписание. Второй — то, что обновляется постоянно: текущие задержки, фактическое положение транспорта, изменения на платформах.

Статические данные можно хранить в PostgreSQL и кешировать на дни или недели. Динамические — в Redis, чтобы получать доступ к ним за миллисекунды. Изменения в расписании обычно передают через очереди сообщений (Kafka, RabbitMQ), чтобы все сервисы получали обновления в одном потоке.

Экономия трафика на мобильных устройствах

Отправлять всё и сразу — плохая идея. Пользователи в метро, где связь нестабильная, быстро заметят тормоза и большой расход данных.

Поэтому разработчики используют:

  • Передачу только изменений с момента последнего запроса
  • Компактные форматы вроде Protocol Buffers вместо JSON
  • Фильтры, которые позволяют клиенту запрашивать только нужные данные
  • Кеширование на уровне CDN в пределах региона

WebSocket — не всегда лучшее решение

Многие думают, что для живых обновлений нужен WebSocket. На практике это не всегда оправдано. Если пользователь просто ищет ближайший поезд, достаточно опрашивать сервер раз в 5–10 секунд. Это проще и экономичнее.

WebSocket имеет смысл подключать, когда пользователь следит за конкретным маршрутом или хочет мгновенно получать уведомления о сбоях.

Надёжность и отказоустойчивость

Приложения, от которых зависят люди, не должны падать. Поэтому архитектуру строят с запасом:

  • Несколько дата-центров в разных регионах
  • Возможность показывать кешированные данные, если основной источник недоступен
  • Ограничение частоты запросов от одного клиента
  • Мониторинг, который предупреждает о проблемах до того, как их заметят пользователи

Где ещё нужны такие же решения

Похожие задачи решают не только транспортные сервисы. Системы складского учёта, приложения каршеринга, IoT-платформы — везде есть сочетание статичных и быстро меняющихся данных, а также необходимость быстро находить объекты по координатам.

Как это связано с доменами и хостингом

Если вы строите сервис с реал-тайм обновлениями, инфраструктура должна быть готова к нагрузке. Домен должен быть коротким и запоминающимся. DNS — настроен для быстрого переключения между регионами. SSL не должен добавлять задержки. А хостинг — поддерживать работу с Redis, Kafka и географическим кешированием.

NameOcean помогает подобрать подходящий домен и настроить инфраструктуру под такие задачи. У нас есть готовые решения для проектов, где важны скорость отклика и надёжность.

Read in other languages:

BG EL CS UZ TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN