The document discusses using Google App Engine to power native Android applications. It provides an overview of App Engine, including what it is, the infrastructure and services it provides like Python and Java runtimes, and its scalable architecture. It explains why developers might use App Engine due to its ease of setup and ability to automatically scale applications. It also includes a demo and overview of the App Engine datastore.
5. Spectrum of cloud-based services
SaaS Software as a Service
PaaS Platform as a Service
IaaS Infrastructure as a Service
6. Spectrum of cloud-based services
SaaS Software as a Service
PaaS Platform as a Service
IaaS Infrastructure as a Service
7. Sandbox restrictions
Applications cannot currently:
open a socket or access another host directly
spawn a sub-process or thread
make other system calls
write to the filesystem
Python applications cannot include C extensions or other code
that must be compiled.
Java applications cannot use unapproved JRE classes.
23. Scale dynamically and automatically
Use
Use r
r
App App’s
Use Engine Runtime
r Frontend
Use
r Use
r
24. Scale dynamically and automatically
Use
App’s
Use r
Runtime
r
App App’s
Use Engine Runtime
r Frontend
App’s
Runtime
Use
r Use
r
25. Scale dynamically and automatically
Incoming requests
App Engine App Engine App Engine
Front End Front End Front End
Load Balancer
AppServer AppServer AppServer
26. Free quota
Every App Engine application receives the following at no cost:
6.5 CPU hours per day
1.0 GB incoming bandwidth per day
1.0 GB outgoing bandwidth per day
1.0 GB storage (data + indexes)
2,000 emails sent per day
32. Datastore properties
Core value types
string
integer
floating point
datetime
boolean
Composite value types
users.User
db.Email
...
Lists (multi-valued)
Text and binary blobs
References (keys)
33. Datastore - what's familiar?
Indexes
ACID transactions
GQL (SQL-like syntax):
db.GqlQuery('''
SELECT * FROM Story
WHERE title = 'App Engine Launch'
AND rating >= 10
ORDER BY rating, created DESC
''')
34. Datastore - what's different?
No inner, outer, or natural joins
Dense index scans
Per-entity metadata
Soft schema (no DDL!)
Queries as object syntax:
q = Story.all()
q.filter("title =", 'App Engine Launch')
q.filter("rating >=", 10)
q.order("-rating")
q.order("-created")
42. Querying geospatial data
Latitudes and longitudes can't be queried separately in ranges.
More and more solutions use geohashes or geocells to do
geospatial queries. Examples:
GeoModel
http://code.google.com/p/geomodel/
http://code.google.com/p/javageomodel
Supports both bounding-box and proximity queries
mutiny
http://code.google.com/p/mutiny/
Sample: http://mutiny.appspot.com
geodatastore
http://code.google.com/p/geodatastore/
43. Thanks!
Jason Cooper
Developer Programs Engineer
jasonacooper@google.com