SlideShare a Scribd company logo
Living In The Cloud Hosting Data & Apps Using The Google Infrastructure
Introductions Pamela Fox  USC/Google http://www.wordle.net/gallery/wrdl/710650/fkedupmonkey_tags
The Cloud!
Tonight’s Agenda Google Data APIs App Engine
Before the Cloud: Web Apps
After the Cloud: Web Apps
Viral Spread + User Edits = Scaling Nightmare Mo’ Users, Mo’ Problems
Old Architecture code/data
Old Architecture
Old Architecture
Old Architecture
Solution: App Engine
What Is App Engine? Lets you run your  web  application on top of Google’s infrastructure. Servers Network Datastore Backups Pagers “ We wear pagers so you don’t have to.” —  Guido van Rossum Scalable }
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 BY when DESC&quot;).fetch(100) query = Shout.all() query.order('-date') query.filter('who >=', 'b') query.filter('who <', ‘c') shouts = query.fetch(100)
Memcache
Users @gmail.com @myappsdomain.com
Demo Google App Engine
Before the Cloud: User Apps
After the Cloud: User Apps
Users demand ownership of their content. Other sites want to access that content.  Damn Needy Users
Solution: Google data APIs
How Do You Make Things Accessible? 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 . Source: Wikipedia A pplication P rogramming I nterface ( )
APIs RPC || REST * SOAP
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++
REST [Fielding 2000] Re presentational S tate T ransfer ( )
REST Fundamentals of REST: Application state and functionality is abstracted into discrete  resources .
REST Fundamentals of REST: Resources are accessible via  URLs . /blog/posts/1234
REST Fundamentals of REST: Resources share a  uniform interface  for  transferring state . HTTP:// } GET POST PUT DELETE
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 Concurrency ✓ Authentication ✓
The Google Data Protocol Over 15 APIs, 1 Protocol Many Uses
Case Study: CalGoo
The Google Data Protocol GET /myFeed 200 OK <?xml version=&quot;1.0&quot;?> <feed xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <title>Foo</title> <updated>2006-01-23T16:25:00-08:00</updated> <id> http://www.example.com/myFeed </id> <author> <name>Jo March</name> </author> <link href=&quot;/myFeed&quot; rel=&quot;self&quot;/> </feed> Requesting a feed or resource
The Google Data Protocol POST /myFeed <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <author> <name>Elizabeth Bennet</name>  <email> [email_address] </email>  </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my entry</content> </entry> Creating a new resource
The Google Data Protocol 201 CREATED <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> <updated>2006-01-23T16:26:03-08:00</updated> <author> <name>Elizabeth Bennet</name>  <email> [email_address] </email>  </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my entry</content> </entry> Creating a new resource
The Google Data Protocol PUT /myFeed/1/1/ <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name>  <email> [email_address] </email>  </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my first entry.</content> </entry> Updating an entry
The Google Data Protocol 200 OK <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/2/ &quot;/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name>  <email> [email_address] </email>  </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my first entry.</content> </entry> Updating an entry
The Google Data Protocol DELETE /myFeed/1/2/ 200 OK Updating an entry
Demo Google Data CRUD
The Google Data Protocol GET /myFeed?q=This 200 OK <?xml version=&quot;1.0&quot;?> <feed xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <title>Foo</title> <updated>2006-01-23T16:26:03-08:00</updated> <id> http://www.example.com/myFeed </id> <link href=&quot;/myFeed&quot; rel=&quot;self&quot;/> <entry> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> <updated>2006-01-23T16:26:03-08:00</updated> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my entry</content> </entry> </feed> Searching for a resource
Demo Youtube Searcher
JSON and RSS Other formats are also supported: ?alt=json ?alt=json-in-script ?alt=kml ?alt=rss
Client Libraries PHP .NET Java JavaScript Objective-C Python + Community Contributed
Demo Google Data Sample Applications
My Secret Motivation For Giving This Talk Google Data APIs ♥ App Engine
Demo Google Data APIs + App Engine
Conclusion Google Data APIs App Engine Scalable Architecture (AtomPub) APIs
Questions? Pamela Fox [email_address] @pamelafox More Info http://code.google.com ↶

More Related Content

PPT
Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure
PDF
Pythonの勉強がてら死活監視ツールを作った話
PPTX
1-04: HTML Elements
PPTX
Doing More with Less: Automated, High-Quality Content Generation
PPT
Getting More Traffic From Search Advanced Seo For Developers Presentation
PPT
Advanced SEO for Web Developers
PPTX
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
PDF
Web Services, for DevDays Belfast
Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure
Pythonの勉強がてら死活監視ツールを作った話
1-04: HTML Elements
Doing More with Less: Automated, High-Quality Content Generation
Getting More Traffic From Search Advanced Seo For Developers Presentation
Advanced SEO for Web Developers
How to build simple web apps to automate your SEO tasks - BrightonSEO Spring ...
Web Services, for DevDays Belfast

What's hot (20)

PPT
Spam Wars
PDF
Server Logs: After Excel Fails
PPTX
Week 9 10 ppt-google_search
PDF
Information Retrieval and Extraction
PPTX
Week 9 10 ppt-how_searchworks
PPT
Pubcon Vegas 2017 You're Going To Screw Up International SEO - Patrick Stox
PPTX
Google's Top 3 Ranking Factors - Content, Links, and RankBrain - Raleigh SEO ...
PDF
Twitter data analysis using r (part 2)
PDF
FoundConf 2018 Signals Speak - Alexis Sanders
PPT
Using the RSS Platform on Windows: Syndication Goes Mainstream
PPTX
TechSEO Boost 2018: The Statelessness of Technical SEO
PPTX
Mobile-First Indexing and AMP - SMX Advanced 2018
PPTX
TechSEO Boost 2017: SEO Best Practices for JavaScript T-Based Websites
PPTX
Cloud Computing Project
PPTX
Week13 key concepts_googlesearchtechniques
PPTX
Week12keyconceptsgooglesearchtechniques
PPTX
5 Time-Saving SEO Alerts to Use Right Now - brightonSEO 2019
PPT
Fe Colleges Conference
PPTX
Introducing URL Shorteners
Spam Wars
Server Logs: After Excel Fails
Week 9 10 ppt-google_search
Information Retrieval and Extraction
Week 9 10 ppt-how_searchworks
Pubcon Vegas 2017 You're Going To Screw Up International SEO - Patrick Stox
Google's Top 3 Ranking Factors - Content, Links, and RankBrain - Raleigh SEO ...
Twitter data analysis using r (part 2)
FoundConf 2018 Signals Speak - Alexis Sanders
Using the RSS Platform on Windows: Syndication Goes Mainstream
TechSEO Boost 2018: The Statelessness of Technical SEO
Mobile-First Indexing and AMP - SMX Advanced 2018
TechSEO Boost 2017: SEO Best Practices for JavaScript T-Based Websites
Cloud Computing Project
Week13 key concepts_googlesearchtechniques
Week12keyconceptsgooglesearchtechniques
5 Time-Saving SEO Alerts to Use Right Now - brightonSEO 2019
Fe Colleges Conference
Introducing URL Shorteners
Ad

Viewers also liked (7)

PDF
Ten modules I haven't yet talked about
PDF
Iot dan cc
PDF
Living in the cloud
PDF
Web技術勉強会6回目
PPT
Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure
PDF
Fallacies of distributed computing
PPT
六合彩
Ten modules I haven't yet talked about
Iot dan cc
Living in the cloud
Web技術勉強会6回目
Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure
Fallacies of distributed computing
六合彩
Ad

Similar to Living in the Cloud: Hosting Data & Apps Using the Google Infrastructure (20)

ZIP
GTAC: AtomPub, testing your server implementation
PPT
Web APIs & Google APIs
PPT
Struts2
PPT
Lecture1 B Frames&Forms
PPT
Migration testing framework
PPTX
DevDays09 Internet Explorer 8
PPT
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
PPT
An Introduction to Solr
PPT
Dan Holevoet, Google
PPT
Developing Gadgets
ODP
Developing and testing ajax components
PPT
OpenSocial - GTUG Stockholm Meeting Oct 1 2009
PPT
Ajax ons2
PPT
Html5 Overview
ODP
Phing - A PHP Build Tool (An Introduction)
PPT
Introduction To ASP.NET MVC
ODP
Architecting Web Services
ODP
REST dojo Comet
GTAC: AtomPub, testing your server implementation
Web APIs & Google APIs
Struts2
Lecture1 B Frames&Forms
Migration testing framework
DevDays09 Internet Explorer 8
Enterprise Google Gadgets Integrated with Alfresco - Open Source ECM
An Introduction to Solr
Dan Holevoet, Google
Developing Gadgets
Developing and testing ajax components
OpenSocial - GTUG Stockholm Meeting Oct 1 2009
Ajax ons2
Html5 Overview
Phing - A PHP Build Tool (An Introduction)
Introduction To ASP.NET MVC
Architecting Web Services
REST dojo Comet

Recently uploaded (20)

PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
sap open course for s4hana steps from ECC to s4
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
cuic standard and advanced reporting.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Electronic commerce courselecture one. Pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation theory and applications.pdf
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Approach and Philosophy of On baking technology
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Cloud computing and distributed systems.
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Unlocking AI with Model Context Protocol (MCP)
Reach Out and Touch Someone: Haptics and Empathic Computing
sap open course for s4hana steps from ECC to s4
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
cuic standard and advanced reporting.pdf
Review of recent advances in non-invasive hemoglobin estimation
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Chapter 3 Spatial Domain Image Processing.pdf
Electronic commerce courselecture one. Pdf
20250228 LYD VKU AI Blended-Learning.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation theory and applications.pdf
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Approach and Philosophy of On baking technology
Diabetes mellitus diagnosis method based random forest with bat algorithm
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Cloud computing and distributed systems.
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf

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

  • 1. Living In The Cloud Hosting Data & Apps Using The Google Infrastructure
  • 2. Introductions Pamela Fox USC/Google http://www.wordle.net/gallery/wrdl/710650/fkedupmonkey_tags
  • 4. Tonight’s Agenda Google Data APIs App Engine
  • 5. Before the Cloud: Web Apps
  • 6. After the Cloud: Web Apps
  • 7. Viral Spread + User Edits = Scaling Nightmare Mo’ Users, Mo’ Problems
  • 13. What Is App Engine? Lets you run your web application on top of Google’s infrastructure. Servers Network Datastore Backups Pagers “ We wear pagers so you don’t have to.” — Guido van Rossum Scalable }
  • 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)
  • 22. Demo Google App Engine
  • 23. Before the Cloud: User Apps
  • 24. After the Cloud: User Apps
  • 25. Users demand ownership of their content. Other sites want to access that content. Damn Needy Users
  • 27. How Do You Make Things Accessible? 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 . Source: Wikipedia A pplication P rogramming I nterface ( )
  • 28. APIs RPC || REST * SOAP
  • 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. REST [Fielding 2000] Re presentational S tate T ransfer ( )
  • 31. REST Fundamentals of REST: Application state and functionality is abstracted into discrete resources .
  • 32. REST Fundamentals of REST: Resources are accessible via URLs . /blog/posts/1234
  • 33. REST Fundamentals of REST: Resources share a uniform interface for transferring state . HTTP:// } GET POST PUT DELETE
  • 34. RSS/ATOM Feed { Entries Example RSS feed.
  • 35. ATOMPub Feed { Entries GET POST PUT DELETE
  • 36. Google data APIs Protocol Feed Query { Entries GET POST PUT DELETE
  • 37. The Google Data Protocol REST Google Data Protocol RSS 2.0 Architecture Syndication Updates AtomPub Atom
  • 38. The Google Data Protocol RSS 2.0 Atom(Pub) Google Data Syndication Format ✓ ✓ ✓ Queries ✓ Updates ✓ ✓ Optimistic Concurrency ✓ Authentication ✓
  • 39. The Google Data Protocol Over 15 APIs, 1 Protocol Many Uses
  • 41. The Google Data Protocol GET /myFeed 200 OK <?xml version=&quot;1.0&quot;?> <feed xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <title>Foo</title> <updated>2006-01-23T16:25:00-08:00</updated> <id> http://www.example.com/myFeed </id> <author> <name>Jo March</name> </author> <link href=&quot;/myFeed&quot; rel=&quot;self&quot;/> </feed> Requesting a feed or resource
  • 42. The Google Data Protocol POST /myFeed <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <author> <name>Elizabeth Bennet</name> <email> [email_address] </email> </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my entry</content> </entry> Creating a new resource
  • 43. The Google Data Protocol 201 CREATED <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> <updated>2006-01-23T16:26:03-08:00</updated> <author> <name>Elizabeth Bennet</name> <email> [email_address] </email> </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my entry</content> </entry> Creating a new resource
  • 44. The Google Data Protocol PUT /myFeed/1/1/ <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name> <email> [email_address] </email> </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my first entry.</content> </entry> Updating an entry
  • 45. The Google Data Protocol 200 OK <?xml version=&quot;1.0&quot;?> <entry xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/2/ &quot;/> <updated>2006-01-23T16:28:05-08:00</updated> <author> <name>Elizabeth Bennet</name> <email> [email_address] </email> </author> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my first entry.</content> </entry> Updating an entry
  • 46. The Google Data Protocol DELETE /myFeed/1/2/ 200 OK Updating an entry
  • 48. The Google Data Protocol GET /myFeed?q=This 200 OK <?xml version=&quot;1.0&quot;?> <feed xmlns=&quot; http://www.w3.org/2005/Atom &quot;> <title>Foo</title> <updated>2006-01-23T16:26:03-08:00</updated> <id> http://www.example.com/myFeed </id> <link href=&quot;/myFeed&quot; rel=&quot;self&quot;/> <entry> <id> http://www.example.com/id/1 </id> <link rel=&quot;edit&quot; href=&quot; http://example.com/myFeed/1/1/ &quot;/> <updated>2006-01-23T16:26:03-08:00</updated> <title type=&quot;text&quot;>Entry 1</title> <content type=&quot;text&quot;>This is my entry</content> </entry> </feed> Searching for a resource
  • 50. JSON and RSS Other formats are also supported: ?alt=json ?alt=json-in-script ?alt=kml ?alt=rss
  • 51. Client Libraries PHP .NET Java JavaScript Objective-C Python + Community Contributed
  • 52. Demo Google Data Sample Applications
  • 53. My Secret Motivation For Giving This Talk Google Data APIs ♥ App Engine
  • 54. Demo Google Data APIs + App Engine
  • 55. Conclusion Google Data APIs App Engine Scalable Architecture (AtomPub) APIs
  • 56. Questions? Pamela Fox [email_address] @pamelafox More Info http://code.google.com ↶