GAE Architecture w/ some services - generic
Front-End: Load Balancing &
Request Forwarding
Static Files: Serving static files,
i.e. images/CSS/JS
AppServer: Process requests &
call services
Datastore: central place for data
persistence
The runtime environment includes the interpreter that executes the code (either the
Python interpreter or the Java virtual machine), the application's memory, a read-only
filesystem with the application's resource files, and APIs to the App Engine services.
The runtime environment also includes the request handler API, which defines how
the server and the handler communicate information about the request and the response,
and how the handler emits messages to the App Engine logging system.
The
details differ between the Python and Java environments, but can involve environment
variables and the system input and output streams.
Because must run in sandbox for app security (other apps dont hack into yours)
>>no local file, no system call, no socket connection
<< these services help accommodate for the loss of this
Datastore API
- Storing data and manipulation
- Based on Bigtable
- Not a relational database
- GQL (Google Query Language)
- For Java options - use JDO or JPA or native Google App Engine API
- Package com.google.appengine.api.datastore
Memcache
- Faster than Datastore
- Storage on memory rather on disk
- Arbitrary key-value pair mapping
- implements JCache interface
- ?(1) MB limit per entry
- Free quota (varies --see current rules) around 8.6M/day, 800 request/sec
- Package com.google.appengine.api.memcache
User Service
- Using google accounts for authentication
- @gmail.com address
- Apps for Domain
- Admin Privileges
- Package com.google.appengine.api.users
URLFetch Service
- Alternative as no Sockets
- Load external URL
- Asynchronous support
- HTTP/HTTPS
- Max 10 second response (see current stats http://code.google.com/appengine/docs/java/urlfetch/)
- Max 1MB data (see current stats http://code.google.com/appengine/docs/java/urlfetch/)
- Package com.google.appengine.api.urlfetch
Mail Service
- sending mail from your application
- Package com.google.appengine.api.mail
• com.google.appengine.api.datastore
XMPP Service
- sending/receiving XMPP-compatible instant messages
Task Queues
- for invoking background processes
Images
- for image manipulation
- uses Picasa
- Package com.google.appengine.api.images
Cron Jobs
- scheduled tasks on defined time