Google Developer Days Brazil 2009 - Java Appengine

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    3 Favorites

    Google Developer Days Brazil 2009 - Java Appengine - Presentation Transcript

    1. Google App Engine Now Serving Java Chris Schalk June 29, 2009
    2. Goals •  Help you understand... –  what App Engine is. –  what App Engine is not. –  where App Engine preserves programming models. –  where App Engine changes programming models. •  Demonstrate that App Engine really is fast and free to get started. 2
    3. Overview •  Google App Engine •  Java on App Engine •  The App Engine Datastore •  Demo •  Questions 3
    4. What Is Google App Engine? •  A cloud-computing platform •  Run your web apps on Google’s infrastructure •  We provide the container and services (PaaS) –  Hardware, connectivity –  Operating system –  JVM –  Servlet container –  Software services 4
    5. Key Features •  No need to install or maintain your own stack •  We scale for you •  Use Google’s scalable services via standard APIs •  Charge only for actual usage –  Always free to get started •  Built-in application management console 5
    6. App Engine Architecture Incoming Requests App Engine App Engine App Engine Front End Front End Front End Load Balancer AppServer AppServer AppServer Other Google AppServer Infrastructure API Layer - Bigtable - Google Accounts - Memcache App App App - Image manipulation 6
    7. When To Use Google App Engine •  Targeting web applications –  Serve HTTP requests, limited to 30 seconds –  No long-running background processes –  No server push •  Sandboxed environment –  No threads –  Read-only file system 7
    8. Java Support •  Servlets •  Software services •  Sandboxing •  DevAppServer •  Deployment •  Tooling 8
    9. Demo! Java App Engine Basics
    10. Servlet API •  Full Servlet 2.5 Container –  HTTP Session –  JSP •  Uses Jetty and Jasper –  Powered by Google’s HTTP stack –  No Jetty-specific features –  Subject to change 10
    11. Software Services Authentication Servlet API Google Accounts Datastore JPA, JDO Bigtable Caching javax.cache memcacheg E-mail javax.mail Gmail gateway URLFetch URLConnection Caching HTTP proxy 11
    12. Sandboxing •  What do we do? –  Restrict JVM permissions –  WhiteList classes •  Why is it necessary? –  Clustering - JVMs come and go –  Protect applications from one another 12
    13. Sandboxing Restrictions Threads Async API (coming soon) Direct network connections URLConnection Direct file system writes Memory, memcache, datastore Images API Java2D Software rendering Native code Pure Java libraries 13
    14. Flexible Sandboxing •  JVM Permissions often too coarse •  Reflection –  Access private fields, call private methods •  Class Loading –  Custom Class Loaders –  Dynamic bytecode •  Alternate JVM languages 14
    15. DevAppServer •  Emulates the production environment •  Customized Jetty server •  Local implementation of services –  LRU memcache –  Disk-backed datastore –  HttpClient-backed URLFetch •  Some sandbox restrictions difficult to emulate 15
    16. Deployment •  Your app lives at –  <app_id>.appspot.com, or –  Custom domain with Google Apps for your Domain •  Command line and IDE tools •  Application •  Datastore Indexes •  Cron Jobs 16
    17. Quotas and Billing CPU 6.5 hours/day $0.10/hour Bandwidth In 1GByte/day $0.10/GByte Bandwidth Out 1GByte/day $0.12/GByte Stored Data 1 GB $0.005/GB-day 2000/day to users Emails sent $0.0001/email 5000/day to admins 17
    18. Tooling •  SDK Tools API –  Command-line tools, Ant, and IDE plugins •  Provides –  Deployment –  DevAppServer –  WhiteList for compile-time checks –  XML validation •  Google Eclipse Plugin 18
    19. The Datastore Is... •  Distributed •  Scalable •  Transactional •  Natively Partitioned •  Hierarchical •  Schema-less •  Based on Bigtable 19
    20. The Datastore Is Not... •  A relational database •  A SQL engine •  Just Bigtable 20
    21. Simplifying Storage •  Simplify development of apps •  Simplify management of apps •  App Engine services build on Google’s strengths •  Scale always matters –  Request volume –  Data volume 21
    22. Datastore Storage Model •  Basic unit of storage is an Entity consisting of –  Kind (table) –  Key (pk) –  Entity Group (top level ancestor) •  Has locking implications –  0..N typed Properties (columns) 22
    23. Interesting Datastore Modeling Features •  Ancestor •  Multi-value properties •  Variable properties •  Heterogenous property types Kind Person Kind Person Entity Group /Person:Ethel Entity Group /Person:Ethel Key /Person:Ethel Age Int64: 30 Key /Person:Ethel/Person:Jane Hobbies String: Tennis Age Double: 3.5 23 Pets Key:/Turtle:Sam Key:/Dog:Ernie
    24. Datastore Transactions •  Transactions apply to a single Entity Group –  Global transactions are feasible •  get(), put(), delete() are transactional •  Queries are not transactional (yet) /Person:Ethel Transaction /Person:Ethel/Person:Jane /Person:Max 24
    25. Datastore Queries •  Every query must be supported by an index –  Built-in or user-defined •  Filters –  Equality, inequality, intersection, ancestor –  Union, IN not supported (yet) –  Joins not supported (unlikely, but never say never) •  Sorting 25
    26. Standards-based Persistence •  JDO or JPA (your choice) –  Established apis and existing tooling –  Easier porting –  Mappable (mostly) to the datastore –  Soft schemas •  DataNucleus App Engine plugin •  Why not a JDBC driver instead? 26
    27. Transparent Entity Group Management •  Entity Group layout is important –  Write throughput –  Atomicity of updates •  Ownership implies co-location within Entity Group Kind Pet Entity Group /Person:Ethel Key /Person:Ethel/Pet:Sam 27
    28. Demo! Building Apps with Java App Engine
    29. Coming Soon •  Task queues •  Full text search •  Incoming email •  XMPP •  Large file storage and retrieval •  Datastore export tools 29
    30. Q&A

    + chanezonchanezon, 4 months ago

    custom

    960 views, 3 favs, 0 embeds more stats

    slides for java appengine talk, from Chris Schalk

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 960
      • 960 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 3
    • Downloads 22
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories