Home / GCP / GCP Training / Section 4 - App Engine
Contents
- Overview
- App Engine Environments
- Application Hierarchy
- Standard vs Flexible Environments
- Scaling Instances
Overview
Simple way to deploy and scale your applications in GCP. Provides end-to-end application management.
Supports:
- Go, Java, .NET, Node.js, PHP, Python, Ruby using pre-configured runtimes.
- Use custom run-time and write code in any language.
- Connect to variety of Google Cloud storage products (Cloud SQL etc).
No usage charges - Pay for resources provisioned
Features:
- Automatic load balancing & Auto scaling.
- Managed platform updates & Application health monitoring.
- Application versioning.
- Traffic splitting.
App Engine Environments
Standard - Applications run in language specific sandboxes
- Complete isolation from OS/Disk/Other Apps.
- V1: Java, Python, PHP, Go (OLD Versions).
- ONLY for Python and PHP runtimes: Restricted network Access, Only white-listed extensions and libraries are allowed.
- No Restrictions for Java and Go runtimes.
- V2: Java, Python, PHP, Node.js, Ruby, Go (NEWER Versions).
- Full Network Access and No restrictions on Language Extensions.
Flexible - Application instances run within Docker containers
- Makes use of Compute Engine virtual machines.
- Support ANY runtime (with built-in support for Python, Java, Node.js, Go, Ruby, PHP, or .NET) so long as it can be made into a container.
- Provides access to background processes and local disks.
Application Hierarchy
Application (one per project).
Contains one or more:
Services (previously called modules. Each service can have different settings).
Contain one or more:
Versions (multiple versions of a service can be deployed with options to rollback and divide traffic).
Contain one or more:
Instances (multiple instances of each service version can be deployed).
Standard vs Flexible Environments
Feature | Standard | Flexible |
---|---|---|
Pricing Factors | Instance hours | vCPU, Memory & Persistent Disks |
Scaling | Manual, Basic, Automatic | Manual, Automatic |
Scaling to zero | Yes | No. Minimum one instance |
Instance startup time | Seconds | Minutes |
Rapid Scaling | Yes | No |
Maximum request timeout | 1 to 10 minutes | 60 minutes |
Local disk | Yes (except for Python, PHP). Can write to /tmp. | Yes. Ephemeral. New Disk on startup. |
SSH (for debugging) | No | Yes |
Scaling Instances
3 types of scaling:
Automatic Scaling
Recommended for Continuously Running Workloads.
- Auto scale based on:
- Target CPU Utilization - Configure a CPU usage threshold.
- Target Throughput Utilization - Configure a throughput threshold.
- Max Concurrent Requests - Configure max concurrent requests an instance can receive.
- Configure Max Instances and Min Instances.
Basic Scaling
- Instances are created as and when requests are received: Recommended for Adhoc Workloads.
- Instances are shutdown if ZERO requests (to keep costs low - high latency is possible).
- Configure Max Instances and Idle Timeout.
(NOT supported by App Engine Flexible Environment).
Manual Scaling
Configure specific number of instances to run. Adjust number of instances manually over time.
This page was generated by GitHub Pages. Page last modified: 22/12/23 15:59