Как управлять событиями в Firebase

#firebase #google-cloud-platform #google-cloud-firestore #google-cloud-functions

#firebase #google-облачная платформа #google-cloud-firestore #google-cloud-функции

Вопрос:

Наш стартап «облачный», использующий Firebase и Google Cloud. Мы изучаем возможность перехода к дизайну, управляемому событиями, но мне сложно сопоставить концепцию с конкретными сервисами Firebase или GCP.

Пример: пользователь создает черновик контракта (документ Firestore) с помощью мобильного приложения. Нам нужно запустить следующие операции:

  • Уведомляйте других пользователей, являющихся сторонами контракта, по электронной почте и с помощью push-уведомлений
  • Запись в таблицу уведомлений, чтобы пользователь мог иметь «входящие» в приложении и отмечать их прочитанными или удаленными
  • Создайте задание, которое будет опрашивать контракт через месяц, и, если состояние не изменится, удалите контракт
  • Запустите серию вычислений на сервере

До сих пор нам удавалось помещать эти действия в триггеры облачных функций, но наш код триггера стал беспорядочным, и в редких случаях операции выполняются выше пороговых значений облачной функции (2 ГБ и 9 минут).).

Наш план по улучшению базы кода и сокращению операций на основе триггеров:

  1. Пользователь создает контракт (Cloud Firestore)
  2. Триггер Cloud Firestore создает событие (облачные функции)
  3. Службы, которым необходимо что-то с этим сделать, подписываются на поток событий и выполняют соответствующие действия. (Что здесь происходит?)

Я исследовал Pub / Sub, но подумал, что это будет излишним, поскольку нам не нужно слишком много иметь дело с сервисами за пределами GCP, и наш масштаб не нуждается в этом atm. Можем ли мы достичь вышеуказанного в рамках инструментов Firebase?

Ответ №1:

Pubsub на самом деле именно то, что вам нужно. Это не перебор — это распространенное и предпочтительное решение в Google Cloud для обработки подписок на события. Фактически, облачные функции уже встроены поверх pubsub.

Инструменты Firebase фактически предоставляют собственный интерфейс для развертывания облачных функций pubsub. Вы можете прочитать об этом в документации. Однако, если вам требуется больше вычислительной мощности, чем предоставляют облачные функции, продукты Firebase вам не помогут, и вам нужно будет обратиться к облачным продуктам Google, таким как Compute Engine. Скорее всего, вы все равно будете использовать pubsub для уведомления выбранной вами серверной части.

Ответ №2:

Поскольку масштабирование в данный момент не является для вас проблемой, вы можете добиться этого с помощью инструментов Firebase.

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

Кроме того, было бы полезно проверить эту документацию и изучить Observables , хотите ли вы создавать подписки со службами, которые будут искать определенные действия для выполнения.