App engine devfest_mexico_10

3,448 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,448
On SlideShare
0
From Embeds
0
Number of Embeds
274
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

App engine devfest_mexico_10

  1. 1. Google App Engine Technical Update Chris Schalk Ignacio Blanco Developer Advocate Software Engineer http://twitter.com/cschalk http://twitter.com/blanconet
  2. 2. What is cloud computing?
  3. 3. Cloud Computing Defined SaaS APaaS IaaS Source: Gartner AADI Summit Dec 2009
  4. 4. IaaS value proposition…
  5. 5. APaaS value proposition…
  6. 6. APaaS value proposition…
  7. 7. Google App Engine Easy to build Easy to maintain Easy to scale
  8. 8. By the numbers
  9. 9. By the numbers
  10. 10. By the numbers 250,000+ Developers
  11. 11. By the numbers 100,000+ Apps
  12. 12. By the numbers 250M+ daily Pageviews
  13. 13. In a word… via Wordle Word source: http://en.wikipedia.org/wiki/App_Engine
  14. 14. Some App Engine Partners
  15. 15. Socialwok
  16. 16. Social networking at scale >62M Users
  17. 17. gigy Socialize
  18. 18. gigy Socialize Flexible Scalability "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
  19. 19. Why App Engine?
  20. 20. Managing Everything is Hard
  21. 21. DIY Hosting means hidden costs Idle capacity Software patches & upgrades License fees Lots of maintenance Traffic & utilization forecasting Upgrades
  22. 22. Cloud development in a box SDK & “The Cloud” Hardware Networking Operating system Application runtime Java, Python Static file serving Services Fault tolerance Load balancing
  23. 23. App Engine Details
  24. 24. Specialized Services Memcache Datastore URL Fetch Mail XMPP Task Queue Images Blobstore User Service
  25. 25. Specialized Services Memcache Datastore URL Fetch Mail XMPP Task Queue Images Blobstore User Service
  26. 26. Language runtimes Duke, the Java mascot Copyright © Sun Microsystems Inc., all rights reserved.
  27. 27. Ensuring Portability
  28. 28. Extended Language support through JVM Java Scala JRuby (Ruby) Groovy Quercus (PHP) Rhino (JavaScript) Duke, the Java mascot Copyright © Sun Microsystems Inc., all rights reserved. Jython (Python)
  29. 29. Always free to get started -~5M pageviews/month 6.5 CPU hrs/day 1 GB storage 650K URL Fetch calls/day 2,000 recipients emailed 1 GB/day bandwidth 100,000 tasks enqueued 650K XMPP messages/day
  30. 30. Application Platform Management
  31. 31. App Engine Dashboard
  32. 32. App Engine Health History
  33. 33. 20+ 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 Feb 2010 Datastore cursors
  34. 34. Happy Birthday App Engine! Two years old as of Wed April 7th! Vibrant community of over 250k developers Over 250 million pageviews http://googleappengine.blogspot.com/2010/04/happy-birthday.html
  35. 35. Development Tools for App Engine
  36. 36. Google App Engine Launcher
  37. 37. SDK Console
  38. 38. Google Plugin for Eclipse
  39. 39. New Features!
  40. 40. 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)
  41. 41. 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('from_me@example.com', self.request.get('to'), self.request.get('subject'), self.request.get('body'))
  42. 42. Cron #1 cron.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
  43. 43. 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 = 'somebody@example.com' recipient = 'interested-people@example.com' body = ('Hello! The weekly memcache flush succeeded.n') body += '<3 your friendly neighborhood cron job' body += 'pre-flush stats %s nn' % 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) ...
  44. 44. AppStats Win a T-shirt Upload before/after screenshots and link them on Twitter before May 2nd @app_engine #coolappstats
  45. 45. Demo time!
  46. 46. Wall demo App http://devfestmxwall.appspot.com
  47. 47. Guestbook + XMPP http://devfestmxguestbook.appspot.com Add in gmail and chat with: devfestmxguestbook@appspot. com
  48. 48. A latin american App Engine user's perspective: eForcers.com
  49. 49. Nuestra Experiencia con Google App Engine Aplicaciones empresariales y sitios Web públicos Runtime Python y Java. ~2 años Beneficios Concentrarnos en la funcionalidad NO en el resto Fácil despliegue instalación Retos Base de datos relacional vs. Bigtable Limitantes y restricciones
  50. 50. Fundación Rogelio Salmona http://obra.fundacionrogeliosalmona.org Panel de Soporte para Operadores Google Apps
  51. 51. Contáctenos www.eforcers.com Eforcers S.A. Cra. 12 No. 90 - 20 Oficina 301 Bogotá, Colombia [571] 6 22 83 20 info@eforcers.com
  52. 52. More Info on App Engine: http://code.google.com/appengine http://googleappengine.blogspot.com/ http://gae-java-persistence.blogspot.com/ http://bit.ly/gcodelabs
  53. 53. One last thing If you experience any issue during the appengine signup like not receiving the SMS http://bit.ly/devfestsms

×