19. What we get from CouchDB
✔ Easy sharding
✔ Incredibly fast reads, faster than cheetahs!
✔ Develop views in a(ny) familiar language
✔ One instance can handle 500.000 databases
✔ Each database can easily store millions of records
✔ Online backups/snapshots and compaction
20. CouchDB has warts too :-(
✔ It's a “tad” slow on inserts
✔ 50 inserts per second
✔ We can push it to 500 by dropping fsync's and using
tmpfs
But it doesn't matter: we <3 CouchDB!
28. The Snake
* you need Acme::Python to understand this
Hisssssssssssssssss
Hiss hiss Hiss hiss Hissss hiss Hisss hisss
Hissss hiss Hiss hiss Hiss hisss Hisss hisssssss
Hiss hisss Hiss hissssss Hiss hiss Hisss
hissss Hisss hiss Hiss hiss Hisss hiss Hisss
hiss Hiss hiss Hiss hisss Hisss hisss Hiss
hiss Hissss hissss Hiss hiss Hissss hisssssss
Hiss hiss Hiss hiss Hiss hisss Hisssss hissss
Hiss hiss Hissss hisssss Hiss hiss Hisss
hiss Hisssss hiss Hisss hisss Hissss hiss
Hisss hiss Hisss hiss Hissss hissssssss Hiss
hisssssss Hissss hisss Hiss hisss Hissss
hiss Hiss hisss Hiss hiss Hisss hisss Hissss
hiss Hisss hissss Hiss hiss Hissss hisssssss
Hiss hissss Hiss hissss Hiss hisss Hisss
hissss Hisss hiss Hiss hisssss Hisss hisss
Hissss hiss Hisss hisssssss Hiss hisss Hisss
hissss Hiss hisss Hiss hissssss Hiss hisss
Hissss hiss Hisss hiss Hiss hisss Hiss hiss
Hisss hissss Hiss hiss Hissss hiss Hiss hisssss
Hisss hisssssss Hiss hissss Hiss hisss Hissss
hiss Hiss hiss Hiss hiss Hissss hisss Hissss
hiss Hisss hisssssss Hiss hisssss Hisss hisss
Hiss hiss Hiss hisss Hiss hiss Hisss hisss
Hissss hiss Hisss hiss Hiss hiss Hiss hiss
Hissss hisssss Hisssss hiss Hisssssss hissss
Hiss hissss Hiss hisss Hisss hiss Hissss
hissss Hiss hiss Hiss hisssss
40. Why Django?
✔ Modular: we can replace have replaced many parts
✔ Stable/solid: impressive # of tests, great docs!
✔ Easily hackable: it's Python after all
43. What we replaced
✔ Auth: we built our own from the start
✔ Sessions: in-house developed stateless sessions
✔ ORM: now on it's way to meet the dodo!
✔ By extension: we never got the chance to use the
admin application
44. What we're keeping
✔ Templates: inheritance is great!
✔ Request handling/routing rules engine
✔ Forms: lots of validation there
✔ … other bits I can't really remember
48. Why is it important to us?
✔ Throttling, balancing, loose coupling
✔ We can tap into any queues and experiment
✔ Remember CouchDB? MQ is the MDA for each
“mailbox”
50. Our choice
✔ ActiveMQ: stable, small and fast enough
✔ Many protocols: we chose STOMP, nice to debug
✔ Had to create AsyncIO Python lib
51. Final bits on messaging
✔ Does MDB mean anything to you?
✔ Python has no MDB container, had to create one
✔ Python + processing (new in Python 3000):
✔ Configuration similar to Django's
✔ 1 process => 1 destination consumer