Google App Engine
What is Google App Engine?
Google App Engine (GAE) is a platform-as-a-service (PaaS) product that enables web app developers and enterprises to build, deploy and host scalable, high-performance applications in Google's fully managed cloud environment without having to worry about infrastructure provisioning or management.
GAE is Google's fully managed and serverless application development platform. It handles all the work of uploading and running the code on Google Cloud. GAE's flexible environment provisions all the necessary infrastructure based on the central processing unit (CPU) and memory requirements specified by the developer.
With GAE, developers can create applications in multiple supported languages or run custom containers in a preferred language or framework. Each language has a software development kit (SDK) and runtime to enable app development and testing. GAE also provides a wide range of developer tools to simplify app development, testing, debugging, deployment and performance monitoring.
GAE is ideal for applications designed using a microservices architecture, a development paradigm where an application consists of multiple small, loosely coupled services that can communicate with each other via a technology-agnostic protocol but can also be deployed independently.
How is Google App Engine used?
GAE is a fully managed, serverless platform that is used to host, build and deploy web applications at any scale. Users can create a GAE account, set up an SDK and write application source code by choosing one of several popular programming languages, libraries and frameworks. They can then use GAE to test and deploy the code in the cloud.
One way to use GAE is to build scalable applications that adapt to workloads as needed. GAE will provision all the required servers and also scale app instances based on demand. Application testing is another way to use GAE. Users can route traffic to different application versions to A/B test them and see which version performs better under various workloads.
Google App Engine apps
A GAE app is a top-level container. It includes at least one service, version and a single application resource. The resource consists of one or more services that can be configured to use different runtimes and operate at different performance levels. In addition, different versions of a service can be deployed to run within instances, depending on how much traffic it is configured to handle.
With GAE, different versions of an app can be hosted in the Google Cloud. GAE allows developers to split traffic between these different versions for A/B testing and feature rollout. Apps can also be debugged within GAE in any stage, including production.
Environments available in Google App Engine
GAE provides two types of app development environments. Developers can choose either environment depending on their needs and app type. They can also use both environments simultaneously to combine the benefits of each environment.
In the standard environment, applications run in a sandbox using the runtime environment of one of the languages supported by GAE. The environment is suitable for applications that need to scale rapidly (up or down) in response to sudden or extreme traffic spikes. It can also be used for applications that are intended to run for free or at very low cost.
The standard GAE environment offers seconds-level instance startup times and deployment times, supports background threads and can be scaled to zero. It includes automatic in-place security patches and allows developers to access many Google Cloud application programming interfaces (APIs) and services, including Cloud Storage, Cloud SQL and Google Tasks.
The GAE flexible environment automatically scales apps up or down while also balancing the load. It allows developers to customize the runtimes provided for the supported languages or provide their own runtime by supplying a custom Docker image or Dockerfile.
The environment is suitable for many kinds of apps, including apps that do the following:
- Receive consistent traffic.
- Experience regular traffic fluctuations.
- Run in a Docker container with a custom runtime or source code written in other programming languages.
- Use frameworks with native code.
- Access Google Cloud project resources residing in the Google Compute Engine network.
The flexible GAE environment offers minutes-level instance startup times and deployment times, supports background threads and processes, and offers both manual and automatic scaling. It includes automatic in-place security patches and supports Secure Shell, or SSH, debugging. In this environment, developers can modify the runtime (through Dockerfile) and access many Google Cloud APIs and services, including Cloud Storage, Cloud SQL, and Google Tasks.
What are GAE's key features?
The key features of GAE are:
- API selection. GAE provides several built-in APIs, including the following:
-
- Blobstore for serving large data objects.
- GAE Cloud Storage to read and write files during app runtime.
- Page Speed Service for automatically speeding up webpage load times.
- URL Fetch Service to issue HTTP requests and receive responses for efficiency and scaling.
- Memcache to cache data in-memory and speed up database operations.
- Fully managed infrastructure. GAE manages the infrastructure so developers can focus on writing code and developing scalable, high-performance apps.
- Support for multiple programming languages. GAE supports all these popular development languages:
- Application diagnostics. GAE lets users monitor app health and performance, and quickly diagnose and fix bugs.
- Security features. GAE enables users to define access policies with the GAE firewall and leverage Secure Sockets Layer/Transport Layer Security certificates for free to boost application security.
- Traffic splitting. GAE lets users route requests to different versions of the same application.
- Versioning. Developers have the freedom to create and host different versions of an app in different environments.
- Custom runtimes. GAE's flexible environment also supports custom runtimes.
Google App Engine benefits
GAE extends the benefits of cloud computing to application development in multiple ways.
- Ease of setup and use. GAE is a fully managed platform, so users can write code without considering IT operations or worrying about back-end infrastructure. Users can build different types of applications in different languages using GAE's built-in tools.
- Cost-effective pay-per-use pricing. GAE's billing scheme only charges users daily for the resources they use. Users can monitor their resource usage and bills on a dashboard.
- Scalability. Applications automatically scale as workloads fluctuate.
Google App Engine challenges
Depending on an organization's application processing needs, there may be some challenges when using GAE.
- Lack of control. If a problem occurs in the back-end infrastructure, the user is dependent on Google to fix it.
- Confusing user interface. GAE's user interface can be confusing and hard to navigate, especially for new users.
- Inadequate dashboard. GAE's dashboard does not provide a resource summary, making it hard to determine which resources have been consumed.
- Inadequate documentation. A lack of up-to-date GAE documentation may make it difficult for some users to understand the platform so that they may use it effectively.
Example of app built with Google App Engine
One example of an application created in GAE is an Android messaging app that stores user log data. The app can store user messages and write event logs to the Firebase Realtime Database and use it to automatically synchronize data across devices. Java servers in the GAE flexible environment connect to Firebase and receive notifications from it. Together, these components create a back-end streaming service to collect messaging log data.
GAE lets users structure applications as microservices. Learn the difference between service-oriented architecture and microservices and the benefits of each. Compare Google Cloud Run vs. Google App Engine for enterprise software and explore the top 10 PaaS providers and what they offer.