Your SlideShare is downloading. ×
0
Living In The Cloud <ul><li>Hosting Data & Apps Using The Google Infrastructure </li></ul>
Introductions <ul><li>Pamela Fox </li></ul><ul><li>USC </li></ul><ul><li>Google </li></ul><ul><li>MS/BS CS </li></ul>
Introductions 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 </li></ul><ul><li>Simultaneous Edits </li></ul><ul><li>= Scaling Nightmare </li></ul>Mo’ Users, Mo’ P...
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...
Why App Engine <ul><li>“ We wear pagers so you don’t have to.” </li></ul>—  Guido van Rossum
Simplicity <ul><li>App Engine is designed to be simple. </li></ul>Simple application configuration. No systems administrat...
App Engine Architecture code data
Non-Scalable Architecture 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
Before 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? A pplication P rogramming I nterface ( )
APIs <ul><li>An  application programming interface (API)  is a set of  functions, procedures, methods  or  classes  that a...
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 ATOM feed.
ATOMPub Feed { Entries
Google data APIs Protocol Feed Query { Entries
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 http://co...
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>
Questions?
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

1,671

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. This talk will provide an overview of two technologies that aim to make web development and data portability easier: Google App Engine and the Google Data APIs.

This talk was presented by Pamela Fox, who works on the Google Developer Relations team as the Maps API Support Engineer.

Published in: Technology, News & Politics
2 Comments
3 Likes
Statistics
Notes
  • Try http://anhostinghost.blogspot.com/ for a good hosting
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Excellent ppt
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,671
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
54
Comments
2
Likes
3
Embeds 0
No embeds

No notes for slide
  • Transcript of "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 </li></ul><ul><li>USC </li></ul><ul><li>Google </li></ul><ul><li>MS/BS CS </li></ul>
    3. 3. Introductions http://www.wordle.net/gallery/wrdl/710650/fkedupmonkey_tags
    4. 4. The Cloud!
    5. 5. Tonight’s Agenda <ul><li>Google Data APIs </li></ul>App Engine
    6. 6. Before the Cloud: Web Apps
    7. 7. After the Cloud: Web Apps
    8. 8. <ul><li>Viral Spread </li></ul><ul><li>Simultaneous Edits </li></ul><ul><li>= Scaling Nightmare </li></ul>Mo’ Users, Mo’ Problems
    9. 9. Solution: App Engine
    10. 10. 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>Scalable }
    11. 11. Why App Engine <ul><li>“ We wear pagers so you don’t have to.” </li></ul>— Guido van Rossum
    12. 12. Simplicity <ul><li>App Engine is designed to be simple. </li></ul>Simple application configuration. No systems administration. No performance tuning. Automatic scaling.
    13. 13. App Engine Architecture code data
    14. 14. Non-Scalable Architecture code/data
    15. 15. Python
    16. 16. Data Store
    17. 17. 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)
    18. 18. Memcache
    19. 19. Users @gmail.com @myappsdomain.com
    20. 20. Demo <ul><li>Google App Engine </li></ul>
    21. 21. Before the Cloud: User Apps
    22. 22. Before the Cloud: User Apps
    23. 23. <ul><li>Users demand ownership of their content. </li></ul><ul><li>Other sites want to access that content. </li></ul>Damn Needy Users
    24. 24. Solution: Google data APIs
    25. 25. How Do You Make Things Accessible? A pplication P rogramming I nterface ( )
    26. 26. APIs <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>C/C++ Header File
    27. 27. APIs <ul><li>RPC || REST </li></ul><ul><li>* SOAP </li></ul>
    28. 28. 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++
    29. 29. REST [Fielding 2000] Re presentational S tate T ransfer ( )
    30. 30. REST <ul><li>Fundamentals of REST: </li></ul>Application state and functionality is abstracted into discrete resources .
    31. 31. REST <ul><li>Fundamentals of REST: </li></ul>Resources are accessible via URLs . /blog/posts/1234
    32. 32. REST <ul><li>Fundamentals of REST: </li></ul>Resources share a uniform interface for transferring state . HTTP:// } GET POST PUT DELETE
    33. 33. RSS/ATOM Feed { Entries Example ATOM feed.
    34. 34. ATOMPub Feed { Entries
    35. 35. Google data APIs Protocol Feed Query { Entries
    36. 36. The Google Data Protocol REST Google Data Protocol RSS 2.0 Architecture Syndication Updates AtomPub Atom
    37. 37. The Google Data Protocol RSS 2.0 Atom(Pub) Google Data Syndication Format ✓ ✓ ✓ Queries ✓ Updates ✓ ✓ Optimistic Concurrency ✓ Authentication ✓
    38. 38. The Google Data Protocol Over 15 APIs, 1 Protocol Many Uses
    39. 39. Case Study: CalGoo
    40. 40. 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
    41. 41. 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
    42. 42. 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
    43. 43. 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
    44. 44. 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
    45. 45. The Google Data Protocol <ul><li>DELETE /myFeed/1/2/ </li></ul><ul><li>200 OK </li></ul>Updating an entry
    46. 46. Demo <ul><li>Google Data CRUD </li></ul>
    47. 47. 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
    48. 48. Demo <ul><li>Youtube Searcher </li></ul>
    49. 49. JSON and RSS <ul><li>Other formats are also supported: </li></ul>?alt=json ?alt=json-in-script ?alt=kml ?alt=rss http://code.google.com/apis/gdata/json.html
    50. 50. Client Libraries <ul><li>PHP </li></ul>.NET Java JavaScript Objective-C Python + Community Contributed
    51. 51. Demo <ul><li>Google Data Sample Applications </li></ul>
    52. 52. My Secret Motivation For Giving This Talk <ul><li>Google Data APIs </li></ul><ul><li>♥ </li></ul><ul><li>App Engine </li></ul>
    53. 53. Demo <ul><li>Google Data APIs + App Engine </li></ul>
    54. 54. Questions?
    55. 55. 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.

    ×