Как мы снизили расходы на геокодинг в 10 раз 🫰
Ситуация
Запустили в приложении сервис, который определяет текущий город по координатам устройства и выполняет определённые действия. Нет, это не про погоду.
Сервис работал пару недель, мы изучили статистику и были в шоке. При 700 активных пользователях в день генерировалось около 12 000 запросов на геокодинг. Это обошлось нам в несколько сотен долларов. На этапе MVP такое решение допустимо, но при масштабировании до 10 000 пользователей расходы стали бы неподъёмными. При этом значительное количество запросов можно оптимизировать.
Что мы сделали для оптимизации:
◽️Округление координат до 2 знаков после запятой
Это позволило группировать близкие запросы. Точность снизилась до ±1 км, но для определения города этого вполне достаточно.
◽️Исключение повторных запросов
Если округлённое значение координат не изменилось, новый запрос не отправляется.
◽️Кэширование ответов API
Город, соответствующий одной и той же координате, не меняется. Кэш позволил избежать лишних повторных запросов.
◽️Использование кэшированных данных
Если ответ уже есть в кэше, он отправляется пользователю без нового запроса к API.
Дальнейшие шаги:
На втором этапе мы планируем переход на более дешёвые сервисы обратного геокодинга. Это позволит ещё больше сократить расходы, хотя потребуется проверить качество выдачи на этапе аналитики.
Альтернативные решения:
Nominatim — опенсорс-решение.
Radar.com — утверждают, что качество не уступает Google, но стоимость в 10 раз ниже.
Результаты
После внедрения всех мер расходы на геокодинг снизились примерно в 10 раз. Наша цель — добиться расхода в 1–10 запросов на одного пользователя за всё время его активности.
Post #285
286

- 🔥 9
- 👍 2
- ❤ 1
- 🤝 1