Google App Engine                                        Ikai Lan                            Kuala Lumpur, GTUG Hackathon ...
About the speaker                     • Developer Relations at Google based out                          of San Francisco,...
Agenda                     • What is Google App Engine?                     • Various features of GAE                     ...
Software                            Platform                          Infrastructure                                      ...
Software                            Platform                          Infrastructure                                      ...
Software                            Platform                          Infrastructure                                      ...
Software                            Platform                          Infrastructure                                      ...
• Easy to build                     • Easy to manage                     • Easy to scaleSaturday, June 18, 2011
“We wear pagers so                           you don’t have to”Saturday, June 18, 2011
Saturday, June 18, 2011
>90K Developers                              >130K Apps                          >700M daily pageviewsSaturday, June 18, 2...
SDK & “The Cloud”                 Hardware                 Networking                 Operating system                 App...
Development Cycle                     • Write code locally                     • Test, push to Google Servers             ...
Admin ConsoleSaturday, June 18, 2011
Duke, the Java mascot                          Go Gopher    Copyright © Sun Microsystems Inc., all rights reserved.Saturda...
Extended Language support                                 through JVM                   • Java                   • Scala  ...
Core APIs                          Memcache      Datastore   URL Fetch                            Mail         XMPP       ...
High Replication                     • Strongly consistent, multi-datastore, multi-                          data center s...
Other APIs                     • High performance image serving                     • App Engine Map Reduce               ...
Prospective Search                     • Matches a high rate of incoming documents                     • 100,000 matches a...
A basic Python app                     • 2 files: app.yaml and main.py                     • Easier to use when Python SDK ...
app.yamlSaturday, June 18, 2011
main.pySaturday, June 18, 2011
Getting started with                                  Java                     • Servlets API                     • Google...
Go: why I like it                     • “The next version of C, brought to you by                          the guys who di...
Flexible interfaces                      // This is an interface declaration                      type myInterface interfa...
First class functions                package main                import "fmt"                // Make a function that retur...
Goroutines and                          package main                                      Channels                        ...
It runs on App Engine!                     • Currently requires whitelisting                     • Experimental status    ...
MustachioSaturday, June 18, 2011
General tips                     • The datastore is built on top of BigTable. It                          is non-relationa...
Useful Python tools                     • Tipfy: http://www.tipfy.org/                     • Django non-rel: http://      ...
Java tips                     • Use low-level datastore API or third party                          API: http://code.googl...
Summary                     • Hopefully people here are interested in                          hacking on App Engine      ...
Questions?                     • Twitter: @ikai                     • App Engine: http://code.google.com/                 ...
Upcoming SlideShare
Loading in...5
×

2011 june-kuala-lumpur-gtug-hackathon

1,606

Published on

Slides for my presentation at the GTUG hackathon in Kuala Lum

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,606
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2011 june-kuala-lumpur-gtug-hackathon

  1. 1. Google App Engine Ikai Lan Kuala Lumpur, GTUG Hackathon Twitter: @ikai June 18, 2011Saturday, June 18, 2011
  2. 2. About the speaker • Developer Relations at Google based out of San Francisco, CA • Primarily work in Java and Python nowadays; lots of experience with Ruby, JavaScript, PHP <5.3 • Focus: Cloud products • Twitter: @ikaiSaturday, June 18, 2011
  3. 3. Agenda • What is Google App Engine? • Various features of GAE • How to get started • Introduction to Go • Important tools + some tipsSaturday, June 18, 2011
  4. 4. Software Platform Infrastructure Source: Gartner AADI Summit Dec 2009Saturday, June 18, 2011
  5. 5. Software Platform Infrastructure Source: Gartner AADI Summit Dec 2009Saturday, June 18, 2011
  6. 6. Software Platform Infrastructure Source: Gartner AADI Summit Dec 2009Saturday, June 18, 2011
  7. 7. Software Platform Infrastructure Source: Gartner AADI Summit Dec 2009Saturday, June 18, 2011
  8. 8. • Easy to build • Easy to manage • Easy to scaleSaturday, June 18, 2011
  9. 9. “We wear pagers so you don’t have to”Saturday, June 18, 2011
  10. 10. Saturday, June 18, 2011
  11. 11. >90K Developers >130K Apps >700M daily pageviewsSaturday, June 18, 2011
  12. 12. SDK & “The Cloud” Hardware Networking Operating system Application runtime Java, Python, Go Static file serving 20Saturday, June 18, 2011
  13. 13. Development Cycle • Write code locally • Test, push to Google Servers • Administer via a web interface - http:// appengine.google.comSaturday, June 18, 2011
  14. 14. Admin ConsoleSaturday, June 18, 2011
  15. 15. Duke, the Java mascot Go Gopher Copyright © Sun Microsystems Inc., all rights reserved.Saturday, June 18, 2011
  16. 16. Extended Language support through JVM • Java • Scala • JRuby (Ruby) • Groovy Duke, the Java mascot Copyright © Sun Microsystems Inc., all rights reserved. • Quercus (PHP) • Rhino (JavaScript) • Jython (Python) • ClojureSaturday, June 18, 2011
  17. 17. Core APIs Memcache Datastore URL Fetch Mail XMPP Task Queue Images Blobstore User ServiceSaturday, June 18, 2011
  18. 18. High Replication • Strongly consistent, multi-datastore, multi- data center serving solution • Write once, have your data be available in a highly consistent manner • No data loss, no datastore outagesSaturday, June 18, 2011
  19. 19. Other APIs • High performance image serving • App Engine Map Reduce • Prospective Search API • Pipeline API • OAuth providerSaturday, June 18, 2011
  20. 20. Prospective Search • Matches a high rate of incoming documents • 100,000 matches a second • Think: How might we build something like Google Alerts? • http://code.google.com/appengine/docs/ python/prospectivesearch/Saturday, June 18, 2011
  21. 21. A basic Python app • 2 files: app.yaml and main.py • Easier to use when Python SDK is in your system path • Start server with dev_appserver.py • Deploy via appcfg.pySaturday, June 18, 2011
  22. 22. app.yamlSaturday, June 18, 2011
  23. 23. main.pySaturday, June 18, 2011
  24. 24. Getting started with Java • Servlets API • Google Plugin for Eclipse will generate a skeleton project: http://code.google.com/ eclipse/beta/docs/download.htmlSaturday, June 18, 2011
  25. 25. Go: why I like it • “The next version of C, brought to you by the guys who didn’t bring you C++” • Modern, type safe compiled language (stdlib includes: json parsing, web server) • Functions as first class objects • Concurrency baked in via goroutines and channels • Very fast compilation timesSaturday, June 18, 2011
  26. 26. Flexible interfaces // This is an interface declaration type myInterface interface { set(i int) } // This is a Type declaration. Note that it is a type, not a class type myType struct { i int } // This is how we define a function where myType is a receiver // With an instance of myType we can call myType.set(123) func (p *myType) set(i int) { p.i = i } // Because myType defines a function with the signature set(int i) method, // we can use it anywhere myInterface is accepted! func setToThousand(x myInterface) { myInterface.set(1000) }Saturday, June 18, 2011
  27. 27. First class functions package main import "fmt" // Make a function that returns a new function func makeAdd(increment int) (counter func(int) int) { return func(v int) int { return v + increment; } } func main() { fmt.Printf("value of makeAdd(100)(1) is %vn", makeAdd(100)(1)); fmt.Printf("value of makeAdd(200)(2) is %vn", makeAdd(200)(2)); } // Outputs: // value of makeAdd(100)(1) is 101 // value of makeAdd(200)(2) is 202Saturday, June 18, 2011
  28. 28. Goroutines and package main Channels import ( "fmt" "time" ) func doLotsOfWork(until int, ch chan int) { c := 0 for i := 0; i < until; i++ { c += i time.Sleep(1000) } ch <- c } func main() { ch := make(chan int) // First the work off into the background go doLotsOfWork(5, ch) // Do more work here while we wait for this process to complete // Block until doLotsOfWork sends data back on this channel i := <- ch fmt.Printf("Final value: %vn", i) }Saturday, June 18, 2011
  29. 29. It runs on App Engine! • Currently requires whitelisting • Experimental status • Goroutines allow for concurrency within request; concurrent requests coming • Demo app: http://moustach-io.appspot.com/ • Source: https://code.google.com/p/ appengine-go/source/browse/example/Saturday, June 18, 2011
  30. 30. MustachioSaturday, June 18, 2011
  31. 31. General tips • The datastore is built on top of BigTable. It is non-relational! • Be aware of limits: 30 second requests, 10 minute tasks queues/cron jobs, whitelisted classes • Python 2.5 compatible (but can use 2.6 or 2.7 locally)Saturday, June 18, 2011
  32. 32. Useful Python tools • Tipfy: http://www.tipfy.org/ • Django non-rel: http:// www.allbuttonspressed.com/projects/ django-nonrel • Testbed API: http://code.google.com/ appengine/docs/python/tools/ localunittesting.htmlSaturday, June 18, 2011
  33. 33. Java tips • Use low-level datastore API or third party API: http://code.google.com/p/objectify- appengine/ • Start with servlets API - will have to do some work to make your favorite framework work. Slim3 is a good GAE specific frameworkSaturday, June 18, 2011
  34. 34. Summary • Hopefully people here are interested in hacking on App Engine • Java, Python and Go • Ask me if you have general questions, I will be around all weekendSaturday, June 18, 2011
  35. 35. Questions? • Twitter: @ikai • App Engine: http://code.google.com/ appengineSaturday, June 18, 2011
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×