Google provides many Cloud computing services to build scalable and
innovative apps, from the App Engine Platform to Storage, Prediction
and BigQuery, but also monetization opportunities, with the Google
Apps Marketplace, allowing developers to integrate Google Apps in
their applications and sell them to the 3 million businesses running
on Google Apps.
JFokus 2011 - Google Cloud for Java Developers: Platform and MonetizationPatrick Chanezon
This session will provide developers with an overview of Google Cloud computing services and monetization opportunities:
* Google App Engine Java: Developers can leverage Google's cloud infrastructure to run their Java applications at scale, leveraging Java standards such as Java Servlet, Java Data Objects, and Java Persistence API.
* Google App Engine for Business: targeted at Enterprises, with SLA, paid support, and SQL
* Google Storage, Prediction and BigQuery APIs: storage, machine learning and interactive analytics services powered by Google infrastructure.
* Google Apps Marketplace: allows developers to integrate Google Apps in their applications and sell them to Google Apps customers.
* Google Fusion Tables, Maps API, Visualization API to create powerful and interactive visualization of data
A compare and contrast of Continuous Integration testing tools that can be used for Perl projects and where they all fall short. Also looking at what an ideal solution could look like.
This talk will compare the major cloud hosting companies and what products and services they offer. Google's App Engine, Amazon's AWS, Rackspace's Cloud Services and Linode will be compared. We will go beyond a mere checklist of features and dive into such topics as Perl support, cost structures, development strategies, underlying architectures, performance and security.
Google provides many Cloud computing services to build scalable and
innovative apps, from the App Engine Platform to Storage, Prediction
and BigQuery, but also monetization opportunities, with the Google
Apps Marketplace, allowing developers to integrate Google Apps in
their applications and sell them to the 3 million businesses running
on Google Apps.
JFokus 2011 - Google Cloud for Java Developers: Platform and MonetizationPatrick Chanezon
This session will provide developers with an overview of Google Cloud computing services and monetization opportunities:
* Google App Engine Java: Developers can leverage Google's cloud infrastructure to run their Java applications at scale, leveraging Java standards such as Java Servlet, Java Data Objects, and Java Persistence API.
* Google App Engine for Business: targeted at Enterprises, with SLA, paid support, and SQL
* Google Storage, Prediction and BigQuery APIs: storage, machine learning and interactive analytics services powered by Google infrastructure.
* Google Apps Marketplace: allows developers to integrate Google Apps in their applications and sell them to Google Apps customers.
* Google Fusion Tables, Maps API, Visualization API to create powerful and interactive visualization of data
A compare and contrast of Continuous Integration testing tools that can be used for Perl projects and where they all fall short. Also looking at what an ideal solution could look like.
This talk will compare the major cloud hosting companies and what products and services they offer. Google's App Engine, Amazon's AWS, Rackspace's Cloud Services and Linode will be compared. We will go beyond a mere checklist of features and dive into such topics as Perl support, cost structures, development strategies, underlying architectures, performance and security.
Introduction to Google App Engine talk delivered 2010 Jul 16 at EuroPython in Birmingham, UK and 2010 Jul 22 at the GTUG in London by Wesley Chun, Developer Advocate for Google.
This is a presentation on Google App Engine for Java given at Devfest 2009 in Buenos Aires Argentina on Nov 17, 2009 by Google Developer Advocate, Chris Schalk and Google Software Engineer, Ignacio Blanco.
Patrick Chanezon and Guillaume Laforge are presenting Google App Engine Java and Gaelyk, the lightweight groovy toolkit on top of the GAE SDK, at the Devoxx conference
This slides give you an overview of the technical challgens that Java EE application servers have faced to reinvent themselves. From monolithic to jigsaw puzzles, app servers are not the burden developpers use to use anymore
Javascript Views, Client-side or Server-side with NodeJSSylvain Zimmer
A talk I gave at the Paris Node Meetup on June 8th 2011, in front of all the best JS developers in Paris and NodeJS creator Ryan Dahl.
I hope it will make some devs avoid some of the horrible hashbang practices we see on websites like the new twitter !
Slides for a talk at the Colorado Software Summit in 2008 that I did about growing Bumper Sticker, a Ruby on Rails Facebook app to over a billion pageviews.
Funny thing is ... I had to bail on the conference. Had to ship product.
Introduction to Google App Engine talk delivered 2010 Jul 16 at EuroPython in Birmingham, UK and 2010 Jul 22 at the GTUG in London by Wesley Chun, Developer Advocate for Google.
This is a presentation on Google App Engine for Java given at Devfest 2009 in Buenos Aires Argentina on Nov 17, 2009 by Google Developer Advocate, Chris Schalk and Google Software Engineer, Ignacio Blanco.
Patrick Chanezon and Guillaume Laforge are presenting Google App Engine Java and Gaelyk, the lightweight groovy toolkit on top of the GAE SDK, at the Devoxx conference
This slides give you an overview of the technical challgens that Java EE application servers have faced to reinvent themselves. From monolithic to jigsaw puzzles, app servers are not the burden developpers use to use anymore
Javascript Views, Client-side or Server-side with NodeJSSylvain Zimmer
A talk I gave at the Paris Node Meetup on June 8th 2011, in front of all the best JS developers in Paris and NodeJS creator Ryan Dahl.
I hope it will make some devs avoid some of the horrible hashbang practices we see on websites like the new twitter !
Slides for a talk at the Colorado Software Summit in 2008 that I did about growing Bumper Sticker, a Ruby on Rails Facebook app to over a billion pageviews.
Funny thing is ... I had to bail on the conference. Had to ship product.
OSCON Google App Engine Codelab - July 2010ikailan
Slides for the App Engine codelab given on July 20, 2010. Note that a more verbose version of this codelab is available at:
https://sites.google.com/site/gdevelopercodelabs/app-engine/python-codelab
1. Google App Engine
Ikai Lan
Kuala Lumpur, GTUG Hackathon
Twitter: @ikai
June 18, 2011
Saturday, June 18, 2011
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: @ikai
Saturday, June 18, 2011
3. Agenda
• What is Google App Engine?
• Various features of GAE
• How to get started
• Introduction to Go
• Important tools + some tips
Saturday, June 18, 2011
4. Software
Platform
Infrastructure
Source: Gartner AADI Summit Dec 2009
Saturday, June 18, 2011
5. Software
Platform
Infrastructure
Source: Gartner AADI Summit Dec 2009
Saturday, June 18, 2011
6. Software
Platform
Infrastructure
Source: Gartner AADI Summit Dec 2009
Saturday, June 18, 2011
7. Software
Platform
Infrastructure
Source: Gartner AADI Summit Dec 2009
Saturday, June 18, 2011
8. • Easy to build
• Easy to manage
• Easy to scale
Saturday, June 18, 2011
9. “We wear pagers so
you don’t have to”
Saturday, June 18, 2011
12. SDK & “The Cloud”
Hardware
Networking
Operating system
Application runtime
Java, Python, Go
Static file serving
20
Saturday, June 18, 2011
13. Development Cycle
• Write code locally
• Test, push to Google Servers
• Administer via a web interface - http://
appengine.google.com
Saturday, June 18, 2011
17. Core APIs
Memcache Datastore URL Fetch
Mail XMPP Task Queue
Images Blobstore User Service
Saturday, June 18, 2011
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 outages
Saturday, June 18, 2011
19. Other APIs
• High performance image serving
• App Engine Map Reduce
• Prospective Search API
• Pipeline API
• OAuth provider
Saturday, June 18, 2011
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. 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.py
Saturday, June 18, 2011
24. Getting started with
Java
• Servlets API
• Google Plugin for Eclipse will generate a
skeleton project: http://code.google.com/
eclipse/beta/docs/download.html
Saturday, June 18, 2011
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 times
Saturday, June 18, 2011
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. 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 202
Saturday, June 18, 2011
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. 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
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
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 framework
Saturday, June 18, 2011
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 weekend
Saturday, June 18, 2011