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

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Victor Rentea
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 

Dernier (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

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