GCP App Engine - ghdrako/doc_snipets GitHub Wiki

Some of the key features of GAE that make it a great compute option include being fully managed and providing fast auto-scaling. Despite being less abstract than Cloud Functions, GAE still takes care of enough things to make sure you, the developer, can focus on the code without worrying about the infrastructure. For instance, one of the features that will greatly facilitate application development for new developers is the zero- config deployment, which means the cloud will manage the backend infrastructure and all you have to do is write the code and execute it. As with GAE, it is billed on usage, which makes it ideal for users whose requirements are on the spiky side. When there isn't any usage, it scales down to zero (so do all of the other options, excluding GKE and GCE).

In terms of additional development control, GAE has powerful features such as versioning, traffic splitting, and granular diagnostic tools. The flexible environment in GAE also opens up more possibilities with custom language runtimes, libraries, and frameworks that can be imported to GAE in the form of Docker containers. The pay-per-use pricing and great auto-scaling also make GAE a great option for projects that have seasonal demand or spiky loads, such as landing pages or marketing campaigns.

GAE Limitation:

  • usage of HTTP/S requests (GAE is limited by web requests and responses. )

Applications in GAE can run in two environments: standard and flexible.

Standard

The standard environment is based on container instances and provides developers with a stable environment for their application that will run reliably even under high and spiky loads. It can scale reliably and rapidly but is limited to certain versions of different programming languages, meaning you can still use popular programming languages but you must use specific versions, such as Python 2.7, 3.7, and 3.8, or Java 8, Java 11, and so on. The standard environment is ideal if you are working with large amounts of data or cannot predict traffic reliably. The standard environment is also the most cost-effective as you are only billed on usage, and the platform can even scale down to zero.

If you choose the standard environment in GAE, you might come across first- generation and second-generation runtimes. First-generation runtimes include programming languages such as Python 2.7, Java 8, PHP 5.5, and Go 1.11, whereas second-generation runtimes include Python 3, Java 11, Node.js, PHP 7, Ruby, and Go 1.12+.

It is strongly advised to base your application around one of the supported second-generation runtimes.

Flexible

The flexible environment is based on Docker containers within GCE and offers developers more flexibility overall. In the flexible environment, developers can use any version of the supported languages (Python, Java, Node.js, Go, Ruby, PHP, and .NET) and custom runtimes. However, the biggest strength of the flexible environment is that you can customize the infrastructure with GCE's VMs and specify your own central processing unit (CPU) and memory requirements.

There are various other things that you can control in the flexible environment as well, but the gist is, if you're looking for a managed option and rapid scaling options, choose the standard environment. If not, then the flexible environment gives you more power and customizability.