coscup2010 a-beautiful-mistake

Download Coscup2010 a-beautiful-mistake

If you can't read please download the document

Upload: -

Post on 26-Jun-2015

279 views

Category:

Documents


0 download

TRANSCRIPT

  • 1. Pingooo (COSCUP team) 2010-08-15 COSCUP / GNOME.Asia 2010 A Beautiful Mistake What was learned about App Engine with the registration system

2. Disclaimer (legal) The content of this talk is the speaker's personal opinion and is not the opinion or policy of his employer or COSCUP Team. 3. The Growth of COSCUP 4. The Growth of COSCUP ? 5. Jouston: 700 2010 2009/08/24 6. COSCUP COSCUP COSCUP 7. Jouston 8.

  • 300 9. 98 10. 10 11. 2EDM2000

12. Jouston 13. Decided to open up 610 slots 14. Traffic estimate

  • 2009: 550 slots, registered in 4 hours 8 minutes.
    • Average = 2.22/min
  • Prediction for this year:
    • 1.5x = 3.33/min 15. Peak time 2x = 6.66/min

16. A small piece of cake 17. Flow of Registration

  • Fill e-mail, badge name and other fields on a web form and submit 18. The web site produces a URL containing a confirmation code and send it to the e-mail address. 19. Recipient of the e-mail clicks the URL to complete the registration process.

20. Really a small piece of cake. Any computer science student can do it. 21. Other Requirements

  • I18n: English pages are needed, not just Chinese. 22. Reservation code: for important community members that can't go online when the registration opens. (different flow) 23. Questionnaire: collect data for marketing team and program committee.

24. Nothing but a small piece of cake. 25. App Engine i18n

  • Tasks:
    • Enable i18n 26. Internationalize messages in templates 27. Translation of message files 28. Browser language preference detection

29. Enable i18n in App Engine More than one solutions

  • Babel: external, need download 30. Django: built-in, just enable the configuration
    • po/mo 31. make-messages.py -l zh_TW# updates django.po 32. vim conf/locale/zh_TW/LC_MESSAGES/django.po 33. compile-messages.py# makes django.mo

34. Template Method design pattern 35. Load the i18n module Template Method design pattern 36. Load the i18n module Template Method design pattern 37. One more App Engine trick Better have this for service calls. 38. Set the opening time 2010-07-05T20:00:00 +0800 39. But... Need to pick up kids Leave @ 19:45 Back @ 20:20 40. Dashboard / Logs @ http://appengine.google.com/logs?app_id=foo&version_id=bar California time 41. What was missing? 42. How can it be? 43. Pingooo Pingooo (3616 hits, 295 IPs) @ 20:00 44. Yooooooooooooooooooooo! 45. Quota? 46. leads to FAILURE 47. 48. The fix: Task Queue add URL request (Flow control) 49. Batch e-mails?

  • Can't send > 8 mails/minute 50. Can't run a process > 30 seconds 51. How to send reminder e-mails to N people?
    • Submission: set up bookkeeping records in data store + add the queueing task to Task Queue. 52. Queuing task: queue X e-mail tasks + self, update state in bookkeeping 53. Email task: send the e-mail to one participant, update state.

Yes, you write3request handlers to send 1 batch of e-mails. 54. Conclusion When using App Engine to develop your app:

  • You need to care where data are stored 55. You need to care how processes are run 56. You need to pay attention to quota 57. You need to handle exceptions for services

And you'll getscalabilityin return. 58. Pingooo