Search code examples
google-app-enginecloudgoogle-cloud-platformdevelopment-environmentmicroservices

Google Cloud projects, how are they supposed to work as organizational units?


Google Cloud's structure related to "projects" has me really confused.

On the one hand all GCP services are encapsulated in a "project" right? So I think, OK I'll create something like "test", "stage", and "prod" projects. All my applications can be tested in "test" and eventually move to "prod" when they are ready to go live. Also, I can have SQL,bigquery,bigtable and whatever else in the test project that developers can hack on without having to worry about effecting production.

But I can only have one app engine app per project? How does that work? I can see how in app engine you have different versions so if I have one project per app engine app the test/staging mechanism is in that app's project, but what about the other GCP services?

If I have a bigtable or bigquery or something on storage multiple apps need to access what "project" do I put that stuff in?

Do I still have a "test","stage","prod" project for my services (where my DBs, storage, etc live), but then also create separate projects for each app engine app?

If multiple apps need to access something, it can live in one of the app's projects- that doesn't make sense.

Edit: google does have some good docs about how projects and services can be organized https://cloud.google.com/appengine/docs/python/creating-separate-dev-environments


Solution

  • While you can only have one App Engine app per project, an App Engine app can host multiple services, each of which has several versions of code deployed.