SiteLab

Кейс data-driven сервиса

Гелиошторм: быстрый сервис прогноза магнитных бурь и солнечной активности

Собрали продукт, который превращает поток данных космической погоды в понятный пользовательский прогноз: текущий Kp-индекс, временная шкала, оценка риска для города и уведомления об изменениях.

Next.js 16PostgreSQLISRTag invalidationWeb PushReal-time data
Интерфейс сервиса Гелиошторм с прогнозом магнитных бурь
~95%снижение обращений к БД после перехода на ISR-кэш
real-timeтекущий Kp-индекс и обновляемый прогноз
городперсонализация прогноза под местоположение
web-pushуведомления без постоянного открытия сайта

Исходная задача

Проблема сложнее одного экрана

Данные меняются регулярно, но большинство просмотров не требуют отдельного запроса к базе для каждого пользователя. При прямом серверном рендеринге популярные страницы создавали повторяющуюся нагрузку, хотя посетителям в один момент нужен один и тот же актуальный срез.

Сохранить актуальность прогноза и персонализацию, но отдавать основную страницу как быстрый готовый результат. Обновление данных должно инвалидировать нужный кэш, а не заставлять систему пересчитывать всё на каждом открытии.

Ключевые решения

Что сделали и почему именно так

01

Разделили данные и представление

Сырые показатели обрабатываются отдельно, а интерфейс получает подготовленную модель: текущее состояние, прогноз и понятное объяснение.

02

ISR вместо постоянного SSR

Популярные страницы отдаются из кэша. После обновления источника инвалидируются только связанные теги.

03

Персонализация без тяжёлой страницы

Город и пользовательские настройки дополняют базовый прогноз, не превращая весь экран в дорогой запрос.

04

Уведомление как часть продукта

Web-push возвращает пользователя при значимом изменении, поэтому ему не нужно вручную проверять сервис.

Рабочий процесс

Как проходит данные или заказ

  1. 01Получение данныхФоновые процессы забирают и нормализуют актуальные показатели космической погоды.
  2. 02Расчёт состоянияСервис формирует текущий индекс, временной прогноз и пользовательское объяснение.
  3. 03Точечное обновлениеПосле записи нового среза сбрасываются только соответствующие ISR-теги.
  4. 04Доставка пользователюСтраница открывается быстро, а значимые события могут отправляться через web-push.
Вход

данные солнечной активности и Kp-индекса

Хранение

нормализованные срезы и прогнозы в PostgreSQL

Отдача

Next.js 16 и ISR с tag-инвалидацией

Возврат

персонализация по городу и web-push

Не обещания, а проверка

Чем подтверждается результат

Публичный real-time продукт

Текущий индекс, прогноз и городская персонализация доступны на работающем сервисе.

Нагрузка измерена

После кэширования количество обращений к базе для публичных страниц снизилось примерно на 95%.

Обновление остаётся управляемым

Tag-инвалидация позволяет обновлять нужные данные без полного сброса кэша.

Итог

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

Границы решения

Что система намеренно не обещает

  • —Сервис интерпретирует данные космической погоды, но не заменяет медицинскую консультацию.
  • —Точность пользовательского прогноза ограничена качеством и горизонтом исходных данных.
  • —Кэш ускоряет выдачу, но обновляется только после успешного получения нового среза.

Частые вопросы

Почему не обновлять страницу напрямую из базы?

Публичный прогноз одинаков для большого числа посетителей. ISR позволяет один раз подготовить страницу и обновить её после изменения данных.

Кэш не показывает устаревший прогноз?

После записи нового среза приложение инвалидирует связанные теги. Следующая версия страницы строится на обновлённых данных.

Можно ли применить такую архитектуру к другому сервису?

Да, если данные обновляются периодически, а читаются значительно чаще: курсы, остатки, расписания, рейтинги и аналитические панели.

Готовы начать?

Расскажите, какой цифровой продукт нужен бизнесу.

Для первого ответа хватит нескольких предложений: что работает сейчас и какой результат нужен.

info@sitelab.by

Обсудить задачу

Выберите удобный способ связи

Ответим на вопросы, предложим первый план и сориентируем по срокам и бюджету.