App Engine overview (Android meetup 06-10)

1,916 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,916
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
39
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

App Engine overview (Android meetup 06-10)

  1. 1. Using App Engine to power your native Android applications Jason Cooper Developer Programs Engineer jasonacooper@google.com
  2. 2. What is App Engine?
  3. 3. Spectrum of cloud-based services IaaS Infrastructure as a Service
  4. 4. Spectrum of cloud-based services SaaS Software as a Service IaaS Infrastructure as a Service
  5. 5. Spectrum of cloud-based services SaaS Software as a Service PaaS Platform as a Service IaaS Infrastructure as a Service
  6. 6. Spectrum of cloud-based services SaaS Software as a Service PaaS Platform as a Service IaaS Infrastructure as a Service
  7. 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.
  8. 8. APIs and services
  9. 9. Ensuring portability
  10. 10. Components Python, JVM Runtimes Local Admin SDK Console Scalable Infrastructure Linux, GFS, Bigtable, custom hardware
  11. 11. Components Local Admin SDK Console
  12. 12. Google Plugin for Eclipse
  13. 13. Admin Console http://appengine.google.com
  14. 14. System Status http://code.google.com/status/appengine
  15. 15. Why App Engine?
  16. 16. Setting up a (scalable) app is hard!
  17. 17. Setting up a (scalable) app is hard! Initial setup servers networking load balancers software licenses Maintenance patches upgrades Forecasting traffic utilization TIME! MONEY!
  18. 18. "Run your apps on Google's scalable infrastructure"
  19. 19. Easy to use, scale, and manage
  20. 20. Scale dynamically and automatically App App’s Use Engine Runtime r Frontend
  21. 21. Scale dynamically and automatically App App’s Use Engine Runtime r Frontend
  22. 22. Scale dynamically and automatically Use Use r r App App’s Use Engine Runtime r Frontend Use r Use r
  23. 23. 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
  24. 24. Scale dynamically and automatically Incoming requests App Engine App Engine App Engine Front End Front End Front End Load Balancer AppServer AppServer AppServer
  25. 25. 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
  26. 26. Purchase resources as needed
  27. 27. Demo!
  28. 28. Datastore deep dive
  29. 29. Bigtable
  30. 30. Datastore design Distributed Bigtable + entity groups ACID transactions Optimistic concurrency Entities + indexes Protobuf encoded entities
  31. 31. 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)
  32. 32. 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 ''')
  33. 33. 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")
  34. 34. Bigtable queries 1. Scan rows 2. Pre-generate index tables 3. Each index row "points" to entity
  35. 35. Bigtable queries (contd.)
  36. 36. Bigtable queries (contd.)
  37. 37. Bigtable queries (contd.)
  38. 38. Bigtable queries (contd.)
  39. 39. Bigtable queries (contd.)
  40. 40. Bigtable queries (contd.)
  41. 41. 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/
  42. 42. Thanks! Jason Cooper Developer Programs Engineer jasonacooper@google.com

×