You can run your applications in App Engine by using the App Engine flexible environment or the App Engine standard environment. You can also choose to simultaneously use both environments for your application and allow your services to take advantage of each environment's individual benefits.
App Engine environments
App Engine is well suited to applications that are designed using a microservice architecture, especially if you decide to utilize both environments. Use the following sections to learn and understand which environment best meets your application's needs.
When to choose the standard environment
Application instances run in a sandbox, using the runtime environment of a supported language listed below.
Applications that need to deal with rapid scaling.
The standard environment is optimal for applications with the following characteristics:
Source code is written in specific versions of the supported
- Python 2.7, Python 3.7, Python 3.8, Python 3.9, Python 3.10, and Python 3.11 (preview)
- Java 8, Java 11, and Java 17
- Node.js 10, Node.js 12, Node.js 14, Node.js 16, and Node.js 18
- PHP 5.5, PHP 7.2, PHP 7.3, PHP 7.4, and PHP 8.1
- Ruby 2.5, Ruby 2.6, Ruby 2.7, and Ruby 3.0
- Go 1.11, Go 1.12, Go 1.13, Go 1.14, Go 1.15, Go 1.16, Go 1.18, and Go 1.19
- Intended to run for free or at very low cost, where you pay only for what you need and when you need it. For example, your application can scale to 0 instances when there is no traffic.
- Experiences sudden and extreme spikes of traffic which require immediate scaling.
When to choose the flexible environment
Application instances run within Docker containers on Compute Engine virtual machines (VM).
Applications that receive consistent traffic, experience regular traffic fluctuations, or meet the parameters for scaling up and down gradually.
The flexible environment is optimal for applications with the following characteristics:
Source code that is written in a version of any of the supported
Python, Java, Node.js, Go, Ruby, PHP, or .NET
- Runs in a Docker container that includes a custom runtime or source code written in other programming languages.
- Uses or depends on frameworks that include native code.
- Accesses the resources or services of your Google Cloud project that reside in the Compute Engine network.
Compare high-level features
The following table summarizes the differences between the two environments:
|Feature||Standard environment||Flexible environment|
|Instance startup time||Seconds||Minutes|
|Maximum request timeout||Depends on the runtime and type of scaling.||60 minutes|
|Background threads||Yes, with restrictions||Yes|
|Scaling||Manual, Basic, Automatic||Manual, Automatic|
|Scale to zero||Yes||No, minimum 1 instance|
|Writing to local disk||
||Yes, ephemeral (disk initialized on each VM startup)|
|Modifying the runtime||No||Yes (through Dockerfile)|
|Automatic in-place security patches||Yes||Yes (excludes container image runtime)|
|Access to Google Cloud APIs & Services such as Cloud Storage, Cloud SQL, Memorystore, Google Tasks and others.||Yes||Yes|
Java 8, Python 2, and PHP 5 provide a proprietary Sockets API (beta), but the API is not available in newer standard runtimes.
|Supports installing third-party binaries||
|Location||North America, Asia Pacific, or Europe||North America, Asia Pacific, or Europe|
|Pricing||Based on instance hours||Based on usage of vCPU, memory, and persistent disks|
Also see the in-depth comparison of the environments.
Compare the flexible environment to Compute Engine
The App Engine flexible environment has the following differences to Compute Engine:
The flexible environment VM instances are restarted on a weekly basis. During restarts, Google's management services apply any necessary operating system and security updates.
You always have root access to Compute Engine VM instances. By default, SSH access to the VM instances in the flexible environment is disabled. If you choose, you can enable root access to your app's VM instances.
Code deployments can take longer as container images are built by using the Cloud Build service.
The geographical region of a flexible environment VM instance is determined by the location that you specify for the App Engine application of your Cloud project. Google's management services ensures that the VM instances are co-located for optimal performance.
Migrate from the standard environment to the flexible environment
If you have an application in the standard environment, you might want to move some services to the flexible environment. For guidance, see the recommendations for in the comparison of the environments.
To migrate specific services for Python, Java, Go, and PHP, see Migrate services from the standard environment to the flexible environment.
Try it for yourself
If you're new to Google Cloud, create an account to evaluate how App Engine performs in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.Try App Engine free