Облачные функции Firebase лучшая практика?

#firebase #google-cloud-functions

#firebase #google-cloud-функции

Вопрос:

У меня есть несколько вопросов относительно лучших практик работы с облачными функциями Firebase, любая информация и советы будут высоко оценены!

  1. Где лучше всего инициализировать admin SDK, поскольку вы можете сделать это только один раз, следует ли вам сделать это в отдельном файле, инициализировать нужные вам сервисы (например, Firestore и функции) и экспортировать их, или инициализировать admin SDK в корневом каталоге index.ts?
  2. Если у вас несколько задач, связанных с одним событием, следует ли запускать несколько облачных функций для обработки разных задач для одного и того же события или использовать одну облачную функцию для события, которое обрабатывает несколько задач. Например, если у вас есть событие создания документа, в котором вы хотите обновить некоторые пользовательские настройки, отправьте электронное письмо, запишите данные в другой документ.
  3. Настройка региона, в котором развертываются облачные функции, следует ли вам потратить время и выбрать регион, ближайший к вашему пользователю, для каждой отдельной функции? (Я не видел возможности установить его глобально)

Спасибо,

Ответ №1:

Нет «лучшего способа» сделать это, чем то, что явно описано в официальной документации, но я постараюсь помочь вам советами, которые сработали для меня, учитывая темы вашего вопроса (обратите внимание, что я использую javascript для разработки облачных функций, а не Typescript):

  1. Хорошей идеей может быть инициализация admin SDK из организованного и выделенного каталога: сделайте это, а затем импортируйте его в свой index.js досье. Почему? Это сохранит ваш index.js файл меньше, чище и ориентирован на экспорт ваших облачных функций. Бонус: мне нравится определять admin SDK как глобальный сразу после его импорта на index.js . Разумная обработка глобальных данных может повысить производительность вашего приложения и другие преимущества.

Но будьте осторожны: глобальные переменные используются совместно при выполнении вашей облачной функции (подробнее об этом ниже)

  1. При разработке облачных функций следует помнить: каждая функция изолирована друг от друга, и один и тот же контейнер функций может быть повторно использован для новых входящих запросов; первое выполнение облачной функции после «ожидания» займет некоторое дополнительное время — это называется «холодный запуск». Если вы не выполняете асинхронную работу, вы, вероятно, будете в порядке, выполняя все в одной и той же функции — вы ~ уже там. Завершить Express.js приложения, приложения для рендеринга на стороне сервера (например, с помощью Nuxt) и многое другое может быть реализовано с помощью одной функции.

Вы должны посмотреть эту серию каналов Firebase на YouTube, посвященную облачным функциям: https://www.youtube.com/watch?v=DYfP-UIKxH0amp;list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM

  1. Выбор региона для Firebase может значительно улучшить работу ваших пользователей … или нет. Обязательно проверьте доступность всех продуктов Firebase, используемых вашим приложением, в каждом регионе, иначе результат может быть противоположным, пока они разговаривают друг с другом:

При выборе регионов для запуска ваших функций первоочередными соображениями должны быть задержка и доступность. Обычно вы можете выбирать регионы, близкие к вашим пользователям, но вам также следует учитывать расположение других продуктов и служб, используемых вашим приложением. Использование сервисов в нескольких регионах может повлиять на задержку вашего приложения, а также на цены. https://firebase.google.com/docs/functions/locations