SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Google App Engine and
Social Apps
Chris Schalk, Developer Advocate, Google
Ikai Lan, Developer Programs Engineer, Google
Dave Westwood, Creator of BuddyPoke

January 20, 2010
Google App Engine


       • Easy to build
       • Easy to maintain
       • Easy to scale




    Leveraging Google’s platform to better serve your customers

2
Some App Engine Partners




3
Gartner’s view on Cloud Computing


    •  Correctly sees App Engine as a “Platform as a Service”

       •  Just focus on the code, don’t worry about infrastructure
            •  Application infrastructure
           •  System infrastructure

       •  Rapid application deployment and change

       •  Fully delegated data center responsibility




4                                         * Source: Yefim Natis, Gartner, AADI 2009
App Engine Platform Details




5
Specialized services




6
Language runtimes




                        Duke, the Java mascot
                        Copyright © Sun Microsystems Inc., all rights reserved.
7
Ensuring Portability




8
Extended Language support through JVM


    •  Java
    •  Scala
    •  JRuby (Ruby)
    •  Groovy
    •  Quercus (PHP)
    •  Rhino (JavaScript)       Duke, the Java mascot
    •  Jython (Python)
                                Copyright © Sun Microsystems Inc., all rights reserved.




9
Application management in the cloud




10
App Engine Dashboard




11
Development Tools for App Engine




12
Google App Engine Launcher




13
SDK Console




14
Google Plugin for Eclipse




15
Feature Roadmap




16
18+ months in review
        Apr 2008
   Python launch
        May 2008
   Memcache, Images API
        Jul 2008
   Logs export
        Aug 2008
   Batch write/delete
        Oct 2008
   HTTPS support
        Dec 2008
   Status dashboard, quota details
        Feb 2009
   Billing, larger files
        Apr 2009
   Java launch, DB import, cron support, SDC


        May 2009
   Key-only queries
        Jun 2009
   Task queues
        Aug 2009
   Kindless queries
        Sep 2009
   XMPP
        Oct 2009
   Incoming Email
        Dec 2009
   Blobstore
17
Demos!




      •  Dashboard
      •  AppLauncher
      •  Eclipse Plugin




18
App Engine as a Social Platform




19
App Engine + Social Apps (mobile too!)


     •  App Engine works well as a backend server for
      Social Apps of all types
       –  OpenSocial
          •  Tutorials, example code - “Building an OpenSocial App with
            Google App Engine”
          •  http://wiki.opensocial.org/index.php?
            title=Building_an_OpenSocial_App_with_Google_App_Engine
       –  Facebook
          •  BuddyPoke
              –  Dave Westwood here to speak on his FB implementation
                  of BuddyPoke on GAE




20
A social example: BuddyPoke




21
A social example: BuddyPoke (on FaceBook)




22
BuddyPoke Architecture at a glance

                 Main Functionality


                            Is an fbml application, with an
                            embedded fb:swf to load the Flash
                            swf file.

                            Services include:

                            •  Save avatar appearance
                            •  Hug, Kiss, Poke a friend
                            •  Change mood
                            •  Create & Upload image to FB



23
BuddyPoke User Validation



                        •  FB automatically passes fb_sig
                        params to the fb:swf file

                        •  Makes direct calls from the swf file to
                        GAE for Avatar saving functionality
                        (appearance, mood, etc).
                             •  Pass the fb_sig params along
                             with any http call to GAE

                        •  GAE then uses fb_sig params to
                        validate any calls from a user




24
Making calls to FaceBook



                       •  fb:swf will have a session key that can
                       be used to make direct calls to
                       Facebook, so a lot of the time you can
                       just do requests straight from Flash ->
                       facebook.

                       • This is great for things like loading user
                       data, friend data, fql queries etc.




25
BuddyPoke User Data in GAE

                      Data models for user data

                      •  Main ‘User’ data model
                           •  Used 99% of time
                           •  not indexed, no queries, use keys
                           •  key name based on FB id
                           •  fast performance

                      •  Additional User info model
                           •  Stores additional user info
                           •  ex: install date
                           •  Is indexed, can be queried
                           •  Used less

                      •  Additional models for:
                           • Virtual currency, blobs for user
                           icons …
26
Storing Unique Icons per User

     On FB, a unique icon is generated for each poke/mood change.
     These icons appear in the feed/wall.




 •  Each user has maximum of N icons to avoid using up too much datastore space.

 •  When a user does a hug, poke, changes mood etc, an icon is sent to GAE using
 multi-part message. The icon will overwrite the previous oldest icon in the datastore
 and return a unique icon url to use in the feed.

 •  Icons are mem-cached, so better performance & saves money!
27
Updating profile page FBML

     •  BuddyPoke has a box on the profile page. It contains fbml that shows icons for
     the last 4 activities.

     • When you hug a friend it will update your profile page, and your friend's profile
     page. Facebook's servers can be very slow.. So rather than tie up App Engine I
     create a facebook batch request, sign it on App Engine, and then pass it back to
     the Flash swf client.

     • The client then makes the call to FaceBook's servers with the signed request to
     update the profile data.

     • For OpenSocial, I'd just make the calls directly from App Engine to an OpenSocial
     server. But if you have 4+ operations to do on facebook those calls can take a long
     time, so I just get the Flash client to send the request and do all the waiting.




28
Updating profile page FBML, cont.

      So let's say I wanted to update 20 images on facebook's image caching servers
     I'd sign a request on App Engine using something like:

     def sig_batch_refreshImgSrc(self, urls, call_id):
            methods = []
            for url in urls:
                   sig_param = {}
                   sig_param['url'] = url
                   sig_param['call_id'] = str(call_id)
                   call_id = call_id+1
                   self._build_post_args("facebook.fbml.refreshImgSrc", sig_param)
                   methods.append(urllib.urlencode(sig_param))
            batch_param = {}
            batch_param['method_feed'] = json.write(methods, True)
            batch_param['call_id'] = str(call_id)
            self._build_post_args("facebook.batch.run", batch_param)
            return '"run":%s' % json.write(batch_param, True)


     Then I'd pass that back to the Flash client, and the Flash client can send the
     request and sit their waiting for 10 seconds while FaceBook forces the image
     refresh.
29
Payments using Paypal

      I have Paypal hit App Engine any time there is a new transaction. Paypal will
     pass a bunch of params, you then ping Paypals server with a _notify-
     validate using a urlfetch to verify the params came from paypal.

     if self.request.get('payment_status') == 'Completed':
                  parameters = self.request.POST.copy()
                  if parameters:
                    parameters['cmd']='_notify-validate’
                     status = urlfetch.fetch(url = PP_URL, method = urlfetch.POST,
     payload = urllib.urlencode(parameters) ).content
                     if status == "VERIFIED":
                         ...



     Then I'd pass that back to the Flash client, and the Flash client can send the
     request and sit their waiting for 10 seconds while FaceBook forces the image
     refresh.




30
Communicating with via Email




       “Use the email API to send yourself
       messages about anything important.

       Very soon, with the FaceBook changes, I
       expect I'll be using the email API a lot more.

       And the beauty of App Engine is I can just
       pay for as much email quota as I need. No
       hassles setting up email servers..”


31
code.google.com/appengine

                  twitter.com/cschalk
                  twitter.com/ikai
     Thank you!   twitter.com/app_engine




32

Contenu connexe

Tendances

Webiny Content Management System
Webiny Content Management SystemWebiny Content Management System
Webiny Content Management SystemGoran Candrlic
 
Connections customization lite
Connections customization liteConnections customization lite
Connections customization liteSharon James
 
SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!
SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!
SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!Klaus Bild
 
JSN Neon Customization Manual
JSN Neon Customization ManualJSN Neon Customization Manual
JSN Neon Customization ManualJoomlaShine
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPALBrahm
 
JSN Pixel Customization Manual
JSN Pixel Customization ManualJSN Pixel Customization Manual
JSN Pixel Customization ManualJoomlaShine
 
Joomla 3.6 - The revolution in Joomla User Experience
Joomla 3.6 - The revolution in Joomla User ExperienceJoomla 3.6 - The revolution in Joomla User Experience
Joomla 3.6 - The revolution in Joomla User ExperienceJoomlaShine
 
JSN Tendo Customization Manual
JSN Tendo Customization ManualJSN Tendo Customization Manual
JSN Tendo Customization ManualJoomlaShine
 
JSN Pixel Configuration Manual
JSN Pixel Configuration ManualJSN Pixel Configuration Manual
JSN Pixel Configuration ManualJoomlaShine
 
IBM Connections - Customizing and Extending
IBM Connections - Customizing and ExtendingIBM Connections - Customizing and Extending
IBM Connections - Customizing and ExtendingStuart McIntyre
 
JSN Teki Configuration Manual
JSN Teki Configuration ManualJSN Teki Configuration Manual
JSN Teki Configuration ManualJoomlaShine
 

Tendances (12)

Webiny Content Management System
Webiny Content Management SystemWebiny Content Management System
Webiny Content Management System
 
Connections customization lite
Connections customization liteConnections customization lite
Connections customization lite
 
SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!
SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!
SHOW301 - Make Your IBM Connections Deployment Your Own: Customize It!
 
Webs Review
Webs ReviewWebs Review
Webs Review
 
JSN Neon Customization Manual
JSN Neon Customization ManualJSN Neon Customization Manual
JSN Neon Customization Manual
 
Fastest Way to DRUPAL
Fastest Way to DRUPALFastest Way to DRUPAL
Fastest Way to DRUPAL
 
JSN Pixel Customization Manual
JSN Pixel Customization ManualJSN Pixel Customization Manual
JSN Pixel Customization Manual
 
Joomla 3.6 - The revolution in Joomla User Experience
Joomla 3.6 - The revolution in Joomla User ExperienceJoomla 3.6 - The revolution in Joomla User Experience
Joomla 3.6 - The revolution in Joomla User Experience
 
JSN Tendo Customization Manual
JSN Tendo Customization ManualJSN Tendo Customization Manual
JSN Tendo Customization Manual
 
JSN Pixel Configuration Manual
JSN Pixel Configuration ManualJSN Pixel Configuration Manual
JSN Pixel Configuration Manual
 
IBM Connections - Customizing and Extending
IBM Connections - Customizing and ExtendingIBM Connections - Customizing and Extending
IBM Connections - Customizing and Extending
 
JSN Teki Configuration Manual
JSN Teki Configuration ManualJSN Teki Configuration Manual
JSN Teki Configuration Manual
 

En vedette

Scalable Apps with Google App Engine
Scalable Apps with Google App EngineScalable Apps with Google App Engine
Scalable Apps with Google App EngineDavid Chandler
 
Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]Matthew McCullough
 
Sassy Stylesheets with SCSS
Sassy Stylesheets with SCSSSassy Stylesheets with SCSS
Sassy Stylesheets with SCSSKathryn Rotondo
 
Running with emmet and scss
Running with emmet  and scssRunning with emmet  and scss
Running with emmet and scssAaron King
 
GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...
GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...
GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...Patrick Chanezon
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineTahir Akram
 
Save time by using SASS/SCSS
Save time by using SASS/SCSSSave time by using SASS/SCSS
Save time by using SASS/SCSSBerit Hlubek
 
Google App Engine With Java And Groovy
Google App Engine With Java And GroovyGoogle App Engine With Java And Groovy
Google App Engine With Java And GroovyKen Kousen
 

En vedette (10)

Scalable Apps with Google App Engine
Scalable Apps with Google App EngineScalable Apps with Google App Engine
Scalable Apps with Google App Engine
 
Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]Cloud Computing Bootcamp On The Google App Engine [v1.1]
Cloud Computing Bootcamp On The Google App Engine [v1.1]
 
Sassy Stylesheets with SCSS
Sassy Stylesheets with SCSSSassy Stylesheets with SCSS
Sassy Stylesheets with SCSS
 
Css to-scss
Css to-scssCss to-scss
Css to-scss
 
Running with emmet and scss
Running with emmet  and scssRunning with emmet  and scss
Running with emmet and scss
 
GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...
GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...
GDD Brazil 2010 - What's new in Google App Engine and Google App Engine For B...
 
Developing Java Web Applications In Google App Engine
Developing Java Web Applications In Google App EngineDeveloping Java Web Applications In Google App Engine
Developing Java Web Applications In Google App Engine
 
Sass(SCSS)について
Sass(SCSS)についてSass(SCSS)について
Sass(SCSS)について
 
Save time by using SASS/SCSS
Save time by using SASS/SCSSSave time by using SASS/SCSS
Save time by using SASS/SCSS
 
Google App Engine With Java And Groovy
Google App Engine With Java And GroovyGoogle App Engine With Java And Groovy
Google App Engine With Java And Groovy
 

Similaire à Google App Engine and Social Apps

Leveraging Rails to Build Facebook Apps
Leveraging Rails to Build Facebook AppsLeveraging Rails to Build Facebook Apps
Leveraging Rails to Build Facebook AppsDavid Keener
 
Building Facebook Apps
Building Facebook AppsBuilding Facebook Apps
Building Facebook AppsDavid Keener
 
COP449 - Introduction to Cloud Computing
COP449 - Introduction to Cloud ComputingCOP449 - Introduction to Cloud Computing
COP449 - Introduction to Cloud ComputingMartin Hamilton
 
BeEF_EUSecWest-2012_Michele-Orru
BeEF_EUSecWest-2012_Michele-OrruBeEF_EUSecWest-2012_Michele-Orru
BeEF_EUSecWest-2012_Michele-OrruMichele Orru
 
Mobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPressMobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPressDanilo Ercoli
 
GeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGGDBologna
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCFVMware Tanzu
 
Serverless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedServerless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedLuca Bianchi
 
React Native Firebase Realtime Database + Authentication
React Native Firebase Realtime Database + AuthenticationReact Native Firebase Realtime Database + Authentication
React Native Firebase Realtime Database + AuthenticationKobkrit Viriyayudhakorn
 
Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)wesley chun
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munichdion
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webpartsPrabhu Nehru
 
Google Cloud: Next'19 Extended Hanoi
Google Cloud: Next'19 Extended HanoiGoogle Cloud: Next'19 Extended Hanoi
Google Cloud: Next'19 Extended HanoiGCPUserGroupVietnam
 
Php day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebookPhp day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebookQuang Anh Le
 
Building an interactive timeline from facebook photos
Building an interactive timeline from facebook photosBuilding an interactive timeline from facebook photos
Building an interactive timeline from facebook photosRakesh Rajan
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysBrett McLain
 

Similaire à Google App Engine and Social Apps (20)

Leveraging Rails to Build Facebook Apps
Leveraging Rails to Build Facebook AppsLeveraging Rails to Build Facebook Apps
Leveraging Rails to Build Facebook Apps
 
Building Facebook Apps
Building Facebook AppsBuilding Facebook Apps
Building Facebook Apps
 
Build social apps for Facebook
Build social apps for FacebookBuild social apps for Facebook
Build social apps for Facebook
 
COP449 - Introduction to Cloud Computing
COP449 - Introduction to Cloud ComputingCOP449 - Introduction to Cloud Computing
COP449 - Introduction to Cloud Computing
 
BeEF_EUSecWest-2012_Michele-Orru
BeEF_EUSecWest-2012_Michele-OrruBeEF_EUSecWest-2012_Michele-Orru
BeEF_EUSecWest-2012_Michele-Orru
 
Frontend State of the union
Frontend State of the unionFrontend State of the union
Frontend State of the union
 
Mobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPressMobile Hybrid Development with WordPress
Mobile Hybrid Development with WordPress
 
GeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPressGeneralMobile Hybrid Development with WordPress
GeneralMobile Hybrid Development with WordPress
 
Custom Tile Generation in PCF
Custom Tile Generation in PCFCustom Tile Generation in PCF
Custom Tile Generation in PCF
 
Serverless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speedServerless chatbot: from idea to production at blazing speed
Serverless chatbot: from idea to production at blazing speed
 
React Native Firebase Realtime Database + Authentication
React Native Firebase Realtime Database + AuthenticationReact Native Firebase Realtime Database + Authentication
React Native Firebase Realtime Database + Authentication
 
Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)Powerful Google developer tools for immediate impact! (2023-24 A)
Powerful Google developer tools for immediate impact! (2023-24 A)
 
App Engine On Air: Munich
App Engine On Air: MunichApp Engine On Air: Munich
App Engine On Air: Munich
 
Deep dive into share point framework webparts
Deep dive into share point framework webpartsDeep dive into share point framework webparts
Deep dive into share point framework webparts
 
The Future of the web
The Future of the webThe Future of the web
The Future of the web
 
Webapi
WebapiWebapi
Webapi
 
Google Cloud: Next'19 Extended Hanoi
Google Cloud: Next'19 Extended HanoiGoogle Cloud: Next'19 Extended Hanoi
Google Cloud: Next'19 Extended Hanoi
 
Php day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebookPhp day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebook
 
Building an interactive timeline from facebook photos
Building an interactive timeline from facebook photosBuilding an interactive timeline from facebook photos
Building an interactive timeline from facebook photos
 
How to build a SaaS solution in 60 days
How to build a SaaS solution in 60 daysHow to build a SaaS solution in 60 days
How to build a SaaS solution in 60 days
 

Plus de Chris Schalk

Google App Engine Overview and Update
Google App Engine Overview and UpdateGoogle App Engine Overview and Update
Google App Engine Overview and UpdateChris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesChris Schalk
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudChris Schalk
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudChris Schalk
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesChris Schalk
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudChris Schalk
 
Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesChris Schalk
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesChris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesChris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest FeaturesChris Schalk
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesChris Schalk
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest FeaturesChris Schalk
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudChris Schalk
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Chris Schalk
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesChris Schalk
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalkChris Schalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesChris Schalk
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies OverviewChris Schalk
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for BusinessChris Schalk
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesChris Schalk
 

Plus de Chris Schalk (20)

Google App Engine Overview and Update
Google App Engine Overview and UpdateGoogle App Engine Overview and Update
Google App Engine Overview and Update
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
 
How to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the CloudHow to build Kick Ass Games in the Cloud
How to build Kick Ass Games in the Cloud
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the Cloud
 
Building Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud TechnologiesBuilding Integrated Applications on Google's Cloud Technologies
Building Integrated Applications on Google's Cloud Technologies
 
GDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloudGDD 2011 - How to build kick ass video games for the cloud
GDD 2011 - How to build kick ass video games for the cloud
 
Quick Intro to Google Cloud Technologies
Quick Intro to Google Cloud TechnologiesQuick Intro to Google Cloud Technologies
Quick Intro to Google Cloud Technologies
 
Intro to Google's Cloud Technologies
Intro to Google's Cloud TechnologiesIntro to Google's Cloud Technologies
Intro to Google's Cloud Technologies
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Building Apps on Google Cloud Technologies
Building Apps on Google Cloud TechnologiesBuilding Apps on Google Cloud Technologies
Building Apps on Google Cloud Technologies
 
Google App Engine's Latest Features
Google App Engine's Latest FeaturesGoogle App Engine's Latest Features
Google App Engine's Latest Features
 
Building Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the CloudBuilding Multi-platform Video Games for the Cloud
Building Multi-platform Video Games for the Cloud
 
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
Building Enterprise Applications on Google Cloud Platform Cloud Computing Exp...
 
Introduction to Google's Cloud Technologies
Introduction to Google's Cloud TechnologiesIntroduction to Google's Cloud Technologies
Introduction to Google's Cloud Technologies
 
Javaedge 2010-cschalk
Javaedge 2010-cschalkJavaedge 2010-cschalk
Javaedge 2010-cschalk
 
Introduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform TechnologiesIntroduction to Google Cloud Platform Technologies
Introduction to Google Cloud Platform Technologies
 
Google Cloud Technologies Overview
Google Cloud Technologies OverviewGoogle Cloud Technologies Overview
Google Cloud Technologies Overview
 
Introducing App Engine for Business
Introducing App Engine for BusinessIntroducing App Engine for Business
Introducing App Engine for Business
 
Introduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologiesIntroduction to Google Cloud platform technologies
Introduction to Google Cloud platform technologies
 

Dernier

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Dernier (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Google App Engine and Social Apps

  • 1. Google App Engine and Social Apps Chris Schalk, Developer Advocate, Google Ikai Lan, Developer Programs Engineer, Google Dave Westwood, Creator of BuddyPoke January 20, 2010
  • 2. Google App Engine • Easy to build • Easy to maintain • Easy to scale Leveraging Google’s platform to better serve your customers 2
  • 3. Some App Engine Partners 3
  • 4. Gartner’s view on Cloud Computing •  Correctly sees App Engine as a “Platform as a Service” •  Just focus on the code, don’t worry about infrastructure •  Application infrastructure •  System infrastructure •  Rapid application deployment and change •  Fully delegated data center responsibility 4 * Source: Yefim Natis, Gartner, AADI 2009
  • 7. Language runtimes Duke, the Java mascot Copyright © Sun Microsystems Inc., all rights reserved. 7
  • 9. Extended Language support through JVM •  Java •  Scala •  JRuby (Ruby) •  Groovy •  Quercus (PHP) •  Rhino (JavaScript) Duke, the Java mascot •  Jython (Python) Copyright © Sun Microsystems Inc., all rights reserved. 9
  • 12. Development Tools for App Engine 12
  • 13. Google App Engine Launcher 13
  • 15. Google Plugin for Eclipse 15
  • 17. 18+ months in review Apr 2008 Python launch May 2008 Memcache, Images API Jul 2008 Logs export Aug 2008 Batch write/delete Oct 2008 HTTPS support Dec 2008 Status dashboard, quota details Feb 2009 Billing, larger files Apr 2009 Java launch, DB import, cron support, SDC May 2009 Key-only queries Jun 2009 Task queues Aug 2009 Kindless queries Sep 2009 XMPP Oct 2009 Incoming Email Dec 2009 Blobstore 17
  • 18. Demos! •  Dashboard •  AppLauncher •  Eclipse Plugin 18
  • 19. App Engine as a Social Platform 19
  • 20. App Engine + Social Apps (mobile too!) •  App Engine works well as a backend server for Social Apps of all types –  OpenSocial •  Tutorials, example code - “Building an OpenSocial App with Google App Engine” •  http://wiki.opensocial.org/index.php? title=Building_an_OpenSocial_App_with_Google_App_Engine –  Facebook •  BuddyPoke –  Dave Westwood here to speak on his FB implementation of BuddyPoke on GAE 20
  • 21. A social example: BuddyPoke 21
  • 22. A social example: BuddyPoke (on FaceBook) 22
  • 23. BuddyPoke Architecture at a glance Main Functionality Is an fbml application, with an embedded fb:swf to load the Flash swf file. Services include: •  Save avatar appearance •  Hug, Kiss, Poke a friend •  Change mood •  Create & Upload image to FB 23
  • 24. BuddyPoke User Validation •  FB automatically passes fb_sig params to the fb:swf file •  Makes direct calls from the swf file to GAE for Avatar saving functionality (appearance, mood, etc). •  Pass the fb_sig params along with any http call to GAE •  GAE then uses fb_sig params to validate any calls from a user 24
  • 25. Making calls to FaceBook •  fb:swf will have a session key that can be used to make direct calls to Facebook, so a lot of the time you can just do requests straight from Flash -> facebook. • This is great for things like loading user data, friend data, fql queries etc. 25
  • 26. BuddyPoke User Data in GAE Data models for user data •  Main ‘User’ data model •  Used 99% of time •  not indexed, no queries, use keys •  key name based on FB id •  fast performance •  Additional User info model •  Stores additional user info •  ex: install date •  Is indexed, can be queried •  Used less •  Additional models for: • Virtual currency, blobs for user icons … 26
  • 27. Storing Unique Icons per User On FB, a unique icon is generated for each poke/mood change. These icons appear in the feed/wall. •  Each user has maximum of N icons to avoid using up too much datastore space. •  When a user does a hug, poke, changes mood etc, an icon is sent to GAE using multi-part message. The icon will overwrite the previous oldest icon in the datastore and return a unique icon url to use in the feed. •  Icons are mem-cached, so better performance & saves money! 27
  • 28. Updating profile page FBML •  BuddyPoke has a box on the profile page. It contains fbml that shows icons for the last 4 activities. • When you hug a friend it will update your profile page, and your friend's profile page. Facebook's servers can be very slow.. So rather than tie up App Engine I create a facebook batch request, sign it on App Engine, and then pass it back to the Flash swf client. • The client then makes the call to FaceBook's servers with the signed request to update the profile data. • For OpenSocial, I'd just make the calls directly from App Engine to an OpenSocial server. But if you have 4+ operations to do on facebook those calls can take a long time, so I just get the Flash client to send the request and do all the waiting. 28
  • 29. Updating profile page FBML, cont. So let's say I wanted to update 20 images on facebook's image caching servers I'd sign a request on App Engine using something like: def sig_batch_refreshImgSrc(self, urls, call_id): methods = [] for url in urls: sig_param = {} sig_param['url'] = url sig_param['call_id'] = str(call_id) call_id = call_id+1 self._build_post_args("facebook.fbml.refreshImgSrc", sig_param) methods.append(urllib.urlencode(sig_param)) batch_param = {} batch_param['method_feed'] = json.write(methods, True) batch_param['call_id'] = str(call_id) self._build_post_args("facebook.batch.run", batch_param) return '"run":%s' % json.write(batch_param, True) Then I'd pass that back to the Flash client, and the Flash client can send the request and sit their waiting for 10 seconds while FaceBook forces the image refresh. 29
  • 30. Payments using Paypal I have Paypal hit App Engine any time there is a new transaction. Paypal will pass a bunch of params, you then ping Paypals server with a _notify- validate using a urlfetch to verify the params came from paypal. if self.request.get('payment_status') == 'Completed': parameters = self.request.POST.copy() if parameters: parameters['cmd']='_notify-validate’ status = urlfetch.fetch(url = PP_URL, method = urlfetch.POST, payload = urllib.urlencode(parameters) ).content if status == "VERIFIED": ... Then I'd pass that back to the Flash client, and the Flash client can send the request and sit their waiting for 10 seconds while FaceBook forces the image refresh. 30
  • 31. Communicating with via Email “Use the email API to send yourself messages about anything important. Very soon, with the FaceBook changes, I expect I'll be using the email API a lot more. And the beauty of App Engine is I can just pay for as much email quota as I need. No hassles setting up email servers..” 31
  • 32. code.google.com/appengine twitter.com/cschalk twitter.com/ikai Thank you! twitter.com/app_engine 32