Как мы сэкономили минимум 620 000 рублей в год на добавлении Яндекс Карт на сайт одного из наших проектов?
Кейс нашей компании о том, как мы предотвратили ежегодные расходы в размере от 620 000 до 5 064 000 рублей на внедрении на наш сайт Яндекс Карт. Подробно рассказываем, как действовали, что придумали и довольны ли результатом.
В наш проект KVIK – сервис для размещения объявлений – необходимо было интегрировать карту. Нам нужно было, чтобы продавец мог отмечать на карте своё географическое местоположение. Это бы сделало взаимодействие покупателя с сайтом гораздо удобнее: он бы мог увидеть, где именно находится составитель объявления. После бурных обсуждений для нашего сервиса было решено выбрать Яндекс Карты.
Для достижения цели из пяти продуктов API Яндекс Карт нам требовались лишь JavaScript API и Геокодер. Первый из них необходим для того, чтобы встроить Яндекс Карты на сайт, а второй – для того, чтобы определять координаты географических объектов по адресу, и наоборот.
Яндекс предлагает бесплатное пользование своими продуктами API, но с определёнными условиями:
1. API должен использоваться только в проектах с открытым доступом
2. Нельзя использовать API в коммерческих проектах
3. Данные, полученные средствами API, должны быть показаны на карте Яндекса
4. Запрещается сохранять или изменять данные, полученные средствами API
5. Запрещается скрывать и видоизменять копирайты и логотип Яндекса на карте
6. Нельзя использовать API для мониторинга и диспетчеризации
7. Нельзя превышать суточный лимит запросов к API (для JavaScript API – 25000 запросов в сутки, а для Геокодера – 1000 запросов в сутки)
8. Мобильное приложение должно содержать ссылку на Условия использования Яндекс.Карт
Если хоть один из этих пунктов нарушается, Яндекс просит выбрать какой-либо платный тариф для пользования его картами:
В нашем случае была необходимость, чтобы пользователь видел указанный продавцом адрес на карте, а продавец мог вписывать адрес при публикации объявления. И если для выполнения первой задачи мы имели право использовать Яндекс Карты бесплатно, то для того, чтобы решить вторую задачу, пришлось повозиться. Нам нужно было сохранять данные, полученные с помощью API Яндекс Карт, для эффективной реализации функционала объявлений с геометками. Однако, исходя из правил Яндекса, за такую возможность нужно платить немалые деньги (от 620 000 рублей в год и выше). Именно поэтому, создав с помощью бесплатной версии API Яндекс Карт вариант карты для покупателя, мы начали думать, как обойти ограничения от российского IT-гиганта.
Для реализации на нашем сайте варианта Яндекс Карт для продавцов мы придумали весьма интересный способ, заключающийся в следующем. Мы взяли бесплатный шаблон Яндекс Карт и «натянули» на него данные с серверов DaData, получив у них бесплатный ключ API. В базах данных DaData содержатся все адреса и координаты объектов, находящихся на территории России, а Яндекс Карты выступают здесь проводником для этих данных. Когда пользователь вбивает адрес в текстовое поле, в базы данных DaData направляется запрос, и оттуда высылаются геоданные по указанному адресу. Эти координаты и отображаются на Яндекс Картах в виде особой метки. То есть, все данные идут с серверов DaData, а не из баз данных Яндекса. Яндекс Карты тут выступают в роли «картинки», которая получает все заранее подготовленные данные с DaData и отображает метки на основе полученных координат. Ну и разумеется, карта не интерактивна и не поддерживает разные функции от Яндекса.
Мы оказались довольны проделанной работой и тем, что смогли отыскать выход из этой непростой ситуации. Результат получился довольно приемлемый, к тому же мы экономим как минимум 620 000 рублей в год (по самому дешёвому тарифу). Полная реализация нашей идеи заняла 24 часа рабочего времени, но это того стоило. Теперь у нас есть бесценный опыт в поисках выхода из сложного положения и сбережённые деньги.
1. Абсолютно бесплатно.
2. Полностью законно.
3. Возможность сохранения данных от API DaData в собственную базу данных.
Яндекс.Карты API, я устал. Я ухожу
О последней и других каплях в чаше решения о прекращении использования Яндекс.Карты API.
Что случилось?
С 1 ноября Яндекс.Карты уменьшили лимиты на бесплатное использование HTTP API Геокодера с 25 000 до 1 000 запросов в сутки. Но не всех об этом уведомили.
Вдобавок, хоть новые лимиты и касаются только HTTP API Геокодера, он остался спаренным с сервисом встраивания карт. Теперь случайное превышение по использованию геокодера отрубает вам на сутки и карты, несмотря на прежний лимит для встраивания в 25 000.
И вот по поводу компенсации начинается переписка с поддержкой.
Сначала она не видит, что мы вообще используем API. Но прозревает после нашего скриншота.
Дальше она не видит, как мы используем геокодер, чем объясняет отсутствие уведомления о новых лимитах. Хотя у нас обычный характер использования геокодера — это до 100 ежедневно со скачками до 1 000, и несколько раз в год — до 25 000.
Разговор завершается отсылкой к договору, где написано, что Яндекс вам ничем не обязан — все так и должно работать.
Переписка заняла 3-и дня, из которых первый день карты не работали, т.к. никто ничего не стал компенсировать даже на время разбирательства.
Но ноги этого начали расти чуть больше года назад. «Почему появилась эта статья» что-то напоминает — да? 🙂
Версионирование Шрёдингера и др.
До лимитов основной проблемой было версионирование.
Вот вы если указываете номер версии, скажем, 1.65, какую рассчитываете получить в итоге?
Я думал, что — 1.65. Но нет, в Яндекса.Картах свято уверены, что это может и 1.72, и 1.75, и т.д. Хорошо хоть только возрастает. Но это не точно.
На вопрос, где они узнали, что это хорошая практика, ответили ссылкой на свою же документацию о версионировании. Ловко — да? 🙂
Таким образом вам прилетают баги, которых вы не ждали. Править их нужно немедленно — вас опять же никто не уведомил, и откатиться некуда.
По началу я рационализировал такой подход задумкой быстрой обратной связи и внесением правок. Поэтому сообщал о всем, что находил. Но опять не угадал. Как я Вас понимаю, ReDev1L.
Поддержка могла реагировать годами. И даже поправленные баги могут возвращаться.
Т.е. вы должны сами отслеживать и знать все изменения, даже те, которые внутри кода, и вносить правки в соответствии с планом работ Яндекса.
Так и получается, что работаешь то с отсутствием отзывчивых стилей карт, то с неработающей потайловой загрузкой у объектных карт, то с недокэшем тайлов подложки и др.
Не буду уже тратить время на документацию и архитектуру кода, которая часто напоминает итальянское блюдо.
Это просто бизнес, ничего личного.
Циничный это подход. И бизнес выходит хреновый, когда маркетологи-двоечники ставят бабло выше репутации.
Лишнее тому подтверждение — недавний срыв большой сделки с Яндексом. Все-таки кто-то считается с настроениями пользователей.
Свои проекты мы строим по-другому.
До этого API Яндекс.Карт использовался больше 7 лет из-за их покрытия и удобных лимитов. Но теперь, учитывая характер использования, новые лимиты, расценки и качество поддержки, в этом нет смысла. Значительно дешевле, удобней и гибче использовать собственные решения на основе других открытых и бесплатных продуктов.
Тем более, что и так приходилось писать свои обертки для решения проблем сервисов Яндекс.Карт. Например, тот же геокодер натренирован на статистике пользовательского ввода. Из-за чего нередко бывает, что точный адрес не гео-кодируется, а вот, например, без вида улицы — находится.
Думаю, многие другие проекты среднего размера поступят также. В итоге, на Картах останутся только небольшие проекты, которые используют самую базовую функциональность, и коммерческие пользователи, которые будут получать все больше пропущенных багов. Как результат начнется и их отток.
Еще одно интересное следствие всей этой истории — это то, что я перестал воспринимать сотрудников Яндекс как серьезных специалистов. И приходится делить, минимум на 10-ть, все что они говорят, даже если и появляется желание их послушать.
Из, возможно, забавного.
Как-то у Яндекса в Недвижимости появилась функциональность, которая очень напоминала то, что являлось уникальным предложением нашего проекта.
После чего внутренний параноик задумался о случайности совпадений. Т.к. мы за 5 лет до того начали решать проблему поиска жилья с учетом качества жизни. В частности, с учетом экологии, и используя интерактивные карты. А это до сих пор очень нишевый сервис.
P.S.
Есть что-то похожее и про Google. Думаю как-нибудь тоже написать, если допечет.
Кто знает, есть ли плагин для leaflet, чтобы можно было его использовать с backend’ом под API Яндекс.Карт? Если что — я уже начал писать похожее решение.
Бесплатно ли использование API яндекс карт
Я подключил api Яндекс карт на сайт для отображения местоположения компании, карта только помогает найти компанию. Прочитал про трафик, про то, что ПО должно быть открытым и т.д. но все равно есть какое-то недоверие и страх, что придет счëт через пару лет на миллион.
При получении ключа указывается телефон, остальное можно написать фейковое.
Как Яндекс отслеживает нарушения, можно ли в них случайно попасть? Как разработчики поступают при надобности подключить карту на сайт? Цепляют на свой аккаунт или просят заказчика предоставить ключ?
При соблюдении условий можно получить ключ и использовать API Яндекс.Карт бесплатно неограниченное время.
При создании сервиса, изначально соблюдающего все требования упомянутых условий, случайно нарушить правила предельно сложно. Единственная такая возможность — суточные превышения лимита. В такой ситуации доступ к сервису блокируется до конца суток. При систематическом превышении лимита доступ к сервису может быть блокирован перманентно до приобретения коммерческой лицензии.
Случайного "счёта на миллион" постфактум быть не может. Сервис оплачивается по типу prepaid — оплачиваете год использования — получаете оплаченный коммерческий ключ.
При разработке можно использовать и свой ключ. Ключей вы можете создать столько, сколько надо, и блокировать их после передачи продукта заказчику, если боитесь утечки (то же самое может делать и заказчик). Но для конечного продукта правильно будет получать ключ именно заказчику на контролируемый им и полноценно оформленный аккаунт, чтобы при необходимости (забыл пароль) он мог восстановить доступ по личным данным или телефону. Предоставит ли он его вам для разработки или будет использовать на уже готовом сервисе — это как вы договоритесь.
Управление API-ключами Яндекс.Карт: добавление, ограничение использования, блокировка
Я застал то время, когда процесс создания Яндекс.Карты с использованием соответствующего API не подразумевал наличия персонального ключа доступа.
С некоторого же времени, политика Яндекса в отношении использования своего сервиса (Яндекс.Карт) изменилась, и теперь, чтобы сформировать карту, прежде всего необходимо получить персональный API-ключ.
Сделать это можно бесплатно (при соблюдении всех условий использования API Яндекс.Карт, подробнее с которыми можно ознакомиться в официальной справке) и как именно – рассмотрим в этом подробном посте.
Получаем первый бесплатный API-ключ для работы с Яндекс.Картами
Для того, чтобы получить первый ключ API для работы с картами, нам необходимо подключить соответствующий сервис. Процедура не сложная и состоит из нескольких шагов. Последующее же добавление (выпуск) ключей происходит на порядок проще и быстрее (об этом ниже).
1. Перейдите по этой ссылке (откроется в новом окне) и авторизуйтесь в кабинете разработчика.
2. Далее на открывшейся странице нажмите «Подключить API». Кнопка будет по центру. Справа вверху, если вы уже используете какой-то из сервисов Яндекса.
3. В открывшемся модальном окне в блоке «Карты» выберите «JavaScript API и HTTP Геокодер»
и нажмите «Подключить», где в следующем модальном окне заполните (и отправьте) форму со всеми обязательными полями (отмечены красной звёздочкой).
Если вы получаете бесплатный ключ (это мы и рассматриваем в данной статье), отмечаете в форме пункты: «В открытой» (для типа системы, в которой будет использоваться API), «В бесплатном» (для типа вашего проекта) и «Буду отображать данные на карте» (как будете использовать полученные данные).
После успешной отправки формы и появления нового окна с сообщением «API сервис подключён» жмёте на кнопку «Перейти к API».
Подключение сервиса завершено, и мы попадаем в его панель управления, где в блоке «Ключи API» уже доступен один действующий ключ, который вы можете использовать в своём проекте.
Ключи становятся активированными в течение 15 минут после их получения. Каких-либо дополнительных действий с вашей стороны при этом не требуется.
Помимо первого ключа здесь (на момент написания поста) вам доступно: удаление API-интерфейса и общая (по всем ключам) статистика по использованию API с возможностью её выгрузки (скачки) в XLS и CSV,
добавление (выпуск) новых ключей API, а также управление существующими.
Как использовать (куда вставлять), полученный API-ключ для Яндекс.Карт?
Ключ прописывается в адресе до JavaScript-файла, подключение которого выглядит примерно следующим образом:
«API-ключ» здесь вы меняете на ключ, который получили ранее, а дальше как обычно «строите» свою карту. Подробнее об этом можете почитать в отдельных наших постах.
Выпуск (добавление) дополнительных API-ключей для Яндекс.Карт
Если по какой-то из причин вам потребовался ещё один (или несколько) ключ для работы с картами, добавить новый вы можете в панели управления сервисом, в правом верхнем углу, нажатием на кнопку «Новый ключ».
В появившемся окне прописываете название ключа (необязательное действие) и жмёте «Добавить ключ»,
после чего тот появится в списке всех ключей в блоке «Ключи API».
Как ограничить использование API-ключа, полученного для работы с Яндекс.Картами на другом сайте?
Поскольку в некоторых случаях ключ можно без труда найти в исходном коде сайта и скопировать, его использование на других ресурсах можно ограничить. Сразу оговорюсь, что ограничение работает только для тарифицируемых запросов (это геокодирование, маршрутизация и панорамы Яндекса), сама же карта на другом сайте с использованием вашего ключа продолжит свою работу.
Настройка ограничения доступна в модальном окне, которое вызывается нажатием на «Изменить» в блоке каждого ключа.
Здесь нас интересуют два поля, это «Ограничение по IP-адресам» и «Ограничение по HTTP Referer» (домену). Заполняете необходимые (можно сразу оба) по примерам ниже их и сохраняете изменения нажатием на соответствующую кнопку (ОК).
Указанные ограничения начинают действовать через 15 минут после их добавления.
Как удалить API-ключ, полученный для работы с Яндекс.Картами?
Если я правильно понял, бесследно удалить ключ API нельзя, но его можно заблокировать, нажав на соответствующую ссылку, которая появляется при наведении курсора на блок с ключом.
По необходимости действие ключа можно восстановить, нажав на сменившуюся в том же месте кнопку «Разблокировать».