Book Image

Mastering Google App Engine

By : Mohsin Hijazee, Mohsin Shafique
Book Image

Mastering Google App Engine

By: Mohsin Hijazee, Mohsin Shafique

Overview of this book

Table of Contents (18 chapters)
Mastering Google App Engine
Credits
About the Author
Acknowledgments
About the Reviewers
www.PacktPub.com
Preface
Index

The structure of an application


When you are developing a web application that has to be hosted on Google App Engine, it has to have a certain structure so that the platform can deploy it. A minimal App Engine application is composed of an application manifest file called app.yaml and at least one script / code file that handles and responds to requests. The app.yaml file defines the application ID, version of the application, required runtime environment and libraries, static resources, if any, and the set of URLs along with their mappings to the actual code files that are responsible for their processing.

So eventually, if you look at the minimum application structure, it will comprise only the following two files:

  • app.yaml

  • main.py

Here, app.yaml describes the application and set of URLs to the actual code files mappings. We will examine app.yaml in greater detail in a later section. The app.yaml is not the only file that makes up your application. There are a few other optional configuration files as well. In case you are using datastore, there may be another file called index.yaml, which lists the kind of indexes that your app will require. Although you can edit this file, it is automatically generated for you, as your application runs queries locally.

You then might have a crons.yaml file as well, that describes various repeated tasks. The queus.yaml file descries your queue configurations so that you can queue in long running tasks for later processing. The dos.yaml is the file that your application might define to prevent DoS attacks.

However, most importantly, your application can have one or more logical modules, where each module will run on a separate instance and might have different scaling characteristics. So, you can have a module defined by api.yaml that handles your API calls, and its scaling type is set to automatic so that it responds to requests according to the number of consumers. Another named backend.yaml handles various long running tasks, and its scaling type is set to manual with 5 instances on standby, which will keep running all the time to handle whatever the long running tasks handled to them.

We will take a look at modules later in this book when discussing deployment options in Chapter 10, Application Deployment.