Why do I need to deploy a "default" app before I can deploy multiple services in GAE?

Reading this doc it says "You must initially deploy a version of your app to the default service before you can create and deploy subsequent services."

I don't understand this because I thought the GAE microservices were separate things as in: enter image description here

But it seems this is not an accurate depiction of how GAE microservices work? Is there like a master controller "default" service that sets top level config or does some kind of routing? If I'm just running a bunch of non web apps (meaning apps that wil run on a scheduled and process data) and a frontend "app" for accepting web requests isn't necessary than why do I still need to create the default service?


Solution 1:

The reason is that there are also several app-level configs, applicable to all services/modules:

  • dispatch.yaml
  • index.yaml
  • queue.yaml
  • cron.yaml

Some of these configs can have trouble if not deployed after/together with the default service. And some services may have dependencies on the app-level configs.

The requirement of deploying default first is simply a measure to reduce the risk of initial deployment problems. Subsequent deployments no longer have this restriction (since default is already deployed)

Yes, the default service is mandatory (sort of like a kitchen sink for all kinds of stuff, for example requests not matching any dispatch rule are sent to the default service). So just declare one of your non-web apps the default one (it doesn't matter what the default service actually does).

Somehow related (mostly for the examples): Can a default service/module in a Google App Engine app be a sibling of a non-default one in terms of folder structure?