55

App engine devfest_mexico_10

Embed Size (px)

Citation preview

Page 1: App engine devfest_mexico_10
Page 2: App engine devfest_mexico_10

Google App Engine Technical Update

Chris SchalkDeveloper Advocatehttp://twitter.com/cschalk

Ignacio BlancoSoftware Engineerhttp://twitter.com/blanconet

Page 3: App engine devfest_mexico_10

What iscloud

computing?

Page 4: App engine devfest_mexico_10

IaaS

APaaS

SaaS

Source: Gartner AADI Summit Dec 2009

Cloud Computing Defined

Page 5: App engine devfest_mexico_10

IaaS value proposition…

Page 6: App engine devfest_mexico_10

APaaS value proposition…

Page 7: App engine devfest_mexico_10

APaaS value proposition…

Page 8: App engine devfest_mexico_10

Google App Engine

Easy to buildEasy to maintainEasy to scale

Page 9: App engine devfest_mexico_10

By the numbers

Page 10: App engine devfest_mexico_10

By the numbers

Page 11: App engine devfest_mexico_10

By the numbers

250,000+ Developers

Page 12: App engine devfest_mexico_10

By the numbers

100,000+ Apps

Page 13: App engine devfest_mexico_10

By the numbers

250M+daily

Pageviews

Page 14: App engine devfest_mexico_10

In a word… via Wordle

Word source: http://en.wikipedia.org/wiki/App_Engine

Page 15: App engine devfest_mexico_10

Some App Engine Partners

Page 16: App engine devfest_mexico_10

Socialwok

Page 17: App engine devfest_mexico_10

Social networking at scale

>62M Users

Page 18: App engine devfest_mexico_10

gigy Socialize

Page 19: App engine devfest_mexico_10

gigy Socialize

"Although we typically host all our services in-house, on our own infrastructure, we felt that GAE would be a better fit

for the live chat feature because of its unique traffic pattern, which is characterized by very low traffic most of the time with very high

bursts during high profile events."

Raviv Pavel, Gigya VP of Research and Development

http://googleappengine.blogspot.com/2010/02/scalability-means-flexibility.html#links

Flexible Scalability

Page 20: App engine devfest_mexico_10

Why App Engine?

Page 21: App engine devfest_mexico_10

Managing Everything is Hard

Page 22: App engine devfest_mexico_10
Page 23: App engine devfest_mexico_10

DIY Hosting means hidden costs

Idle capacitySoftware patches & upgradesLicense feesLots of maintenanceTraffic & utilization forecastingUpgrades

Page 24: App engine devfest_mexico_10

Cloud development in a boxSDK & “The Cloud”HardwareNetworkingOperating systemApplication runtime

Java, PythonStatic file servingServicesFault toleranceLoad balancing

Page 25: App engine devfest_mexico_10

App Engine Details

Page 26: App engine devfest_mexico_10

Specialized Services

BlobstoreImages

Mail XMPP Task Queue

Memcache Datastore URL Fetch

User Service

Page 27: App engine devfest_mexico_10

Specialized Services

BlobstoreImages

Mail XMPP Task Queue

Memcache Datastore URL Fetch

User Service

Page 28: App engine devfest_mexico_10

Language runtimes

Duke, the Java mascotCopyright © Sun Microsystems Inc., all rights reserved.

Page 29: App engine devfest_mexico_10

Ensuring Portability

Page 30: App engine devfest_mexico_10

Extended Language support through JVM

JavaScalaJRuby (Ruby)GroovyQuercus (PHP)Rhino (JavaScript)Jython (Python)

Duke, the Java mascotCopyright © Sun Microsystems Inc., all rights reserved.

Page 31: App engine devfest_mexico_10

Always free to get started

-~5M pageviews/month6.5 CPU hrs/day1 GB storage650K URL Fetch calls/day2,000 recipients emailed1 GB/day bandwidth100,000 tasks enqueued650K XMPP messages/day

Page 32: App engine devfest_mexico_10

Application Platform Management

Page 33: App engine devfest_mexico_10

App Engine Dashboard

Page 34: App engine devfest_mexico_10

App Engine Health History

Page 35: App engine devfest_mexico_10

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

20+ months in review

Page 36: App engine devfest_mexico_10

Happy Birthday App Engine!

Two years old as of Wed April 7th!Vibrant community of over 250k developersOver 250 million pageviewshttp://googleappengine.blogspot.com/2010/04/happy-birthday.html

Page 37: App engine devfest_mexico_10

Development Tools for App Engine

Page 38: App engine devfest_mexico_10

Google App Engine Launcher

Page 39: App engine devfest_mexico_10

SDK Console

Page 40: App engine devfest_mexico_10

Google Plugin for Eclipse

Page 41: App engine devfest_mexico_10

New Features!

Page 42: App engine devfest_mexico_10

Cursors

# class Person(db.Model): ...

# Start a query for all Person entities.q = Person.all()

# If the app stored a cursor during a previous request, use it.last_cursor = memcache.get('person_cursor')if last_cursor: q.with_cursor(last_cursor)

# Perform the query to get 100 results.people = q.fetch(100)

# Store the latest cursor for the next request.cursor = q.cursor()memcache.set('person_cursor', cursor)

Page 43: App engine devfest_mexico_10

Task queue# for each user, add a task to send a custom email message for u in users: taskqueue.add(url='/work/sendmail', params=dict(to=u.email, subject='Hello ' + u.name, body='this is a message!')) return # finished now, emails will be sent offline using tasks ...# task handler automatically called for each task created above class MailWorker(webapp.RequestHandler): def post(self): mail.send_mail('[email protected]', self.request.get('to'), self.request.get('subject'), self.request.get('body'))

Page 44: App engine devfest_mexico_10

Cron #1cron.yaml (in your project root)

cron:- description: clear memcache url: /memcache_clear schedule: every 24 hours...

# Human-readable schedule format:# every 5 minutes# every 12 hours# 2nd,third mon,wed,thu of march 17:00# every monday 09:00# 1st monday of sep,oct,nov 17:00# every day 00:00

Page 45: App engine devfest_mexico_10

Cron #2...class ClearMemcache(webapp.RequestHandler): def get(self): pre_flush_stats = memcache.get_stats() memcache.flush_all() post_flush_stats = memcache.get_stats() subject = 'Daily memcache flush' sender = '[email protected]' recipient = '[email protected]' body = ('Hello! The weekly memcache flush succeeded.\n') body += '<3 your friendly neighborhood cron job' body += 'pre-flush stats %s \n\n' % str(pre_flush_stats) body += 'post-flush stats %s' % str(post_flush_stats) mail.send_mail(sender, recipient, subject, body) application = webapp.WSGIApplication([('/memcache_clear', ClearMemcache)], debug=True)...

Page 46: App engine devfest_mexico_10

AppStats

@app_engine#coolappstats

Win a T-shirt

Upload before/after screenshots and link them on Twitter before May 2nd

Page 47: App engine devfest_mexico_10

Demo time!

Page 48: App engine devfest_mexico_10

Wall demo App

http://devfestmxwall.appspot.com

Page 49: App engine devfest_mexico_10

Guestbook + XMPP

http://devfestmxguestbook.appspot.com

[email protected]

Add in gmail and chat with:

Page 50: App engine devfest_mexico_10

A latin american App Engine user's perspective:

eForcers.com

Page 51: App engine devfest_mexico_10

Nuestra Experiencia con Google App Engine

Aplicaciones empresariales y sitios Web públicosRuntime Python y Java. ~2 años

BeneficiosConcentrarnos en la funcionalidad NO en el restoFácil despliegue instalación

RetosBase de datos relacional vs. BigtableLimitantes y restricciones

Page 52: App engine devfest_mexico_10

Fundación Rogelio Salmonahttp://obra.fundacionrogeliosalmona.org

Panel de Soporte para Operadores Google Apps

Page 53: App engine devfest_mexico_10

Contáctenos

www.eforcers.com

Eforcers S.A.Cra. 12 No. 90 - 20

Oficina 301Bogotá, Colombia

[571] 6 22 83 [email protected]

Page 54: App engine devfest_mexico_10

http://code.google.com/appengine

More Info on App Engine:

http://googleappengine.blogspot.com/

http://gae-java-persistence.blogspot.com/http://bit.ly/gcodelabs

Page 55: App engine devfest_mexico_10

If you experience any issue during the appengine signup like not receiving the SMS

One last thing

http://bit.ly/devfestsms