Introducing App Engine
In this first chapter, we will discuss the main properties of Google App Engine (GAE) and its Platform-as-a-Service (PaaS) approach. Available since 2008, GAE provides a serverless environment in which to deploy HTTP/web-based applications.
Throughout this chapter, we will explore GAE's framework and structure to see how highly scalable applications are made possible on this platform. As part of this, we will consider how to integrate standard web primitives such as traffic splitting and API management on GAE. By the end of this chapter, you should have a solid foundation to help you build web-based applications using GAE quickly.
In a nutshell, we will cover the following topics in this chapter:
- Introducing GAE
- Understanding the GAE framework
- Defining App Engine components
- Understanding GAE's features
Introducing GAE
When it comes to software engineering innovation, it is clear that Google has a rich history. This innovation has been evident across many successful projects, including several billion-user products brought to market, such as Google Search, Android, and YouTube. Google Cloud and its vibrant ecosystem of services provide tools built to serve these critical projects, and now you can host your application on the same platform.
GAE is designed to host web-based applications and elegantly handle request/response communications. Understanding how to achieve this on Google Cloud will be central to building consistent and efficient applications that can delight end users with their responsiveness.
Before delving into the details of GAE, let's spend some time discussing the rationale behind the application platform. For the following paragraphs, we will outline the...
Understanding the App Engine framework
Exploring the general architecture of App Engine brings to light how much of the underlying framework has been put in place to deliver integrated workflows for web application development.
Google has bundled many internal services to minimize the effort needed by developers to make their applications cloud-native. Added to that is the innate ability of the GAE service to automatically scale without any additional actions required on the part of the service creator.
Creating a web application on this platform can be as simple as deploying your code to the App Engine environment. However, behind the scenes, there are several activities taking place to ensure that the application is deployed successfully, the infrastructure is provisioned, and the whole thing is ultimately able to scale intelligently. So, what is happening in the underlying...
Defining App Engine components
The objective of this section is to describe the details of GAE. The nature of the GAE application platform is to provide a serverless application environment that is capable of supporting multiple language runtimes. Runtime support requires that there are two versions of App Engine in existence. A critical difference between these environments relates to the language runtimes supported.
Runtime languages supported
Historically, the GAE runtime only supported a limited number of languages, but this has expanded over time to provide a broader range. A limitation on runtime languages was one of the most common criticisms of the original version of GAE when it was released over a decade ago. This...
Understanding App Engine features
Throughout the next few sub-sections, we will describe some of the critical facets of GAE, starting with application versioning.
Application versioning
GAE uses a configuration file to manage application versions to deploy. The configuration file for the runtime selected, for example, app.yaml for Python deployments, contains the version ID associated with your application. In addition to the version, an application default denotes the primary instance to the system.
Each application version deployed will maintain its distinct URL so that the developer can view multiple versions at the same time. Similarly, releases can be upgraded or rolled back depending on the deployment scheme selected...
Summary
In this chapter, we covered a high-level introduction into the fully managed application platform App Engine. Working in this environment illustrates many of the usual infrastructure tasks related to development are performed automatically without recourse to the developer.
In general, GAE deployment is a fully managed activity that requires very little interaction to build, host, or execute code. The environment typically consists of a load balancer, a compute tier, and a services layer, all working in tandem to provide an integrated application platform. GAE provides a low-effort development environment built to do much of the heavy lifting for developers.
Now we have a general understanding of the App Engine environment. The next chapter will focus on introducing code samples to flesh out our experience and skill level.
Questions
- What type of service dispatch is supported by task queues?
- What are the two levels of service supported by memcache?
- What type of database is Cloud Datastore?
- Name a runtime language supported by GAE.
- What forms of traffic-splitting algorithms are supported on GAE?
- What is the purpose of GFE in relation to GAE?
- Name the three types of scaling supported by GAE.
- What mechanism is used to isolate long-lived workloads for efficiency purposes from the HTTP request/response life cycle?
Further reading
- Choosing an App Engine environment: https://cloud.google.com/appengine/docs/the-appengine-environments
- gRPC: https://grpc.io/blog/principles/
- NDB Caching: https://cloud.google.com/appengine/docs/standard/python/ndb/cache
- Datastore and Firestore modes: https://cloud.google.com/datastore/docs/firestore-or-datastore
- Cloud Source Repositories and App Engine: https://cloud.google.com/source-repositories/docs/quickstart-deploying-from-source-repositories-to-app-engine