Проблема API-ключей, которые никогда не истекают
Ключ, выданный много лет назад, ни разу не заменённый и до сих пор действующий, это не удобство. Это риск, на который никто не смотрел уже много лет.
Мы создаём и поддерживаем API геокодирования. В этом вся компания. Каждое решение, описанное в остальных записях (оплата за запрос вместо оплаты за места, бесплатный уровень без ключа вместо пробного периода с обратным отсчётом, совместимые хосты вместо собственного формата, заголовки квоты в каждом ответе вместо запаздывающей панели), сводится к одной простой проверке, которую мы применяли снова и снова, пока его строили: раздражало бы это нас, будь мы клиентом по ту сторону.
Большинство вредных привычек, о которых мы писали в этой подборке, сразу не проходят эту проверку, стоит только представить, что платите за них вы. Никто не хочет узнать о лимите запросов из неудачного запроса в production. Никто не хочет «безлимитного» тарифа, к которому, как выясняется, прилагаются правила добросовестного использования. Никто не хочет миграции длиной в квартал из-за того, что SDK прежнего провайдера годами разносил свои структуры по всему коду. Это не какие-то экзотические жалобы. С этим почти каждый разработчик сталкивался по другую сторону отношений с API, и именно поэтому мы считаем, что не нужны исследования клиентов, чтобы признать эти проблемы тем, чего стоит избегать.
Цены стали самым очевидным местом для применения этого принципа. 2 500 бесплатных запросов в день с любого адреса, вообще без ключа. Когда нужно больше, зарегистрируйтесь с адресом электронной почты и либо пополните предоплаченный баланс по 0,0001 € за запрос, либо возьмите ключ Unlimited за 50 € в месяц. Каждый эндпоинт и каждый совместимый хост стоят одинаково. Мы пришли к этому не через оптимизацию цен ради максимальной выручки с клиента. Мы пришли к этому, спросив себя, как выглядела бы честная и справедливая цена за этот конкретный продукт для того, кого уже раздражали непрозрачные тарифы, плата за превышение и звонки корпоративных продавцов, потому что каждый из нас в какой-то момент был таким человеком.
Та же проверка применяется и к более мелким решениям, которые никогда не попадают на страницу цен: принимать ключ через заголовок, bearer-токен, Basic auth или параметр запроса без доплаты, потому что навязывание одного конкретного способа это лишнее препятствие для всех, чей существующий код уже делает это иначе. Публиковать коды ошибок и лимиты запросов прямо, потому что гадать о недокументированной ошибке значит тратить время всех. Ни одно из этих решений не драматично. Это накопленный результат того, что мы раз за разом, во всех частях продукта, не делаем раздражающих вещей.
Мы не утверждаем, что благодаря этому каждая часть продукта закончена или идеальна. Мы конкретно говорим, какие эндпоинты считаем полностью рабочими, а какие, например прямое геокодирование, обратное геокодирование и автодополнение, описываем осторожно, не преувеличивая, потому что преувеличение это разновидность той же ошибки: говорить клиенту то, что он хочет услышать, а не то, что есть на самом деле. Создавать продукт, который мы хотели бы купить сами, значит создавать его честно, в том числе в отношении его нынешних ограничений, а не только делать те части, которыми легко гордиться. Такой стандарт мы установили для себя, и именно по нему мы намерены и дальше себя оценивать.