Cloud-based software projects should employ multiple environments. These
environments typically have names like dev
, qa
, staging
, and prod
.
It's vital that these environments be completely isolated from one another,
and they typically have very different operator-access permissions.
For example, the development team might have full access to the dev
environment, but only limited access to the prod
environment, with all
code deployment driven only by automated scripts. Further, it's
absolutely essential that the data in the different environments stay isolated.
Using multiple Google Cloud projects suits these requirements perfectly as the projects provide complete isolation of code and data, and operator permissions can be managed separately. Because App Engine automatically scales its serving instances, you only pay for what you use. For example, if your staging environment is only required one week out of every four, you won't pay for any serving instance costs for the other three. However, keep in mind that you will be billed for any data stored in these projects.
Naming environments
If you choose to create your microservices application by using only multiple
services, you can create a single Google Cloud project for each of your
environments and name them accordingly, such as web-app-dev
, web-app-qa
,
and web-app-prod
.
Alternatively, if you choose to create your microservices application by
using multiple projects, you can achieve the same separation between
environments, but you'll need to use more projects, such as
web-app-dev
, web-app-prod
, user-service-dev
, and user-service-prod
.
You will need to use code patterns to ensure that the dev
projects only
call other dev
projects and the prod
projects only call
other prod
projects.
What's next
- Get an overview of microservice architecture on App Engine.
- Learn the best practices for designing APIs to communicate between microservices.
- Learn the best practices for microservice performance.
- Learn how to Migrate an existing monolithic application to one with microservices.