План Firebase Blaze и облачные функции - PullRequest
1 голос
/ 10 июля 2020

К сожалению, план Firebase Flame исчез, и теперь мне приходится иметь дело с планом Blaze, который мне не нравится из-за его «неограниченного» бюджета (а мой кошелек - нет). Вчера я кодировал и по ошибке сделал al oop, который вызвал 3 Cloud Functions, я обнаружил l oop достаточно быстро, чтобы остановить бойню.

Всего за 15 секунд выполнения я смог запускать более 10К запросов и без ошибок - это неплохая производительность Firebase, но это тоже страшно! Как я могу ограничить это, чтобы ограничить количество запросов, поступающих от пользователей? Я вполне уверен в своем коде, но, как мы все знаем, если кто-то получит мой файл конфигурации Firebase, я готов.

Я индивидуальный разработчик, и это мое первое приложение, созданное в свободное время, Я не хочу запутаться из-за запуска функций чтения / записи / облачных вычислений. Никто не идеален, все делают ошибки, может быть, я не заметил небольшую ошибку в своем коде, которая раскрыла бы его истинный потенциал только один раз в производстве. Я не прошу Firebase обрабатывать мои ошибки, но я хотел бы иметь возможность остановить CF и Firebase, если захочу.

Мое единственное желание - спать спокойно, я не хочу просыпаться однажды утром со счетом в 10.000 долларов. Я читал, что можно полностью отключить платежную учетную запись в проекте с помощью CloudFunctions, но что произойдет, например, с моей корзиной Firebase Storage (для хранилища, превосходящего план Spark)? И это кажется непростым. приложение почти готово к запуску go в продакшн, и я не думаю, что я один такой.

1 Ответ

3 голосов
/ 10 июля 2020

Ах, вы наткнулись на загадку «ограничения скорости». Не волнуйтесь, я сам провел много ночей, беспокоясь об этом.

Чтобы получить немного больше контроля над своим приложением, вам нужно связать свой проект с облачной платформой Google. . Затем перейдите к IAM & Admin>Quotas (после того, как вы выбрали свой проект firebase).

Теперь вы можете быть ошеломлены поначалу и не понимаете, почему существует так много ограничителей API облачных функций. Эти квоты должны позволить вам ограничивать скорость API облачных функций (аналогично тому, что делает твиттер) несколькими способами, включая, помимо прочего:

  • запросов на чтение в день
  • Запросы на чтение за 100 секунд
  • Вызов функций за 100 секунд
  • Вызов функций за день
  • et c

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

По умолчанию максимальное количество вызовов в секунду установлено на максимум 5000 вызовов в день в плане Spark . но согласно docs , абсолютный максимум составляет 100000000/100 секунд!

Также стоит взглянуть на ценовые документы , в которых есть хороший пример типичный ежемесячный вариант использования успешного приложения. Чтобы сильно упростить, один вызов стоит 0,0000004 доллара, следовательно, 10000000 вызовов обойдутся вам в колоссальные 3,20 доллара. Однако не позволяйте этой очень низкой цене вводить вас в заблуждение, если вы напишете какой-то ужасный код, и он будет иметь экспоненциальную сложность (например, чтение каждого документа в коллекции firestore при каждом вызове), вы можете получить экспоненциальную стоимость. Поэтому убедитесь, что вы установили эти квоты :)

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

Удачи в этом деле

Гадкий Б.

...