C H A P T E R 2
■ ■ ■
Introduction to App Engine
Google App Engine has been a fantastic disrupter in the technology industry. It's
quickly driving innovation among developers and is starting to facilitate a different
type of thinking and planning in the enterprise space. App Engine enables you to
build enterprise-scalable applications on the same infrastructure that Google uses!
The release of Java as the second official language for App Engine marks a
tremendous shift in the way applications are being built.
In this chapter we'll cover the basics of App Engine and how it's structured. We'll
discuss the major features and benefits of using a platform like App Engine as well as
some of the major design considerations (for example, application quotas) that must
take place in a multitenant environment.
App Engine Architecture
App Engine is structured differently from the typical web application server. At its core,
App Engine restricts your application from any access to the physical infrastructure,
preventing you from opening sockets, running background processes (although you
can use cron), and using other common back-end routines that application developers
take for granted in other environments. Take a look at Figure 2-1. Remember, App
Engine is designed to address your concerns about scalability and reliability. It is built
on the concept of horizontal scaling, which, in essence, means that instead of running
your application on more powerful hardware, you would run your application on more
instances of less powerful hardware.
In Figure 2-1 you can see your App Engine application running as an isolated
entity within the structure of the multitenant environment. As we discussed in
Chapter 1, App Engine shares resources among multiple applications but isolates the
data and security between each tenant as well. Your application is able to use some of
the Google services, like URL Fetch, to execute processes on its behalf. Because you
can't open ports directly within your application, you have to rely on this service, for
example, to request Google to open a port and execute the fetch on a URL for the