What is the difference between Google Compute Engine, App Engine and Container Engine in Google Cloud?

0xAliHn picture 0xAliHn · Nov 23, 2016 · Viewed 16.2k times · Source

What is the actual difference between Google Compute Engine, App Engine and Container Engine in Google Cloud Compute? When to use what?

Is there any good example to understand all of these three engines?

Answer

Jon Skeet picture Jon Skeet · Nov 23, 2016

(Disclaimer: I work in the Google Cloud Platform team, but this is a personal answer.)

All of these are solutions which allow you to host your applications in the cloud. You can view them as a sort of spectrum of control/automatic management. There's also another thing to consider: App Engine comes in two environments, "Standard" and "Flexible".

So the spectrum ends up being:

  • App Engine Standard: limited runtimes (Python, Java, PHP, Go), very simple to get up and running, auto-scaled etc. Focused APIs designed specifically for App Engine.
  • App Engine Flexible: anything you can put in a container, auto-scaled etc.
  • Container Engine: you design your application in terms of micro-services, specify how they're scaled etc, but let Container Engine (the Google Cloud Platform implementation of Kubernetes) perform the scaling
  • Compute Engine: Hosted VMs with benefits, basically. Some features such as live migration, auto scaling within Managed Instance Groups, but it's much more "bare metal" than the above.

Basically, you need to decide how "hands-on" you want to be. The more control you decide to take, the more work you have to do but the more precise tuning (and flexibility) you get.

Additionally, App Engine Standard supports "scale to zero" - if your app isn't getting any traffic, it can be completely dormant. That makes it a great environment for hobby projects.