EuroPython 2010
                                                  Birmingham, UK
                                                  Sun, 2010 Jul 18


                    What is…
                    Google App Engine?

                                                   Wesley Chun
                         Developer Relations, Google App Engine
                                         wesc+api@google.com
                                     @wescpy :: @app_engine
                              googleappengine.blogspot.com




About the Speaker



   •Background
      Degrees in CS, Math, Music from UC
      Software engineer by profession
      Over 2 decades as a full-time architect & developer
      Original Yahoo!Mail engineering team member
      Previously at Sun, HP, Xilinx, Legato, Cisco/IronPort
      Currently in Developer Relations at Google

   •Python community volunteer
      Python conferences, user groups, and mailing lists
      Technical trainer: corporate training, public courses
      Author/co-author (books, articles, blogger, etc.)
         • Core Python Programming ([2009,] 2007, 2001)
         • Python Fundamentals LiveLessons DVD (2009)
         • Python Web Development with Django (2009)




                                                                     1
Cloud Computing
                    What is it (besides being buzzword-compliant)?




The Cloud Pyramid




                                                                     2
What is App Engine?




 •App Engine is a platform

 •You build & test your app

 •Then upload your app to Google

 •App Engine runs everything

 •No need to worry about machines,
 network, storage, scalability, etc.




          Challenges building web apps




                                         3
What keeps you up at night?




           Easy to start
          Easy to scale

        Easy to maintain



                              4
We do the dirty work…




  The Components
  The pieces of Google App Engine




                                    5
Components




                          Language
                          Runtimes


                                          Web-based
               SDK                         Admin
                                           Console


                            Scalable
                         Infrastructure




Components




                                          Linux
                                          GFS
           Scalable
        Infrastructure                    Bigtable

                                          Hardware




                                                      6
Components




              Python
                                           Batteries
              & Java
                                           Included
             Runtimes




         Alternative API/Runtimes also available (more later)




Flexible alternative




                                                                7
Getting the job done




The king of ease-of-use




                •Extremely rapid development
                •Very low barrier of entry
                •Simple yet robust syntax
                •Rich library of packages/modules
                •App Engine's first language API




                                                    8
The king of enterprise development




               •Ubiquitous in Enterprise computing
               •Adheres to Java servlet standard
               •Rich library of packages/modules
               •Eclipse Plug-in support
               •Alternative language support




Java compliant Servlet Standard




                                                     9
Java Plug-n-Play




Python & Java not enough?




                            10
Components




             Web-based
              Admin




Application Monitoring




                         11
App Engine Monitoring




Components



                        Run
                        Locally

                        Easy
                        Deploy
              SDK
                        Manage
                        Versions

                        APIs




                                   12
Customer Service
                Ooops, we meant servicing customers!




How many ______ ?




                                                       13
App Engine Developers/Apps




BuddyPoke…




                             14
…scales




          •3.6MM DAUs on FB
          •1.9MM DAUs on MS
          •Add Orkut, Bebo, Hi5,
          Friendster, Hyves, Ning…




Gigya…




                                     15
… scales




Not all apps are web-based!!




  - Need backoffice processing? Want to build your own?
  - Go cloud with App Engine!
     - No UI needed for app to talk to App Engine
     - Great place for user info i.e., high scores, contacts, medals, etc
     - Better user interface: taking user data off the phone to web, etc.




                                                                            16
Features and Futures
                   Services and APIs now... and coming soon




Rich set of App Engine services/APIs




                                                              17
In review: an evolving platform
         Two years of App Engine and continually maturing…
                 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
                 Feb 2010        Datastore cursors, Async Urlfetch, App stats
                 Mar 2010        Denial-of-Service filtering, Availability option
                 May 2010        OpenID, OAuth, App Engine for Business, new bulkloader




Always free to get started
  ~5MM pageviews/month

      • 6.5 CPU hrs/day (not clock/deploy time)
      • 1 GB/day bandwidth (each incoming/outgoing)
      • 1 GB data storage
      • 2,000 recipients emailed
      • 100k tasks enqueued/day (or 1MM*)
      • 864k image manipulation calls/day (or 45MM*)
      • 657k URLfetch calls/day (or 46MM*)
      • 657k XMPP/instant msgs/day (or 46MM*)
      • 8.6MM Memcache calls/day (or 96MM*)
      • (1GB Blobstore storage, 140MM API calls)*
      • 1.3MM overall app requests/day (or 43MM*)


  * If billing is enabled, more free quota!!




                                                                                          18
Purchasing additional resources *




   *On top of ~5MM page view free monthly quota




             App Engine
              Roadmap
 - Long-running background tasks
 - Ability to reserve instances to reduce load
 - Datastore backup/dump and restore facility
 - Mapping operations across datasets
 - Raise request/response size limits for some APIs
 - See code.google.com/appengine/docs/roadmap.html




                                                      19
Code Lab: Getting Started
                 http://bit.ly/gcodelabs (codelabs)
                 http://code.google.com/appengine (download, docs, etc.)
                 http://code.google.com/p/googleappengine (issues, wiki, etc.)
                 http://code.google.com/eclipse (Eclipse plug-in)
                 http://appengine.google.com (login, app management)
                 http://googleappengine.blogspot.com (blog)




App Engine online resources



      http://code.google.com/appengine –
      downloads, docs, forums, FAQ, etc.

      http://appengine.google.com –
      managing your applications here

      http://googleappengine.blogspot.com
      – our blog

      Also check http://stackoverflow.com




                                                                                 20
Hello World

Linux, MacOS, etc. command-line:
  $ dev_appserver.py helloworld # run dev svr
  $ appcfg.py update helloworld # deploy live

Windows GUI (also avail for Mac):




Project Contents




         app.yaml – main configuration file

         index.yaml – automatically
         generated to index your data

         main.py – your main application
         "controller" code goes here




                                                21
Hello World




Hello World




              22
Testing Your Install


     $ cd google_appengine
     ~/Desktop/google_appengine/helloworld
     $ dev_appserver.py helloworld
     INFO         2009-03-04 17:51:22,354 __init__.py]
     .
     .
     .



                  (optionally use the launcher for Macs & PCs)




Hello World




                                                                 23
Registering



         By default, your apps hosted at:
         http://APP-ID.appspot.com




Create an App Id




                                            24
Modify 'app.yaml'



           application: helloworld
           version: 1
           runtime: python
           api_version: 1

           handlers:
           - url: .*
             script: main.py




Upload the default application


    $ cd google_appengine
    ~/Desktop/google_appengine/helloworld
    $ appcfg.py update helloworld
    Scanning files on local disk.
    Initiating update.
    Email: ...




                                            25
Check it out`




                Conclusion
                Summary and Wrap-up




                                      26
Summary: The Landscape

   •Cloud Computing: "… as a service" services
      SaaS – Google, Yahoo, SalesForce
      PaaS – *
      IaaS – Amazon EC2 & S3, Google Storage

   •*Platform as a Service offerings
      Google App Engine
      Microsoft Azure
      SalesForce force.com

   •Google App Engine
     Flexibility: Java or Python APIs, no 'lock-in'
     Security: sandbox environment, rich APIs
     Easy to Start: generous free quota
     Easy to Scale: uses Google infrastructure
     FUTURE: better performance, new features




                Thank You
                Questions?
                code.google.com/appengine
                googleappengine.blogspot.com
                code.google.com/p/googleappengine
                wesc+api@google.com




                                                      27

What is Google App Engine?

  • 1.
    EuroPython 2010 Birmingham, UK Sun, 2010 Jul 18 What is… Google App Engine? Wesley Chun Developer Relations, Google App Engine wesc+api@google.com @wescpy :: @app_engine googleappengine.blogspot.com About the Speaker •Background Degrees in CS, Math, Music from UC Software engineer by profession Over 2 decades as a full-time architect & developer Original Yahoo!Mail engineering team member Previously at Sun, HP, Xilinx, Legato, Cisco/IronPort Currently in Developer Relations at Google •Python community volunteer Python conferences, user groups, and mailing lists Technical trainer: corporate training, public courses Author/co-author (books, articles, blogger, etc.) • Core Python Programming ([2009,] 2007, 2001) • Python Fundamentals LiveLessons DVD (2009) • Python Web Development with Django (2009) 1
  • 2.
    Cloud Computing What is it (besides being buzzword-compliant)? The Cloud Pyramid 2
  • 3.
    What is AppEngine? •App Engine is a platform •You build & test your app •Then upload your app to Google •App Engine runs everything •No need to worry about machines, network, storage, scalability, etc. Challenges building web apps 3
  • 4.
    What keeps youup at night? Easy to start Easy to scale Easy to maintain 4
  • 5.
    We do thedirty work… The Components The pieces of Google App Engine 5
  • 6.
    Components Language Runtimes Web-based SDK Admin Console Scalable Infrastructure Components Linux GFS Scalable Infrastructure Bigtable Hardware 6
  • 7.
    Components Python Batteries & Java Included Runtimes Alternative API/Runtimes also available (more later) Flexible alternative 7
  • 8.
    Getting the jobdone The king of ease-of-use •Extremely rapid development •Very low barrier of entry •Simple yet robust syntax •Rich library of packages/modules •App Engine's first language API 8
  • 9.
    The king ofenterprise development •Ubiquitous in Enterprise computing •Adheres to Java servlet standard •Rich library of packages/modules •Eclipse Plug-in support •Alternative language support Java compliant Servlet Standard 9
  • 10.
    Java Plug-n-Play Python &Java not enough? 10
  • 11.
    Components Web-based Admin Application Monitoring 11
  • 12.
    App Engine Monitoring Components Run Locally Easy Deploy SDK Manage Versions APIs 12
  • 13.
    Customer Service Ooops, we meant servicing customers! How many ______ ? 13
  • 14.
  • 15.
    …scales •3.6MM DAUs on FB •1.9MM DAUs on MS •Add Orkut, Bebo, Hi5, Friendster, Hyves, Ning… Gigya… 15
  • 16.
    … scales Not allapps are web-based!! - Need backoffice processing? Want to build your own? - Go cloud with App Engine! - No UI needed for app to talk to App Engine - Great place for user info i.e., high scores, contacts, medals, etc - Better user interface: taking user data off the phone to web, etc. 16
  • 17.
    Features and Futures Services and APIs now... and coming soon Rich set of App Engine services/APIs 17
  • 18.
    In review: anevolving platform Two years of App Engine and continually maturing… 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 Feb 2010 Datastore cursors, Async Urlfetch, App stats Mar 2010 Denial-of-Service filtering, Availability option May 2010 OpenID, OAuth, App Engine for Business, new bulkloader Always free to get started ~5MM pageviews/month • 6.5 CPU hrs/day (not clock/deploy time) • 1 GB/day bandwidth (each incoming/outgoing) • 1 GB data storage • 2,000 recipients emailed • 100k tasks enqueued/day (or 1MM*) • 864k image manipulation calls/day (or 45MM*) • 657k URLfetch calls/day (or 46MM*) • 657k XMPP/instant msgs/day (or 46MM*) • 8.6MM Memcache calls/day (or 96MM*) • (1GB Blobstore storage, 140MM API calls)* • 1.3MM overall app requests/day (or 43MM*) * If billing is enabled, more free quota!! 18
  • 19.
    Purchasing additional resources* *On top of ~5MM page view free monthly quota App Engine Roadmap - Long-running background tasks - Ability to reserve instances to reduce load - Datastore backup/dump and restore facility - Mapping operations across datasets - Raise request/response size limits for some APIs - See code.google.com/appengine/docs/roadmap.html 19
  • 20.
    Code Lab: GettingStarted http://bit.ly/gcodelabs (codelabs) http://code.google.com/appengine (download, docs, etc.) http://code.google.com/p/googleappengine (issues, wiki, etc.) http://code.google.com/eclipse (Eclipse plug-in) http://appengine.google.com (login, app management) http://googleappengine.blogspot.com (blog) App Engine online resources http://code.google.com/appengine – downloads, docs, forums, FAQ, etc. http://appengine.google.com – managing your applications here http://googleappengine.blogspot.com – our blog Also check http://stackoverflow.com 20
  • 21.
    Hello World Linux, MacOS,etc. command-line: $ dev_appserver.py helloworld # run dev svr $ appcfg.py update helloworld # deploy live Windows GUI (also avail for Mac): Project Contents app.yaml – main configuration file index.yaml – automatically generated to index your data main.py – your main application "controller" code goes here 21
  • 22.
  • 23.
    Testing Your Install $ cd google_appengine ~/Desktop/google_appengine/helloworld $ dev_appserver.py helloworld INFO 2009-03-04 17:51:22,354 __init__.py] . . . (optionally use the launcher for Macs & PCs) Hello World 23
  • 24.
    Registering By default, your apps hosted at: http://APP-ID.appspot.com Create an App Id 24
  • 25.
    Modify 'app.yaml' application: helloworld version: 1 runtime: python api_version: 1 handlers: - url: .* script: main.py Upload the default application $ cd google_appengine ~/Desktop/google_appengine/helloworld $ appcfg.py update helloworld Scanning files on local disk. Initiating update. Email: ... 25
  • 26.
    Check it out` Conclusion Summary and Wrap-up 26
  • 27.
    Summary: The Landscape •Cloud Computing: "… as a service" services SaaS – Google, Yahoo, SalesForce PaaS – * IaaS – Amazon EC2 & S3, Google Storage •*Platform as a Service offerings Google App Engine Microsoft Azure SalesForce force.com •Google App Engine Flexibility: Java or Python APIs, no 'lock-in' Security: sandbox environment, rich APIs Easy to Start: generous free quota Easy to Scale: uses Google infrastructure FUTURE: better performance, new features Thank You Questions? code.google.com/appengine googleappengine.blogspot.com code.google.com/p/googleappengine wesc+api@google.com 27