Breaking it down a bit more, consider an apartment building (App Engine) with
central air and heating controls. You are a tenant (your App Engine application) in
this building. You can't directly adjust the temperature because that would affect the
other tenants (other App Engine applications). So, you have to send a request to the
building super to change the temperature on your behalf (URLFetch, Bigtable query,
Memcache, mail, XMPP, any other Google App Engine service). This is essentially
what is happening with App Engine.
If you take a step back, you'll see the long-term implications of this approach. As a
developer you now get to ignore scalability concerns like execution time on methods
after you have increased data in your datastore. In exchange, you get a fixed duration
on execution no matter what your scale becomes. App Engine's response times will
be steady from your first request to your millionth request.
Figure 2-1. App Engine architecture
Notice that no file system or components of the architecture represent the physical
machine. With App Engine, you have access only to the application layer. There are
some open-source projects, for example, Google Virtual File System, that allow you to