Living In The Cloud <ul><li>Hosting Data & Apps Using The Google Infrastructure </li></ul>
Introductions <ul><li>Pamela Fox  USC/Google </li></ul>http://www.wordle.net/gallery/wrdl/710650/fkedupmonkey_tags
The Cloud!
Tonight’s Agenda <ul><li>Google Data APIs </li></ul>App Engine
Before the Cloud: Web Apps
After the Cloud: Web Apps
<ul><li>Viral Spread + User Edits = Scaling Nightmare </li></ul>Mo’ Users, Mo’ Problems
Old Architecture code/data
Old Architecture
Old Architecture
Old Architecture
Solution: App Engine
What Is App Engine? <ul><li>Lets you run your  web  application on top of Google’s infrastructure. </li></ul><ul><li>Serve...
App Engine Architecture code data
Simple, Automatic Scaling
App Engine Components code data
Python
Data Store
Data Store db.GqlQuery(&quot;SELECT * FROM Shout &quot; &quot;WHERE who >= 'b '  AND who <  '   c  '   &quot; &quot;ORDER ...
Memcache
Users @gmail.com @myappsdomain.com
Demo <ul><li>Google App Engine </li></ul>
Before the Cloud: User Apps
After the Cloud: User Apps
<ul><li>Users demand ownership of their content. </li></ul><ul><li>Other sites want to access that content.  </li></ul>Dam...
Solution: Google data APIs
How Do You Make Things Accessible? <ul><li>An application programming interface (API) is a set of  functions, procedures, ...
APIs <ul><li>RPC || REST </li></ul><ul><li>* SOAP </li></ul>
Remote Procedure Calls fooInstance->addNumbers(2, 3); <?xml version=&quot;1.0&quot;?><methodCall>  <methodName>Foo.addNumb...
REST [Fielding 2000] Re presentational S tate T ransfer ( )
REST <ul><li>Fundamentals of REST: </li></ul>Application state and functionality is abstracted into discrete  resources .
REST <ul><li>Fundamentals of REST: </li></ul>Resources are accessible via  URLs . /blog/posts/1234
REST <ul><li>Fundamentals of REST: </li></ul>Resources share a  uniform interface  for  transferring state . HTTP:// } GET...
RSS/ATOM Feed { Entries Example RSS feed.
ATOMPub Feed { Entries GET POST PUT DELETE
Google data APIs Protocol Feed Query { Entries GET POST PUT DELETE
The Google Data Protocol REST Google Data Protocol RSS 2.0 Architecture Syndication Updates AtomPub Atom
The Google Data Protocol RSS 2.0 Atom(Pub) Google Data Syndication Format ✓ ✓ ✓ Queries ✓ Updates ✓ ✓ Optimistic Concurren...
The Google Data Protocol Over 15 APIs, 1 Protocol Many Uses
Case Study: CalGoo
The Google Data Protocol <ul><li>GET /myFeed </li></ul><ul><li>200 OK </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </...
The Google Data Protocol <ul><li>POST /myFeed </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry x...
The Google Data Protocol <ul><li>201 CREATED </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry xm...
The Google Data Protocol <ul><li>PUT /myFeed/1/1/ </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><ent...
The Google Data Protocol <ul><li>200 OK </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry xmlns=&...
The Google Data Protocol <ul><li>DELETE /myFeed/1/2/ </li></ul><ul><li>200 OK </li></ul>Updating an entry
Demo <ul><li>Google Data CRUD </li></ul>
The Google Data Protocol <ul><li>GET /myFeed?q=This </li></ul><ul><li>200 OK </li></ul><ul><li><?xml version=&quot;1.0&quo...
Demo <ul><li>Youtube Searcher </li></ul>
JSON and RSS <ul><li>Other formats are also supported: </li></ul>?alt=json ?alt=json-in-script ?alt=kml ?alt=rss
Client Libraries <ul><li>PHP </li></ul>.NET Java JavaScript Objective-C Python + Community Contributed
Demo <ul><li>Google Data Sample Applications </li></ul>
My Secret Motivation For Giving This Talk <ul><li>Google Data APIs </li></ul><ul><li>♥ </li></ul><ul><li>App Engine </li><...
Demo <ul><li>Google Data APIs + App Engine </li></ul>
Conclusion <ul><li>Google Data APIs </li></ul>App Engine Scalable Architecture (AtomPub) APIs
Questions? Pamela Fox [email_address] @pamelafox More Info http://code.google.com ↶
Upcoming SlideShare
Loading in...5
×

Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure

836

Published on

In the modern web, the user rules. Nearly every successful web app has to worry about scaling to an exponentially growing user base and giving those users multiple ways of interacting with their data. Pamela Fox, Maps API Support Engineer & Developer advocate, provides an overview of two technologies - Google App Engine and the Google Data APIs - that aim to make web development and data portability easier.

Published in: Technology, News & Politics
2 Comments
5 Likes
Statistics
Notes
  • Find coupons for your hosting. Get a promo deal before you purchase hosting http://www.scriptcoupons.com/Vps.net/
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Very nicely illustrated! Great job, and thanks for sharing.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
836
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
27
Comments
2
Likes
5
Embeds 0
No embeds

No notes for slide
  • Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure

    1. 1. Living In The Cloud <ul><li>Hosting Data & Apps Using The Google Infrastructure </li></ul>
    2. 2. Introductions <ul><li>Pamela Fox USC/Google </li></ul>http://www.wordle.net/gallery/wrdl/710650/fkedupmonkey_tags
    3. 3. The Cloud!
    4. 4. Tonight’s Agenda <ul><li>Google Data APIs </li></ul>App Engine
    5. 5. Before the Cloud: Web Apps
    6. 6. After the Cloud: Web Apps
    7. 7. <ul><li>Viral Spread + User Edits = Scaling Nightmare </li></ul>Mo’ Users, Mo’ Problems
    8. 8. Old Architecture code/data
    9. 9. Old Architecture
    10. 10. Old Architecture
    11. 11. Old Architecture
    12. 12. Solution: App Engine
    13. 13. What Is App Engine? <ul><li>Lets you run your web application on top of Google’s infrastructure. </li></ul><ul><li>Servers </li></ul><ul><li>Network </li></ul><ul><li>Datastore </li></ul><ul><li>Backups </li></ul><ul><li>Pagers </li></ul>“ We wear pagers so you don’t have to.” — Guido van Rossum Scalable }
    14. 14. App Engine Architecture code data
    15. 15. Simple, Automatic Scaling
    16. 16. App Engine Components code data
    17. 17. Python
    18. 18. Data Store
    19. 19. Data Store db.GqlQuery(&quot;SELECT * FROM Shout &quot; &quot;WHERE who >= 'b ' AND who < ' c ' &quot; &quot;ORDER BY when DESC&quot;).fetch(100) query = Shout.all() query.order('-date') query.filter('who >=', 'b') query.filter('who <', ‘c') shouts = query.fetch(100)
    20. 20. Memcache
    21. 21. Users @gmail.com @myappsdomain.com
    22. 22. Demo <ul><li>Google App Engine </li></ul>
    23. 23. Before the Cloud: User Apps
    24. 24. After the Cloud: User Apps
    25. 25. <ul><li>Users demand ownership of their content. </li></ul><ul><li>Other sites want to access that content. </li></ul>Damn Needy Users
    26. 26. Solution: Google data APIs
    27. 27. How Do You Make Things Accessible? <ul><li>An application programming interface (API) is a set of functions, procedures, methods or classes that an operating system , library or service provides to support requests made by computer programs . </li></ul><ul><li>Source: Wikipedia </li></ul>A pplication P rogramming I nterface ( )
    28. 28. APIs <ul><li>RPC || REST </li></ul><ul><li>* SOAP </li></ul>
    29. 29. Remote Procedure Calls fooInstance->addNumbers(2, 3); <?xml version=&quot;1.0&quot;?><methodCall> <methodName>Foo.addNumbers</methodName> <params> <param> <value><int>2</int></value> <value><int>3</int></value> </param> </params></methodCall> fooInstance.addNumbers(2, 3); PHP XML (Network) C++
    30. 30. REST [Fielding 2000] Re presentational S tate T ransfer ( )
    31. 31. REST <ul><li>Fundamentals of REST: </li></ul>Application state and functionality is abstracted into discrete resources .
    32. 32. REST <ul><li>Fundamentals of REST: </li></ul>Resources are accessible via URLs . /blog/posts/1234
    33. 33. REST <ul><li>Fundamentals of REST: </li></ul>Resources share a uniform interface for transferring state . HTTP:// } GET POST PUT DELETE
    34. 34. RSS/ATOM Feed { Entries Example RSS feed.
    35. 35. ATOMPub Feed { Entries GET POST PUT DELETE
    36. 36. Google data APIs Protocol Feed Query { Entries GET POST PUT DELETE
    37. 37. The Google Data Protocol REST Google Data Protocol RSS 2.0 Architecture Syndication Updates AtomPub Atom
    38. 38. The Google Data Protocol RSS 2.0 Atom(Pub) Google Data Syndication Format ✓ ✓ ✓ Queries ✓ Updates ✓ ✓ Optimistic Concurrency ✓ Authentication ✓
    39. 39. The Google Data Protocol Over 15 APIs, 1 Protocol Many Uses
    40. 40. Case Study: CalGoo
    41. 41. The Google Data Protocol <ul><li>GET /myFeed </li></ul><ul><li>200 OK </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><feed xmlns=&quot; http://www.w3.org/2005/Atom &quot;> </li></ul><ul><li><title>Foo</title> </li></ul><ul><li><updated>2006-01-23T16:25:00-08:00</updated> </li></ul><ul><li><id> http://www.example.com/myFeed </id> </li></ul><ul><li><author> </li></ul><ul><li><name>Jo March</name> </li></ul><ul><li></author> </li></ul><ul><li><link href=&quot;/myFeed&quot; rel=&quot;self&quot;/> </li></ul><ul><li></feed> </li></ul>Requesting a feed or resource
    42. 42. The Google Data Protocol <ul><li>POST /myFeed </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> </li></ul><ul><li><author> </li></ul><ul><li><name>Elizabeth Bennet</name> </li></ul><ul><li><email> [email_address] </email> </li></ul><ul><li></author> </li></ul><ul><li><title type=&quot;text&quot;>Entry 1</title> </li></ul><ul><li><content type=&quot;text&quot;>This is my entry</content> </li></ul><ul><li></entry> </li></ul>Creating a new resource
    43. 43. The Google Data Protocol <ul><li>201 CREATED </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> </li></ul><ul><li><id> http://www.example.com/id/1 </id> </li></ul><ul><li><link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> </li></ul><ul><li><updated>2006-01-23T16:26:03-08:00</updated> </li></ul><ul><li><author> </li></ul><ul><li><name>Elizabeth Bennet</name> </li></ul><ul><li><email> [email_address] </email> </li></ul><ul><li></author> </li></ul><ul><li><title type=&quot;text&quot;>Entry 1</title> </li></ul><ul><li><content type=&quot;text&quot;>This is my entry</content> </li></ul><ul><li></entry> </li></ul>Creating a new resource
    44. 44. The Google Data Protocol <ul><li>PUT /myFeed/1/1/ </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> </li></ul><ul><li><id> http://www.example.com/id/1 </id> </li></ul><ul><li><link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> </li></ul><ul><li><updated>2006-01-23T16:28:05-08:00</updated> </li></ul><ul><li><author> </li></ul><ul><li><name>Elizabeth Bennet</name> </li></ul><ul><li><email> [email_address] </email> </li></ul><ul><li></author> </li></ul><ul><li><title type=&quot;text&quot;>Entry 1</title> </li></ul><ul><li><content type=&quot;text&quot;>This is my first entry.</content> </li></ul><ul><li></entry> </li></ul>Updating an entry
    45. 45. The Google Data Protocol <ul><li>200 OK </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> </li></ul><ul><li><id> http://www.example.com/id/1 </id> </li></ul><ul><li><link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/2/ &quot;/> </li></ul><ul><li><updated>2006-01-23T16:28:05-08:00</updated> </li></ul><ul><li><author> </li></ul><ul><li><name>Elizabeth Bennet</name> </li></ul><ul><li><email> [email_address] </email> </li></ul><ul><li></author> </li></ul><ul><li><title type=&quot;text&quot;>Entry 1</title> </li></ul><ul><li><content type=&quot;text&quot;>This is my first entry.</content> </li></ul><ul><li></entry> </li></ul>Updating an entry
    46. 46. The Google Data Protocol <ul><li>DELETE /myFeed/1/2/ </li></ul><ul><li>200 OK </li></ul>Updating an entry
    47. 47. Demo <ul><li>Google Data CRUD </li></ul>
    48. 48. The Google Data Protocol <ul><li>GET /myFeed?q=This </li></ul><ul><li>200 OK </li></ul><ul><li><?xml version=&quot;1.0&quot;?> </li></ul><ul><li><feed xmlns=&quot; http://www.w3.org/2005/Atom &quot;> </li></ul><ul><li><title>Foo</title> </li></ul><ul><li><updated>2006-01-23T16:26:03-08:00</updated> </li></ul><ul><li><id> http://www.example.com/myFeed </id> </li></ul><ul><li><link href=&quot;/myFeed&quot; rel=&quot;self&quot;/> </li></ul><ul><li><entry> </li></ul><ul><li><id> http://www.example.com/id/1 </id> </li></ul><ul><li><link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> </li></ul><ul><li><updated>2006-01-23T16:26:03-08:00</updated> </li></ul><ul><li><title type=&quot;text&quot;>Entry 1</title> </li></ul><ul><li><content type=&quot;text&quot;>This is my entry</content> </li></ul><ul><li></entry> </li></ul><ul><li></feed> </li></ul>Searching for a resource
    49. 49. Demo <ul><li>Youtube Searcher </li></ul>
    50. 50. JSON and RSS <ul><li>Other formats are also supported: </li></ul>?alt=json ?alt=json-in-script ?alt=kml ?alt=rss
    51. 51. Client Libraries <ul><li>PHP </li></ul>.NET Java JavaScript Objective-C Python + Community Contributed
    52. 52. Demo <ul><li>Google Data Sample Applications </li></ul>
    53. 53. My Secret Motivation For Giving This Talk <ul><li>Google Data APIs </li></ul><ul><li>♥ </li></ul><ul><li>App Engine </li></ul>
    54. 54. Demo <ul><li>Google Data APIs + App Engine </li></ul>
    55. 55. Conclusion <ul><li>Google Data APIs </li></ul>App Engine Scalable Architecture (AtomPub) APIs
    56. 56. Questions? Pamela Fox [email_address] @pamelafox More Info http://code.google.com ↶
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×