Technology in a startup
          @ 7syntax




                      Celso Pinto
Coder, headbanger, biker and founder
And Python lover
Then: 2 + 1 idea
Now: a 5 men army
Fighting the evil empire!
with
A tech startup lives by it's tech
TECH FAIL
From the very back end...




    http://flickr.com/photos/your_teacher/133262843/
Question time!
So, about data storage
Relational is dead... to me!

✔   Fast key based access
✔   Cheetah-fast list fetches
✔   Prefer to search with Lucene
Cheetah fast reads

✔   Fast key based access
✔   Cheetah-fast list fetches
✔   Prefer to search with Lucene
Stuff I actually considered

✔   Standard mailboxes, accessible via POP/SMTP
Stuff I actually considered

✔   Standard mailboxes, accessible via POP/SMTP
✔   Fixed block files
Stuff I actually considered

✔   Standard mailboxes, accessible via POP/SMTP
✔   Fixed block files
✔   MogileFS (plus Luce...
But then...
Any day now
What we get from CouchDB

✔   Easy sharding
✔   Incredibly fast reads, faster than cheetahs!
✔   Develop views in a(ny) fa...
CouchDB has warts too :-(

✔   It's a “tad” slow on inserts
    ✔   50 inserts per second
    ✔   We can push it to 500 by...
Any questions so far?
Programming language(s)
Programming languages
Programming languages
No!
No!
Programming languages
The Snake
 * you need Acme::Python to understand this


Hisssssssssssssssss
Hiss hiss Hiss hiss Hissss hiss Hisss hisss
Hi...
Only one restriction



4 space indents
 But you should be doing that already!
Other advantages

Here we have Python     Some other language
After one year

Still Python   Some other language
On the mobile
On the mobile
On the web front
On the web front
Any questions?
Frameworks vs. Libraries
Siza Vieira
The blue pill
Why Django?

✔   Modular: we can replace have replaced many parts
✔   Stable/solid: impressive # of tests, great docs!
✔  ...
No, seriously...
Alright, you win
What we replaced

✔   Auth: we built our own from the start
✔   Sessions: in-house developed stateless sessions
✔   ORM: n...
What we're keeping

✔   Templates: inheritance is great!
✔   Request handling/routing rules engine
✔   Forms: lots of vali...
How we're using Django
Any questions about Django?
Messaging
Why is it important to us?

✔   Throttling, balancing, loose coupling
✔   We can tap into any queues and experiment
✔   Re...
Lots of good stuff out there
Our choice

✔   ActiveMQ: stable, small and fast enough
✔   Many protocols: we chose STOMP, nice to debug
✔   Had to creat...
Final bits on messaging

✔   Does MDB mean anything to you?
✔   Python has no MDB container, had to create one
✔   Python ...
Any questions about messaging?
Wrapping up
Current architecture

                      mobile         web            ?



                                    perlbal...
Any final questions?
Thank you very much!




Celso Pinto // cpinto@7syntax.com
Upcoming SlideShare
Loading in...5
×

Codebits Handivi

1,803

Published on

Presentation on what happens behind the scenes at handivi.com by Celso Pinto for SAPO's Codebits 2008

Published in: Technology
6 Comments
9 Likes
Statistics
Notes
No Downloads
Views
Total Views
1,803
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
93
Comments
6
Likes
9
Embeds 0
No embeds

No notes for slide

Codebits Handivi

  1. 1. Technology in a startup @ 7syntax Celso Pinto Coder, headbanger, biker and founder
  2. 2. And Python lover
  3. 3. Then: 2 + 1 idea
  4. 4. Now: a 5 men army
  5. 5. Fighting the evil empire!
  6. 6. with
  7. 7. A tech startup lives by it's tech
  8. 8. TECH FAIL
  9. 9. From the very back end... http://flickr.com/photos/your_teacher/133262843/
  10. 10. Question time!
  11. 11. So, about data storage
  12. 12. Relational is dead... to me! ✔ Fast key based access ✔ Cheetah-fast list fetches ✔ Prefer to search with Lucene
  13. 13. Cheetah fast reads ✔ Fast key based access ✔ Cheetah-fast list fetches ✔ Prefer to search with Lucene
  14. 14. Stuff I actually considered ✔ Standard mailboxes, accessible via POP/SMTP
  15. 15. Stuff I actually considered ✔ Standard mailboxes, accessible via POP/SMTP ✔ Fixed block files
  16. 16. Stuff I actually considered ✔ Standard mailboxes, accessible via POP/SMTP ✔ Fixed block files ✔ MogileFS (plus Lucene for complete indexing)
  17. 17. But then...
  18. 18. Any day now
  19. 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. 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!
  21. 21. Any questions so far?
  22. 22. Programming language(s)
  23. 23. Programming languages
  24. 24. Programming languages
  25. 25. No!
  26. 26. No!
  27. 27. Programming languages
  28. 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
  29. 29. Only one restriction 4 space indents But you should be doing that already!
  30. 30. Other advantages Here we have Python Some other language
  31. 31. After one year Still Python Some other language
  32. 32. On the mobile
  33. 33. On the mobile
  34. 34. On the web front
  35. 35. On the web front
  36. 36. Any questions?
  37. 37. Frameworks vs. Libraries
  38. 38. Siza Vieira
  39. 39. The blue pill
  40. 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
  41. 41. No, seriously...
  42. 42. Alright, you win
  43. 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. 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
  45. 45. How we're using Django
  46. 46. Any questions about Django?
  47. 47. Messaging
  48. 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”
  49. 49. Lots of good stuff out there
  50. 50. Our choice ✔ ActiveMQ: stable, small and fast enough ✔ Many protocols: we chose STOMP, nice to debug ✔ Had to create AsyncIO Python lib
  51. 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
  52. 52. Any questions about messaging?
  53. 53. Wrapping up
  54. 54. Current architecture mobile web ? perlbal API static Ct. adapter (django apps) writes reads S3 consumers CouchDB accounts User 1 User 2 User n
  55. 55. Any final questions?
  56. 56. Thank you very much! Celso Pinto // cpinto@7syntax.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×