Тарифные планы и лимиты использования

Работа с HERE Maps API в JavaScript требует не только знания методов отображения карт, маршрутизации и геокодирования, но и понимания механизма тарификации. Большинство сервисов платформы оплачиваются по модели usage-based pricing — стоимость зависит от фактического количества выполненных запросов.

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

Например:

  • запрос геокодирования адреса — одна транзакция;
  • запрос построения маршрута — одна транзакция;
  • запрос поиска объектов — одна транзакция;
  • отдельные массовые операции могут учитывать несколько транзакций внутри одного запроса. (HERE)

Основные тарифные планы

Архитектура ценообразования HERE периодически обновляется, однако общая схема остаётся неизменной: существуют бесплатные и коммерческие уровни использования.

Типичная структура включает:

План Назначение
Free / Lite Изучение платформы, учебные проекты, прототипирование
Starter Небольшие коммерческие приложения
Growth Растущие проекты с высокой нагрузкой
Enterprise / Custom Крупные корпоративные решения

Для бесплатного использования предоставляется ежемесячная квота транзакций. После её исчерпания начинают действовать платные тарифы либо начисляется стоимость сверх лимита в зависимости от условий аккаунта. (apispine)


Бесплатный уровень использования

Бесплатный тариф предназначен для:

  • обучения;
  • тестирования API;
  • разработки прототипов;
  • небольших проектов.

Современная модель HERE предоставляет значительный объём бесплатных транзакций ежемесячно для большинства популярных сервисов платформы. Размер квоты зависит от конкретного API и может отличаться для маршрутизации, поиска объектов, отображения карт и других сервисов. (apispine)

Преимущества бесплатного уровня:

  • отсутствие первоначальных расходов;
  • доступ практически ко всем основным API;
  • возможность полноценной разработки и тестирования приложения;
  • переход на коммерческие тарифы без изменения кода приложения.

Ограничения Limited Plan

Для аккаунтов без привязанной платёжной информации действуют дополнительные ограничения.

Наиболее важные ограничения:

  • не более 1000 запросов в сутки;
  • ограничения Requests Per Second (RPS);
  • запрет некоторых коммерческих сценариев использования. (HERE)

Ограничения по RPS

RPS (Requests Per Second) определяет максимально допустимое количество запросов в секунду.

Некоторые значения:

Сервис Максимальный RPS
Geocode & Reverse Geocode 5
Discover / Search 5
Autosuggest 5
Routing 10
Public Transit 10
Vector Tiles 50
Raster Tiles 50
Matrix Routing 1
Isoline Routing 1

При превышении лимита запросы могут отклоняться сервером. (HERE)


Что происходит при превышении квоты

Когда приложение превышает разрешённый объём использования, сервер может вернуть ошибки:

HTTP 429 Too Many Requests

или

HTTP 503 Service Unavailable

Подобные ответы означают, что превышены лимиты аккаунта либо временно активировано ограничение скорости запросов. (docs.here.com)

Пример обработки ошибки:

fetch(url)
  .then(response => {
    if (response.status === 429) {
      throw new Error('Превышен лимит запросов');
    }

    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error(error);
  });

Контроль расходов в JavaScript-проектах

Одной из наиболее распространённых ошибок является выполнение одинаковых запросов при каждом движении карты или каждом вводе символа в поисковую строку.

Неправильный подход:

input.addEventListener('input', () => {
  searchPlaces(input.value);
});

Каждый символ вызывает новый запрос.

Лучше использовать debounce:

let timer;

input.addEventListener('input', () => {
  clearTimeout(timer);

  timer = setTimeout(() => {
    searchPlaces(input.value);
  }, 500);
});

Так количество транзакций может уменьшиться в несколько раз.


Кэширование результатов

Кэширование позволяет существенно сократить расходы.

Пример:

const cache = new Map();

async function geocode(address) {
  if (cache.has(address)) {
    return cache.get(address);
  }

  const response = await fetch(
    `https://geocode.search.hereapi.com/v1/geocode?q=${address}&apiKey=${API_KEY}`
  );

  const data = await response.json();

  cache.set(address, data);

  return data;
}

Преимущества:

  • меньше обращений к API;
  • более быстрая работа интерфейса;
  • снижение затрат.

Лимиты картографических запросов

Особое внимание следует уделять сервисам отображения карт.

При использовании:

const platform = new H.service.Platform({
  apikey: API_KEY
});

загрузка тайлов карты также учитывается в системе тарификации.

На расход влияют:

  • количество пользователей;
  • частота перемещения карты;
  • уровень масштабирования;
  • использование спутниковых слоёв;
  • количество загружаемых тайлов. (API Price Tracker)

Лимиты маршрутизации

Сервисы маршрутизации обычно потребляют больше ресурсов платформы, чем обычное отображение карты.

Пример запроса:

const router = platform.getRoutingService();

router.calculateRoute(
  routingParameters,
  result => {
    console.log(result);
  },
  error => {
    console.error(error);
  }
);

При проектировании логистических систем следует учитывать:

  • количество строящихся маршрутов;
  • число промежуточных точек;
  • частоту перерасчёта;
  • использование Matrix Routing;
  • использование Isoline Routing.

Для некоторых специализированных сервисов бесплатные квоты существенно ниже, чем для обычной маршрутизации. (API Price Tracker)


Ограничения для корпоративных сценариев

Некоторые сценарии использования исключены из базовых и ограниченных тарифов.

К ним относятся:

  • системы управления автопарком;
  • мониторинг транспорта в реальном времени;
  • отслеживание активов;
  • специализированные аналитические решения;
  • расширенные системы предупреждения водителей. (HERE)

Для подобных проектов обычно требуется отдельный коммерческий договор с HERE.


Мониторинг использования

Контроль потребления API является обязательной частью эксплуатации приложения.

Рекомендуется регулярно отслеживать:

  • количество транзакций;
  • наиболее затратные API;
  • суточное потребление;
  • пиковые нагрузки;
  • превышения лимитов.

Мониторинг позволяет своевременно обнаружить:

  • ошибки в коде;
  • циклические запросы;
  • злоупотребление API;
  • резкий рост аудитории.

Стратегии оптимизации расходов

Объединение запросов

Вместо серии одинаковых обращений предпочтительно выполнять один запрос и переиспользовать результат.

Ленивая загрузка данных

Загрузка информации только при необходимости:

map.addEventListener('mapviewchangeend', loadVisibleObjects);

Ограничение частоты запросов

Для поисковых сервисов желательно использовать:

  • debounce;
  • throttle;
  • локальное кэширование.

Предварительные вычисления

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


Планирование нагрузки

Перед запуском проекта полезно оценить предполагаемый объём транзакций.

Пример расчёта:

  • 500 пользователей в день;
  • 5 поисковых запросов на пользователя;
  • 3 маршрута на пользователя.

Получаем:

500 × (5 + 3) = 4000 транзакций в день

За месяц:

4000 × 30 = 120000 транзакций

Такие расчёты помогают определить, достаточно ли бесплатного уровня или потребуется переход на коммерческий тариф.


Практические рекомендации

Для учебных проектов:

  • использовать бесплатный тариф;
  • контролировать количество запросов;
  • активно применять кэширование.

Для стартапов:

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

Для корпоративных решений:

  • проводить нагрузочное тестирование;
  • анализировать RPS;
  • согласовывать корпоративные квоты с HERE;
  • учитывать требования SLA и масштабируемости. (docs.here.com)

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