- 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.
- 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