App Engine

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    4 Favorites

    App Engine - Presentation Transcript

    1. :) easy deployment logs reliability versions costs scale
    2. web sites
    3. develop ? publish
    4. s3restart vps prefork subversion chown rsync ftp clustering mod_python capacitylighttpd replication php host backup dump rsh web develop sh mysql card credit ssh master/slave sharding apache post-commit sql chmod dns memcached scp balancing publish bash nginx load
    5. s3restart vps prefork subversion chown rsync ftp clustering mod_python capacitylighttpd replication php host backup dump rsh web develop sh mysql card credit ssh master/slave sharding apache post-commit sql chmod dns memcached scp balancing publish bash nginx load
    6. deployment s3restart vps rsync ftp prefork chown subversion clustering mod_python capacitylighttpd replication php host backup dump rsh web sh mysql card credit ssh master/slave sharding apache post-commit sql chmod dns memcached scp balancing bash nginx load
    7. develop publish
    8. develop publish
    9. Deploy
    10. develop publish Deploy
    11. reliable
    12. reliable
    13. reliable &scalable
    14. reliable &scalable
    15. easy test sites
    16. error reporting
    17. freeeeeeeeeeee!
    18. it’s here!
    19. Deploy
    20. Deploy
    21. Deploy
    22. :)
    23. versions
    24. logs
    25. data viewer
    26. scale!
    27. big table
    28. reliability
    29. costs
    30. $0
    31. $0 up to “5 million views per month”
    32. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    33. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    34. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    35. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    36. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    37. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    38. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    39. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    40. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    41. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    42. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    43. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    44. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    45. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    46. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80
    47. Storage GB/month 0.15 0.15 DB GB/month 0.15 1.50 Transfer GB 0.9–0.13 0.10–0.17 Requests 5m 0 5–50 CPU hour 0.10–0.12 0.14 + 0.10–0.80 cheap!
    48. :) easy deployment logs reliability versions costs scale
    49. :(
    50. quotas
    51. Storage per App 500MB Emails per Day 2,000 Bandwidth per Day 10 GB/10 GB CPU Megacycles per Day 200m Requests per Day 650,000 DB Queries per Day 2.5m External HTTP requests per Day 160,000
    52. file limits
    53. Files per App 1000 Size per file 1MB
    54. profiling
    55. subdomains
    56. subdomains twitter-downtime.zipiko.com
    57. subdomains twitter-downtime.zipiko.com
    58. SSL
    59. SSL https://zipiko.com/
    60. SSL https://zipiko.com/
    61. custom errors
    62. custom errors
    63. custom errors
    64. custom errors
    65. data store
    66. data store not relational
    67. data store not relational “kinda” like an object db
    68. the data store is your MOM
    69. MOM “don’t do joins, they’re bad for you!”
    70. MOM “no more (http) cookies for you!”
    71. LOCK-IN
    72. :( file limits data viewer subdomains lock-in data store is your mom custom server errors profiling ssl quotas
    73. Tips
    74. shell shell.appspot.com
    75. use the key, Luke!
    76. class Article(db.Model): title = db.StringProperty() slug = db.StringProperty()
    77. class Article(db.Model): title = db.StringProperty() slug = db.StringProperty() Article(title='Hello, world!', slug='hello-world').put()
    78. class Article(db.Model): title = db.StringProperty() slug = db.StringProperty() Article(title='Hello, world!', slug='hello-world').put()
    79. class Article(db.Model): title = db.StringProperty() slug = db.StringProperty() Article(title='Hello, world!', slug='hello-world').put() Article.get_or_insert( key_name='hello-world', title='Hello, world!').put()
    80. many-to-many
    81. class User(db.Model): name = db.StringProperty() email = db.StringProperty()
    82. class User(db.Model): class Group(db.Model): name = db.StringProperty() name = db.StringProperty() email = db.StringProperty()
    83. class User(db.Model): class Group(db.Model): name = db.StringProperty() name = db.StringProperty() email = db.StringProperty() class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group)
    84. class User(db.Model): class Group(db.Model): name = db.StringProperty() name = db.StringProperty() email = db.StringProperty() class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) Membership(user=bart, group=simpsons).put()
    85. class User(db.Model): class Group(db.Model): name = db.StringProperty() name = db.StringProperty() email = db.StringProperty() class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) Membership(user=bart, group=simpsons).put()
    86. class User(db.Model): class Group(db.Model): name = db.StringProperty() name = db.StringProperty() email = db.StringProperty() class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) Membership(user=bart, group=simpsons).put() Membership.get_or_insert( key_name='%s-%s' % (bart.key(), simpsons.key()), user=bart, group=simpsons).put()
    87. denormalize
    88. class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group)
    89. class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) [m.group for m in bart.membership_set]
    90. class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) [m.group for m in bart.membership_set]
    91. class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) group_name = db.StringProperty() ! def put(self): self.group_name = self.group.name super(Membership, self).put() [m.group for m in bart.membership_set]
    92. class Membership(db.Model): user = db.ReferenceProperty(User) group = db.ReferenceProperty(Group) group_name = db.StringProperty() ! def put(self): self.group_name = self.group.name super(Membership, self).put() [m.group for m in bart.membership_set] [m.group for m in bart.membership_set.order('group_name')]
    93. cache
    94. cache memcached
    95. scheduled tasks
    96. scheduled tasks Use cron+curl on another server
    97. scheduled tasks Use cron+curl on another server Use a monitoring service
    98. zip your code
    99. zip your code Python can import zips with zipimport
    100. zip your code Python can import zips with zipimport Pytz has a zoneinfo database which can be zipped
    101. profiling
    102. bart.membership_set.fetch(100)
    103. bart.membership_set.fetch(100)
    104. bart.membership_set.fetch(100) fetch(bart.membership_set, 100)
    105. bart.membership_set.fetch(100) fetch(bart.membership_set, 100) def fetch(set, limit=100): t1 = time.time() result = set.fetch(limit) t2 = time.time() logging.debug(‘Query took %d: %s’ % (t2-t1, traceback.format_stack()) return result
    106. purge indexes
    107. index.yaml
    108. index.yaml # appcfg.py vacuum_indexes .
    109. use versions!
    110. avoid lock-in
    111. use
    112. use code.google.com/p/google-app-engine-django/
    113. :( file limits data viewer subdomains lock-in data store is your mom custom server errors profiling ssl quotas
    114. :( z port file limits ipim data viewer subdomains lock-in data store is your mom custom server errors profiling ssl quotas
    115. :( port file limits sheviewer data ll zipim subdomains lock-in data store is your mom custom server errors profiling ssl quotas
    116. :( port file limits sheviewer data ll zipim subdomains redirect lock-in data store is your mom custom server errors profiling ssl quotas
    117. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django data store is your mom custom server errors profiling ssl quotas
    118. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django denorstore e your mom data malizis custom server errors profiling ssl quotas
    119. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django denorstore ebe scalable data malizis your mom custom server errors profiling ssl quotas
    120. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django denorstore ebe scalable data malizis your mom custom server errors our own ssl profiling do y quotas
    121. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django denorstore ebe scalable data malizis your mom custom server errors our own ssl profiling do y quotas
    122. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django denorstore ebe scalable data malizis your mom custom server errors our own ssl profiling do y quotas
    123. :( port file limits sheviewer data ll zipim subdomains redirect lock-in django denorstore ebe scalable data malizis your mom custom server errors our own ssl quotas profiling do y python
    124. :) easy deployment logs reliability versions costs scale
    125. :) easy deployment logs reliability versions costs scale
    126. :) easy deployment logs reliability versions costs scale thank you.
    127. Stefano J. Attardi attardi.org
    128. zipiko.com

    + ZipipopZipipop, 2 years ago

    custom

    2361 views, 4 favs, 4 embeds more stats

    Introduction to Google App Engine for the Helsinki more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 2361
      • 2083 on SlideShare
      • 278 from embeds
    • Comments 0
    • Favorites 4
    • Downloads 82
    Most viewed embeds
    • 272 views on http://about.zipipop.com
    • 3 views on http://news.zipipop.com
    • 2 views on http://www.zipipop.com
    • 1 views on http://www.about.zipipop.com

    more

    All embeds
    • 272 views on http://about.zipipop.com
    • 3 views on http://news.zipipop.com
    • 2 views on http://www.zipipop.com
    • 1 views on http://www.about.zipipop.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories