1
votes

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

2

2 Answers

1
votes

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.

1
votes

You can configure resources in one project to allow access to users/apps outside that project. See, for example Setting ACLs for how you can allow multiple projects to access a Cloud Storage bucket. Similar cross-projects access can be configured for most if not all Google Cloud resources/services/apps - but you need to check the respective docs for each of them to see the specific details each of them may have.

With this in mind it's really up to you to organize and map your apps and resources into projects.