The other answers that suggest App Engine are correct. But the missing info is what is App Engine?
It's basically the heavy lifter. It allows you to write a backend and deploy it to the cloud. Think of a Node express server you might typically develop. Then deploy it to the cloud. That's App Engine.
Firebase / Cloud Functions talk to App Engine typically over HTTP or via PubSub.
Functions are meant for lightweight work. They tell you when an event has happened (e.g. file uploaded to storage bucket) and the "event" that was fired has a payload detailing info about the event (e.g. details of the object uploaded to the bucket).
When that event happens, if heavy work is needed (or if required software on the Node.js runtime environment is lacking), the function makes, for example, an HTTP request to App Engine, providing the info App Engine needs to do the necessary processing.
App Engine is flexible. You define a yaml file and optionally a Dockerfile.
Here's an example:
runtime: custom # custom means it uses a Dockerfile
env: flex
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
Here you define CPU count, memory, disk size, etc. Unlike functions, the disk is writable (I am led to believe, I am still in the process of integration).
Via the Dockerfile you can define exactly what software you want installed. If you are not familiar with Dockerfile's, here's a nice example.
https://nodejs.org/en/docs/guides/nodejs-docker-webapp
You develop locally and then when done, you deploy to the cloud with:
gcloud app deploy
And voila, your app appears in the cloud. The gcloud
command comes with the Google Cloud SDK.
Note that AppEngine can talk back to functions via HTTP functions or PubSub when processing is complete.
Much love in Him :D