SlideShare a Scribd company logo
1 of 56
Download to read offline
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 Lucene for complete indexing)
But then...
Any day now
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
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!
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
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
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!
✔   Easily hackable: it's Python after all
No, seriously...
Alright, you win
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
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
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
✔   Remember CouchDB? MQ is the MDA for each
    “mailbox”
Lots of good stuff out there
Our choice

✔   ActiveMQ: stable, small and fast enough
✔   Many protocols: we chose STOMP, nice to debug
✔   Had to create AsyncIO Python lib
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
Any questions about messaging?
Wrapping up
Current architecture

                      mobile         web            ?



                                    perlbal



                      API
                                     static     Ct. adapter
                 (django apps)
            writes

                         reads                                S3
consumers


                                              CouchDB
accounts     User 1        User 2   User n
Any final questions?
Thank you very much!




Celso Pinto // cpinto@7syntax.com

More Related Content

Viewers also liked

1315 estella ma_motorlearning
1315 estella ma_motorlearning1315 estella ma_motorlearning
1315 estella ma_motorlearningTian Stella
 
Audru Finantsiline Seisund
Audru Finantsiline SeisundAudru Finantsiline Seisund
Audru Finantsiline SeisundPunnpea
 
Value Co-Creation in Incubation Process
Value Co-Creation in Incubation ProcessValue Co-Creation in Incubation Process
Value Co-Creation in Incubation Processlodziko
 
Social Media - CONFR - Workshop Lebanon NH
Social Media - CONFR - Workshop Lebanon NHSocial Media - CONFR - Workshop Lebanon NH
Social Media - CONFR - Workshop Lebanon NHKelley-Sue LeBlanc
 
Open Source Meets Open Specifications
Open Source Meets Open SpecificationsOpen Source Meets Open Specifications
Open Source Meets Open SpecificationsKenn Hussey
 
20110601_MITEF_Opinno_Presentation
20110601_MITEF_Opinno_Presentation20110601_MITEF_Opinno_Presentation
20110601_MITEF_Opinno_PresentationPedro Moneo
 
Ξαστερια
ΞαστεριαΞαστερια
Ξαστεριαguest913466
 
1345 sk tse_variation
1345 sk tse_variation1345 sk tse_variation
1345 sk tse_variationTian Stella
 
Breastfeeding Slides Final
Breastfeeding Slides FinalBreastfeeding Slides Final
Breastfeeding Slides Finalsmiddles
 
EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t...
 EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t... EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t...
EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t...Keith.May
 
Architettura Di Reti Sicure
Architettura Di Reti SicureArchitettura Di Reti Sicure
Architettura Di Reti SicureRoberto Maggiora
 
Itil V3 The Begining
Itil V3 The BeginingItil V3 The Begining
Itil V3 The Beginingtmorisse
 
CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...
CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...
CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...Keith.May
 
1330 susan bridges_ohl
1330 susan bridges_ohl1330 susan bridges_ohl
1330 susan bridges_ohlTian Stella
 
Microsoft Office SpellCheck as an Assistive Technology
Microsoft Office SpellCheck as an Assistive TechnologyMicrosoft Office SpellCheck as an Assistive Technology
Microsoft Office SpellCheck as an Assistive Technologygueste114ea82
 
Teaching the teachers about social media.
Teaching the teachers about social media.Teaching the teachers about social media.
Teaching the teachers about social media.Kelley-Sue LeBlanc
 

Viewers also liked (20)

1315 estella ma_motorlearning
1315 estella ma_motorlearning1315 estella ma_motorlearning
1315 estella ma_motorlearning
 
NFCB
NFCBNFCB
NFCB
 
Audru Finantsiline Seisund
Audru Finantsiline SeisundAudru Finantsiline Seisund
Audru Finantsiline Seisund
 
Effat 1234
Effat 1234Effat 1234
Effat 1234
 
Value Co-Creation in Incubation Process
Value Co-Creation in Incubation ProcessValue Co-Creation in Incubation Process
Value Co-Creation in Incubation Process
 
Social Media - CONFR - Workshop Lebanon NH
Social Media - CONFR - Workshop Lebanon NHSocial Media - CONFR - Workshop Lebanon NH
Social Media - CONFR - Workshop Lebanon NH
 
Open Source Meets Open Specifications
Open Source Meets Open SpecificationsOpen Source Meets Open Specifications
Open Source Meets Open Specifications
 
20110601_MITEF_Opinno_Presentation
20110601_MITEF_Opinno_Presentation20110601_MITEF_Opinno_Presentation
20110601_MITEF_Opinno_Presentation
 
Ξαστερια
ΞαστεριαΞαστερια
Ξαστερια
 
1345 sk tse_variation
1345 sk tse_variation1345 sk tse_variation
1345 sk tse_variation
 
Breastfeeding Slides Final
Breastfeeding Slides FinalBreastfeeding Slides Final
Breastfeeding Slides Final
 
EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t...
 EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t... EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t...
EAA2013 Archaeological Recording Methods - How Many Archaeologists does it t...
 
Sanchar Solutions
Sanchar SolutionsSanchar Solutions
Sanchar Solutions
 
Architettura Di Reti Sicure
Architettura Di Reti SicureArchitettura Di Reti Sicure
Architettura Di Reti Sicure
 
Graphicast Sales
Graphicast SalesGraphicast Sales
Graphicast Sales
 
Itil V3 The Begining
Itil V3 The BeginingItil V3 The Begining
Itil V3 The Begining
 
CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...
CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...
CAA 2014 - To Boldly or Bravely Go? Experiences of using Semantic Technologie...
 
1330 susan bridges_ohl
1330 susan bridges_ohl1330 susan bridges_ohl
1330 susan bridges_ohl
 
Microsoft Office SpellCheck as an Assistive Technology
Microsoft Office SpellCheck as an Assistive TechnologyMicrosoft Office SpellCheck as an Assistive Technology
Microsoft Office SpellCheck as an Assistive Technology
 
Teaching the teachers about social media.
Teaching the teachers about social media.Teaching the teachers about social media.
Teaching the teachers about social media.
 

Similar to Codebits Handivi

Streaming 101: Hello World
Streaming 101:  Hello WorldStreaming 101:  Hello World
Streaming 101: Hello WorldJosh Fischer
 
Harmonic Stack for Speed
Harmonic Stack for SpeedHarmonic Stack for Speed
Harmonic Stack for SpeedYung-Yu Chen
 
Realtime communication over a dual stack network
Realtime communication over a dual stack networkRealtime communication over a dual stack network
Realtime communication over a dual stack networkOlle E Johansson
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2ice799
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsUwe Korn
 
Scratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieESUG
 
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesOSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesNETWAYS
 
Bridging Ousterhout's Dichotomy
Bridging Ousterhout's DichotomyBridging Ousterhout's Dichotomy
Bridging Ousterhout's Dichotomyguest2838a0
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdbjixuan1989
 
Pythonic doesn't mean slow!
Pythonic doesn't mean slow!Pythonic doesn't mean slow!
Pythonic doesn't mean slow!Ronan Lamy
 
Py4 inf 01-intro
Py4 inf 01-introPy4 inf 01-intro
Py4 inf 01-introIshaq Ali
 
Deploying PHP on PaaS: Why and How?
Deploying PHP on PaaS: Why and How?Deploying PHP on PaaS: Why and How?
Deploying PHP on PaaS: Why and How?Docker, Inc.
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 KeynotePeter Wang
 
Talk at Bioinformatics Open Source Conference, 2012
Talk at Bioinformatics Open Source Conference, 2012Talk at Bioinformatics Open Source Conference, 2012
Talk at Bioinformatics Open Source Conference, 2012c.titus.brown
 
CT Brown - Doing next-gen sequencing analysis in the cloud
CT Brown - Doing next-gen sequencing analysis in the cloudCT Brown - Doing next-gen sequencing analysis in the cloud
CT Brown - Doing next-gen sequencing analysis in the cloudJan Aerts
 
Caring for file formats
Caring for file formatsCaring for file formats
Caring for file formatsAnge Albertini
 
STP201 Efficiency at Scale - AWS re: Invent 2012
STP201 Efficiency at Scale - AWS re: Invent 2012STP201 Efficiency at Scale - AWS re: Invent 2012
STP201 Efficiency at Scale - AWS re: Invent 2012Amazon Web Services
 
Developing The Web
Developing The WebDeveloping The Web
Developing The Webtimoh
 

Similar to Codebits Handivi (20)

Streaming 101: Hello World
Streaming 101:  Hello WorldStreaming 101:  Hello World
Streaming 101: Hello World
 
Harmonic Stack for Speed
Harmonic Stack for SpeedHarmonic Stack for Speed
Harmonic Stack for Speed
 
Realtime communication over a dual stack network
Realtime communication over a dual stack networkRealtime communication over a dual stack network
Realtime communication over a dual stack network
 
Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2Infrastructure as code might be literally impossible part 2
Infrastructure as code might be literally impossible part 2
 
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" EcosystemsPyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
PyData Frankfurt - (Efficient) Data Exchange with "Foreign" Ecosystems
 
Scratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry PieScratching the itch, making Scratch for the Raspberry Pie
Scratching the itch, making Scratch for the Raspberry Pie
 
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-BayesOSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
OSDC 2016 - Ingesting Logs with Style by Pere Urbon-Bayes
 
Bridging Ousterhout's Dichotomy
Bridging Ousterhout's DichotomyBridging Ousterhout's Dichotomy
Bridging Ousterhout's Dichotomy
 
From a student to an apache committer practice of apache io tdb
From a student to an apache committer  practice of apache io tdbFrom a student to an apache committer  practice of apache io tdb
From a student to an apache committer practice of apache io tdb
 
Pythonic doesn't mean slow!
Pythonic doesn't mean slow!Pythonic doesn't mean slow!
Pythonic doesn't mean slow!
 
PySide
PySidePySide
PySide
 
py4inf-01-intro.ppt
py4inf-01-intro.pptpy4inf-01-intro.ppt
py4inf-01-intro.ppt
 
Py4 inf 01-intro
Py4 inf 01-introPy4 inf 01-intro
Py4 inf 01-intro
 
Deploying PHP on PaaS: Why and How?
Deploying PHP on PaaS: Why and How?Deploying PHP on PaaS: Why and How?
Deploying PHP on PaaS: Why and How?
 
PyData Texas 2015 Keynote
PyData Texas 2015 KeynotePyData Texas 2015 Keynote
PyData Texas 2015 Keynote
 
Talk at Bioinformatics Open Source Conference, 2012
Talk at Bioinformatics Open Source Conference, 2012Talk at Bioinformatics Open Source Conference, 2012
Talk at Bioinformatics Open Source Conference, 2012
 
CT Brown - Doing next-gen sequencing analysis in the cloud
CT Brown - Doing next-gen sequencing analysis in the cloudCT Brown - Doing next-gen sequencing analysis in the cloud
CT Brown - Doing next-gen sequencing analysis in the cloud
 
Caring for file formats
Caring for file formatsCaring for file formats
Caring for file formats
 
STP201 Efficiency at Scale - AWS re: Invent 2012
STP201 Efficiency at Scale - AWS re: Invent 2012STP201 Efficiency at Scale - AWS re: Invent 2012
STP201 Efficiency at Scale - AWS re: Invent 2012
 
Developing The Web
Developing The WebDeveloping The Web
Developing The Web
 

Recently uploaded

MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

Codebits Handivi

  • 1. Technology in a startup @ 7syntax Celso Pinto Coder, headbanger, biker and founder
  • 3. Then: 2 + 1 idea
  • 4. Now: a 5 men army
  • 7. A tech startup lives by it's tech
  • 9. From the very back end... http://flickr.com/photos/your_teacher/133262843/
  • 11. So, about data storage
  • 12. Relational is dead... to me! ✔ Fast key based access ✔ Cheetah-fast list fetches ✔ Prefer to search with Lucene
  • 13. Cheetah fast reads ✔ Fast key based access ✔ Cheetah-fast list fetches ✔ Prefer to search with Lucene
  • 14. Stuff I actually considered ✔ Standard mailboxes, accessible via POP/SMTP
  • 15. Stuff I actually considered ✔ Standard mailboxes, accessible via POP/SMTP ✔ Fixed block files
  • 16. Stuff I actually considered ✔ Standard mailboxes, accessible via POP/SMTP ✔ Fixed block files ✔ MogileFS (plus Lucene for complete indexing)
  • 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!
  • 25. No!
  • 26. No!
  • 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. Only one restriction 4 space indents But you should be doing that already!
  • 30. Other advantages Here we have Python Some other language
  • 31. After one year Still Python Some other language
  • 34. On the web front
  • 35. On the web front
  • 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
  • 45. How we're using Django
  • 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. Lots of good stuff out there
  • 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
  • 52. Any questions about messaging?
  • 54. Current architecture mobile web ? perlbal API static Ct. adapter (django apps) writes reads S3 consumers CouchDB accounts User 1 User 2 User n
  • 56. Thank you very much! Celso Pinto // cpinto@7syntax.com