SlideShare une entreprise Scribd logo
1  sur  66
Just Build
    It!
 Scott Rutherford, DIBI 2012
A Quick Question
CERN
• Axomic (OpenAsset)
• Caron Software
• Caron Records / Publishing
• Yabb / Cominded
• ThatsUseful (BuddyMap, Boovu, et al.)
• RecommendBox
• Njoyed
• SlimTimer
Market leading customer feedback &
support solution

21 strong in San Francisco & Raleigh

90,000+ organizations have used
us

$2M+ raised over 2 funding
rounds

Tens of millions of
registered users
182 people/sec see our
product
Failing Up
Happen’s To The
     Best
• Facebook Beacon (Feature)
• Google Wave (Product)
• Twitter - Scaling (Technology)
• Coke - New Coke! (Marketing)
“we're not that dumb,
 and we're not that
smart!” - Don Keough
Shit Happens!
You Can’t Plan For
   Everything!
Things are going to go wrong. It’s the way we
  react at these moments that defines to a
   great degree how successful we will be.

    Don’t spend time planning for every
eventuality. Just be prepared to move quickly
 and decisively when situations arise. Don’t
           build failure in though!!!
Just Build
    It!
ActiveScaffold      (AKA AjaxScaffold Plugin)


 One line of Code
ActiveScaffold      (AKA AjaxScaffold Plugin)


 One line of Code
ActiveScaffold      (AKA AjaxScaffold Plugin)


 One line of Code
ActiveScaffold      (AKA AjaxScaffold Plugin)


 One line of Code

 >100K Installs

 > 750K Visitors
Version 1.0
• Rails 1.2.3 / HopToad / NewRelic /
  CloudFront
• Engine Yard
 • Shared MySQL database
 • 2 slices (and staging)
• Admin section based on ActiveScaffold
• No billing ability until the end of 2008 (then
  using Freemium OSS)
Building Fast
• Created our own problems
• Insufficient test coverage and no CI
Building Fast
• Created our own problems
• Insufficient test coverage and no CI
 • deploy production:rollback
• Watch those AJAX calls
Building Fast
• Created our own problems
• Insufficient test coverage and no CI
 • deploy production:rollback
• Watch those AJAX calls
• Be careful when testing.....
Building Fast
• Created our own problems
• Insufficient test coverage and no CI
 • deploy production:rollback
• Watch those AJAX calls
• Be careful when testing.....
Stunning Timing
Stunning Timing




           April 2009
          Raised $800k
Version 2.0
Features, Features, Features

   • Reporting / Administration Tools
   • Multiple Languages (now crowd sourced)
   • Search that worked (Sphinx)
   • Single Sign On
   • API
   • Billing (constant PITA)
Growing....
• 15 - 20% month
• 6 web boxes
• 2 databases (master / slave)
• Staging
• Admin
• Office!
Problems
• Shared database started to creak
• Tables growing in size - queries not scaling
• Overused MySQL - queue, stats
• Not enough caching
• Dark corners - data exports, email
  notifications
• Still insufficient test coverage and no CI
• Us...... (production deploy:rollback)
“Zee Germans”
Into The Cloud....
• Moved servers to SoftLayer
• Passenger and Ruby Enterprise
• Signed up 4 million new users in 2 hours
• 6 slices expanded to 24
• Stability resumed.......
Still Shaky
• Redis / Resque for the queue
• Redis for stats
• More memcached
• Make as many things background jobs as
  possible
• Things are under control
• Or so we thought.....
Meltdown
• 10 days of almost stability
• Flew to SXSW
• MySQL melted (still on 5.0)
• Percona rescued us from the dreaded
  MYSQL AUTO INCREMENT BUG (Moved
  us to 5.1)
• Finally have a scalable redundant system,
  right?
DNS can fail?
• Using ZoneEdit (free)
• All nameservers went down, all hell broke
  loose
• Contacted by DynECT over Twitter!
• Gave us a free account to get going again.
  Moved to them
• Stopped thinking about DNS!
Retention / Metrics
                91% :(
               10 months
What now?
• Ongoing monitoring - daily slice stored in
  Mongo
• Surveys at exit
• Addition of HelpDesk & Knowledge Base
• Integrations
• API, Facebook, iOS
“Zee Germans”
And back to Earth
   with a bump
• Softlayer had a few major outages on their
  cloud infrastructure
• Slices are still shared resources
• You can’t get someone to just reboot the
  box
• Lesson: cloud is great to scale with, not so
  good for stability
So where are we now?
 •   20 systems in production (2 cloud instances)

 •   Web - 6x dual cpu/quad core 12G RAM nginx/passenger,
     memcache

 •   Resque - 3x single cpu/quad core 8gb RAM

 •   Redis - Dual CPU/quad core 12g RAM

 •   Mongo - 2x dual cpu/hex core 48G RAM 12x 15k RPM
     SAS drives RAID10

 •   MySQL - 2x dual cpu/hex core 72G RAM 24x 15k RPM
     SAS drives RAID10

 •   97% month / month retention
What have we
  learned?
What have we
  learned?
   if anything.....
Performance


          Realization
        > 200ms stuffed
Gems
More Gems
Mouth / UGC Styles
The right tool!
Databases
• Redis - Queue, Stats / Admin
• Mongo - Stats / Mouth, PageViews,
  Financials, Retention
• MySQL - Main data store
• Sphinx - Search
• Memcached - Caching
Libraries
• jQuery
• Backbone
• D3
• SVG
• MooTools Server
• SASS
• Compass
Software
• DSpam
• Chef
• Ganglia
• Nagios
• Capistrano
• Passenger
• Nginx / HAProxy
External Services
• Mailgun      • Akamai
• Embedly      • Akismet
• Pusher App   • Dynect
• Airbrake     • SoftLayer
• S3           • GitHub
Wish We’d Had
K.I.S.S
      200 moving parts
        to change a
        lightbulb.....
Localize
Unsinkable?
Stealth mode is for..
Listen, no really...
        "If I had asked people
        what they wanted,
        they would have said
        faster horses."

            Attributed to Henry Ford
Our Creations
• Resque Sliders - https://github.com/
  kmullin/resque-sliders

• Serve - http://get-serve.com/
• Mouth - https://github.com/cypriss/
  mouth

• UGC Styles - https://github.com/
  joshuarudd/ugc-styles

• ActiveScaffold - https://github.com/
  activescaffold/active_scaffold
Just Build
    It!
The best time to start is NOW!!
Scott Rutherford
  @scottrutherford
scott@uservoice.com

Contenu connexe

Tendances

SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSEugene Lazutkin
 
Getting 100B Metrics to Disk
Getting 100B Metrics to DiskGetting 100B Metrics to Disk
Getting 100B Metrics to Diskjthurman42
 
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
Php johannesburg   meetup - talk 2014 - scaling php in the enterprisePhp johannesburg   meetup - talk 2014 - scaling php in the enterprise
Php johannesburg meetup - talk 2014 - scaling php in the enterpriseSarel van der Walt
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksFITC
 
Tiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTung Ns
 
AOL - Ian Holsman - Hadoop World 2010
AOL - Ian Holsman - Hadoop World 2010AOL - Ian Holsman - Hadoop World 2010
AOL - Ian Holsman - Hadoop World 2010Cloudera, Inc.
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveDavide Mauri
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemFITC
 
Five Years of EC2 Distilled
Five Years of EC2 DistilledFive Years of EC2 Distilled
Five Years of EC2 DistilledGrig Gheorghiu
 
Integrating multiple CDNs at Etsy
Integrating multiple CDNs at EtsyIntegrating multiple CDNs at Etsy
Integrating multiple CDNs at EtsyLaurie Denness
 
Real-world Experiences in Scala
Real-world Experiences in ScalaReal-world Experiences in Scala
Real-world Experiences in ScalaAmir Karimi
 
Continuous Delivery at Wix
Continuous Delivery at WixContinuous Delivery at Wix
Continuous Delivery at WixYoav Avrahami
 
Redis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRedis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRicard Clau
 
Solving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache CamelSolving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache CamelChristian Posta
 
New Server in an Hour #sqlsat121
New Server in an Hour #sqlsat121New Server in an Hour #sqlsat121
New Server in an Hour #sqlsat121Mike Hillwig
 

Tendances (18)

SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJS
 
Getting 100B Metrics to Disk
Getting 100B Metrics to DiskGetting 100B Metrics to Disk
Getting 100B Metrics to Disk
 
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
Php johannesburg   meetup - talk 2014 - scaling php in the enterprisePhp johannesburg   meetup - talk 2014 - scaling php in the enterprise
Php johannesburg meetup - talk 2014 - scaling php in the enterprise
 
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript FrameworksBuilding Enterprise Grade Front-End Applications with JavaScript Frameworks
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
 
Tiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startupTiki.vn - How we scale as a tech startup
Tiki.vn - How we scale as a tech startup
 
AOL - Ian Holsman - Hadoop World 2010
AOL - Ian Holsman - Hadoop World 2010AOL - Ian Holsman - Hadoop World 2010
AOL - Ian Holsman - Hadoop World 2010
 
SSIS Monitoring Deep Dive
SSIS Monitoring Deep DiveSSIS Monitoring Deep Dive
SSIS Monitoring Deep Dive
 
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane EcosystemDownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
 
Five Years of EC2 Distilled
Five Years of EC2 DistilledFive Years of EC2 Distilled
Five Years of EC2 Distilled
 
Integrating multiple CDNs at Etsy
Integrating multiple CDNs at EtsyIntegrating multiple CDNs at Etsy
Integrating multiple CDNs at Etsy
 
Real-world Experiences in Scala
Real-world Experiences in ScalaReal-world Experiences in Scala
Real-world Experiences in Scala
 
Continuous Delivery at Wix
Continuous Delivery at WixContinuous Delivery at Wix
Continuous Delivery at Wix
 
Redis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHPRedis Everywhere - Sunshine PHP
Redis Everywhere - Sunshine PHP
 
Solving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache CamelSolving Enterprise Integration with Apache Camel
Solving Enterprise Integration with Apache Camel
 
Serverless Go at BuzzBird
Serverless Go at BuzzBirdServerless Go at BuzzBird
Serverless Go at BuzzBird
 
Olivier_Tisserand_projects
Olivier_Tisserand_projectsOlivier_Tisserand_projects
Olivier_Tisserand_projects
 
New Server in an Hour #sqlsat121
New Server in an Hour #sqlsat121New Server in an Hour #sqlsat121
New Server in an Hour #sqlsat121
 
Why ruby and rails
Why ruby and railsWhy ruby and rails
Why ruby and rails
 

Similaire à Dibi Conference 2012

Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuningJohn McCaffrey
 
A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?
A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?
A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?DATAVERSITY
 
"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect WorkshopPatrick Chanezon
 
Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemYi-Ting Cheng
 
Pldc2012 monitoring-and-trending-with-mysql
Pldc2012 monitoring-and-trending-with-mysqlPldc2012 monitoring-and-trending-with-mysql
Pldc2012 monitoring-and-trending-with-mysqlradiocats
 
Finding and Using Big Data in your business
Finding and Using Big Data in your businessFinding and Using Big Data in your business
Finding and Using Big Data in your businessSimon Elliston Ball
 
Couchbase Connect 2016
Couchbase Connect 2016Couchbase Connect 2016
Couchbase Connect 2016Michael Kehoe
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudyJohn Adams
 
Design for Scale / Surge 2010
Design for Scale / Surge 2010Design for Scale / Surge 2010
Design for Scale / Surge 2010Christopher Brown
 
Webinar - DreamObjects/Ceph Case Study
Webinar - DreamObjects/Ceph Case StudyWebinar - DreamObjects/Ceph Case Study
Webinar - DreamObjects/Ceph Case StudyCeph Community
 
Machine Learning for Smarter Apps - Jacksonville Meetup
Machine Learning for Smarter Apps - Jacksonville MeetupMachine Learning for Smarter Apps - Jacksonville Meetup
Machine Learning for Smarter Apps - Jacksonville MeetupSri Ambati
 
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark EijsermansFrom vagrant to production - Mark Eijsermans
From vagrant to production - Mark EijsermansDevopsdays
 
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_SummaryHiram Fleitas León
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisionsTrent Hornibrook
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talksRuslan Meshenberg
 

Similaire à Dibi Conference 2012 (20)

Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 
Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuning
 
A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?
A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?
A Case Study of NoSQL Adoption: What Drove Wordnik Non-Relational?
 
"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop
 
Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails Ecosystem
 
Dev Ops without the Ops
Dev Ops without the OpsDev Ops without the Ops
Dev Ops without the Ops
 
Pldc2012 monitoring-and-trending-with-mysql
Pldc2012 monitoring-and-trending-with-mysqlPldc2012 monitoring-and-trending-with-mysql
Pldc2012 monitoring-and-trending-with-mysql
 
Finding and Using Big Data in your business
Finding and Using Big Data in your businessFinding and Using Big Data in your business
Finding and Using Big Data in your business
 
Couchbase Connect 2016
Couchbase Connect 2016Couchbase Connect 2016
Couchbase Connect 2016
 
John adams talk cloudy
John adams   talk cloudyJohn adams   talk cloudy
John adams talk cloudy
 
Into The Box 2020 Keynote Day 1
Into The Box 2020 Keynote Day 1Into The Box 2020 Keynote Day 1
Into The Box 2020 Keynote Day 1
 
Design for Scale / Surge 2010
Design for Scale / Surge 2010Design for Scale / Surge 2010
Design for Scale / Surge 2010
 
Webinar - DreamObjects/Ceph Case Study
Webinar - DreamObjects/Ceph Case StudyWebinar - DreamObjects/Ceph Case Study
Webinar - DreamObjects/Ceph Case Study
 
Machine Learning for Smarter Apps - Jacksonville Meetup
Machine Learning for Smarter Apps - Jacksonville MeetupMachine Learning for Smarter Apps - Jacksonville Meetup
Machine Learning for Smarter Apps - Jacksonville Meetup
 
DevOps Days Ohio
DevOps Days OhioDevOps Days Ohio
DevOps Days Ohio
 
From vagrant to production - Mark Eijsermans
From vagrant to production - Mark EijsermansFrom vagrant to production - Mark Eijsermans
From vagrant to production - Mark Eijsermans
 
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisions
 
Netflix oss season 2 episode 1 - meetup Lightning talks
Netflix oss   season 2 episode 1 - meetup Lightning talksNetflix oss   season 2 episode 1 - meetup Lightning talks
Netflix oss season 2 episode 1 - meetup Lightning talks
 
AWS re:invent 2013 recap
AWS re:invent 2013 recapAWS re:invent 2013 recap
AWS re:invent 2013 recap
 

Dernier

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
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
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Dernier (20)

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
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
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
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
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

Dibi Conference 2012

  • 1. Just Build It! Scott Rutherford, DIBI 2012
  • 3.
  • 5. • Axomic (OpenAsset) • Caron Software • Caron Records / Publishing • Yabb / Cominded • ThatsUseful (BuddyMap, Boovu, et al.) • RecommendBox • Njoyed • SlimTimer
  • 6. Market leading customer feedback & support solution 21 strong in San Francisco & Raleigh 90,000+ organizations have used us $2M+ raised over 2 funding rounds Tens of millions of registered users 182 people/sec see our product
  • 8. Happen’s To The Best • Facebook Beacon (Feature) • Google Wave (Product) • Twitter - Scaling (Technology) • Coke - New Coke! (Marketing)
  • 9. “we're not that dumb, and we're not that smart!” - Don Keough
  • 11. You Can’t Plan For Everything! Things are going to go wrong. It’s the way we react at these moments that defines to a great degree how successful we will be. Don’t spend time planning for every eventuality. Just be prepared to move quickly and decisively when situations arise. Don’t build failure in though!!!
  • 12.
  • 13. Just Build It!
  • 14. ActiveScaffold (AKA AjaxScaffold Plugin) One line of Code
  • 15. ActiveScaffold (AKA AjaxScaffold Plugin) One line of Code
  • 16. ActiveScaffold (AKA AjaxScaffold Plugin) One line of Code
  • 17. ActiveScaffold (AKA AjaxScaffold Plugin) One line of Code >100K Installs > 750K Visitors
  • 18.
  • 19.
  • 20.
  • 21. Version 1.0 • Rails 1.2.3 / HopToad / NewRelic / CloudFront • Engine Yard • Shared MySQL database • 2 slices (and staging) • Admin section based on ActiveScaffold • No billing ability until the end of 2008 (then using Freemium OSS)
  • 22.
  • 23. Building Fast • Created our own problems • Insufficient test coverage and no CI
  • 24. Building Fast • Created our own problems • Insufficient test coverage and no CI • deploy production:rollback • Watch those AJAX calls
  • 25. Building Fast • Created our own problems • Insufficient test coverage and no CI • deploy production:rollback • Watch those AJAX calls • Be careful when testing.....
  • 26. Building Fast • Created our own problems • Insufficient test coverage and no CI • deploy production:rollback • Watch those AJAX calls • Be careful when testing.....
  • 28. Stunning Timing April 2009 Raised $800k
  • 30. Features, Features, Features • Reporting / Administration Tools • Multiple Languages (now crowd sourced) • Search that worked (Sphinx) • Single Sign On • API • Billing (constant PITA)
  • 31. Growing.... • 15 - 20% month • 6 web boxes • 2 databases (master / slave) • Staging • Admin • Office!
  • 32.
  • 33. Problems • Shared database started to creak • Tables growing in size - queries not scaling • Overused MySQL - queue, stats • Not enough caching • Dark corners - data exports, email notifications • Still insufficient test coverage and no CI • Us...... (production deploy:rollback)
  • 35. Into The Cloud.... • Moved servers to SoftLayer • Passenger and Ruby Enterprise • Signed up 4 million new users in 2 hours • 6 slices expanded to 24 • Stability resumed.......
  • 36. Still Shaky • Redis / Resque for the queue • Redis for stats • More memcached • Make as many things background jobs as possible • Things are under control • Or so we thought.....
  • 37. Meltdown • 10 days of almost stability • Flew to SXSW • MySQL melted (still on 5.0) • Percona rescued us from the dreaded MYSQL AUTO INCREMENT BUG (Moved us to 5.1) • Finally have a scalable redundant system, right?
  • 38. DNS can fail? • Using ZoneEdit (free) • All nameservers went down, all hell broke loose • Contacted by DynECT over Twitter! • Gave us a free account to get going again. Moved to them • Stopped thinking about DNS!
  • 39. Retention / Metrics 91% :( 10 months
  • 40. What now? • Ongoing monitoring - daily slice stored in Mongo • Surveys at exit • Addition of HelpDesk & Knowledge Base • Integrations • API, Facebook, iOS
  • 42. And back to Earth with a bump • Softlayer had a few major outages on their cloud infrastructure • Slices are still shared resources • You can’t get someone to just reboot the box • Lesson: cloud is great to scale with, not so good for stability
  • 43. So where are we now? • 20 systems in production (2 cloud instances) • Web - 6x dual cpu/quad core 12G RAM nginx/passenger, memcache • Resque - 3x single cpu/quad core 8gb RAM • Redis - Dual CPU/quad core 12g RAM • Mongo - 2x dual cpu/hex core 48G RAM 12x 15k RPM SAS drives RAID10 • MySQL - 2x dual cpu/hex core 72G RAM 24x 15k RPM SAS drives RAID10 • 97% month / month retention
  • 44. What have we learned?
  • 45. What have we learned? if anything.....
  • 46. Performance Realization > 200ms stuffed
  • 47.
  • 48. Gems
  • 50.
  • 51.
  • 52. Mouth / UGC Styles
  • 54. Databases • Redis - Queue, Stats / Admin • Mongo - Stats / Mouth, PageViews, Financials, Retention • MySQL - Main data store • Sphinx - Search • Memcached - Caching
  • 55. Libraries • jQuery • Backbone • D3 • SVG • MooTools Server • SASS • Compass
  • 56. Software • DSpam • Chef • Ganglia • Nagios • Capistrano • Passenger • Nginx / HAProxy
  • 57. External Services • Mailgun • Akamai • Embedly • Akismet • Pusher App • Dynect • Airbrake • SoftLayer • S3 • GitHub
  • 59. K.I.S.S 200 moving parts to change a lightbulb.....
  • 63. Listen, no really... "If I had asked people what they wanted, they would have said faster horses." Attributed to Henry Ford
  • 64. Our Creations • Resque Sliders - https://github.com/ kmullin/resque-sliders • Serve - http://get-serve.com/ • Mouth - https://github.com/cypriss/ mouth • UGC Styles - https://github.com/ joshuarudd/ugc-styles • ActiveScaffold - https://github.com/ activescaffold/active_scaffold
  • 65. Just Build It! The best time to start is NOW!!
  • 66. Scott Rutherford @scottrutherford scott@uservoice.com

Notes de l'éditeur

  1. Great talk by Ted Roden, really glad I didn’t use the focus slide. I looked at exactly the same picture as he used, the dangers of going last! \n\nJetlag has seriously kicked in so if I just fall asleep standing here can someone throw one of those mics at me\n
  2. How many people are involved in startups / open source projects / code projects or have something in mind or gestating in their heads.\n
  3. music degree\nunfinished\ndistracted by dj’ing and dance music\nwoke up one day (a bit of a theme apparently) and decided to do a physics degree which led to the amazing experience of doing a PhD\n
  4. CERN, situated half in Geneva / France. 27km underground tunnel containing the world largest machine the LHC. The purpose of which is to investigate the GUT and the elementary particles of the universe. It also happens to be where Tim Berners Lee created the web.\n\nBecame a little obsessed with programming and computers\n
  5. That led to starting a software company called Axomic, which surprisingly was pretty successful. But lesson 1, try to pick a big market... Architectural image management is not a big pond\n\nFollowed by trying to start or at least build several other things. \n
  6. Those lead up to my current company and role which is as COO and co-founder of UserVoice.\n
  7. The observant amongst you, will of noticed that this was the original title of this talk, not a startup conference so I tried to make it more of a mix \n
  8. Perhaps over embraced in the US, not embraced enough elsewhere. \n
  9. \n
  10. \n
  11. \n
  12. November 1940, Tacoma Narrows Bridge, state of Washington, route 16. indexes, massive loops\n
  13. Try to be a bit more positive. Two elements to it, one being the just do it concept. If you have an idea, can get involved in open source, do so you never know where it will take you. Secondly, sometimes it seems like there is a mountain of stuff you need to know to do something might be true, but to be honest you can learn everything you need to know on the way, so. Along those lines, this is some of the story of UserVoice.\n
  14. It starts in 2006, been playing around with Rails. \n\nFirst experience of the power of creating a piece of OSS. Rails had scaffolding but it wasn’t production ready, I had grown tired of producing the same code over and over when building Perl administration systems for various ISP’s and other businesses. DHH was highly critical of high level components so I knew these wouldn’t appear in Rails!!! Found rrwhite generator. But it produced a lot of code, I wanted something simpler so I wrote a blog post proposing \n\nTo produce\n
  15. I was playing with the concept when skype went and it was Richard White, we decided to work on it together.\n\nCode got released, started to become quite popular. Even started to earn money off it.\n
  16. More people became involved and the project became ActiveScaffold, I started to take a less active role in the project as I was working on other startups. Specifically at the start of 2008 on a company called Njoyed. \n
  17. The project is still going though, to date\n
  18. 2008, out trying to figure out what to do with Njoyed, was raising viable? did I even care? who did I need to know? What the hell am I doing? \n
  19. This may sound daft but I found myself asking what I would do if I won the lottery in the UK, I realized would move to SF so why wait. So that’s that then, not leaving. But how to stay. Lunch with Richard. He had a basic beta version of UserVoice up and running, which he had built with Lance (the 3rd guy in ActiveScaffold), however Lance had decided that startup life wasn’t for him and left to start a family with his wife in Walla Walla just outside Washington.\n\nSo that was that, Richard asked if I wanted to join him at UserVoice!With pretty much no thought I said yes, clearly serendipity!\n
  20. rent paid by slimtimer, unpaid, using savings to fly back and forth to avoid visa issues, not a lot of sleep. \n
  21. Very much MVP, No real backup, admin in the main app, marketing site in the main app, memcached and basic page caching\n\nRevenue is part of product, we wanted to have billing it just wasn’t built and no saas services available. Previous experience with PayPal had put me off for life. Freemium built by Lance.\n
  22. \n
  23. speak softly and with palatable words, you never know when you might have to eat them\n
  24. speak softly and with palatable words, you never know when you might have to eat them\n
  25. speak softly and with palatable words, you never know when you might have to eat them\n
  26. Money becoming an issue, need to raise. We were making money but not enough to matter.\n
  27. A lot of ‘no’, which actually usually consists of this is very interesting, stay in touch and keep us informed. took a few meetings to realize that!!\n\n2 months on the road, 3G usb sticks in the back of cars, deploying running down the platform, in meetings hoping to have it fixed before the demo. \n
  28. Eventually met Steve Anderson from Baseline who just said yes, 15 mins. Then Dave McClure did the same and we could hire some other people and get some sleep (well, that was the plan)\n
  29. May 2009 moved to SF\n\nOffice in the front room, now sharing a flat rather than a room pretty liberating!\n
  30. \n
  31. \n
  32. 24th September 2009, 18 months after launch..... Feeling fairly in control, some might say even a little smug. Things were going well, growing quickly, systems seemed stable, even had time to add Nagios and Munin to monitor things, created an sms system for alerts to provide some pre-emptive warnings, not just Pingdom for you’re down. Unfortunately turns out that wasn’t enough protection. Protection from what, you might ask, well.....\n
  33. \n
  34. 4am Monday morning in February 2010. Put our tab on every page with no warning........ Agreed to a time the next week to try again. StudioVZ Germany’s largest social network. 400 million pages view / day. \n
  35. 4am Monday morning, 1st March 2010, Softlayer, only cloud ISP at the time with low latency between hosted boxes and the cloud slices, no databases in the cloud, freaks people out with privacy issues.\n
  36. \n
  37. In short words the problem is in case of insert into table with auto-increment column the special AUTO_INC table level lock is obtained, instead of usual row-level locks. With many concurrent inserted threads this causes serious scalability problems, and in our consulting practice we had a lot of customers who was affected by InnoDB auto-inc. For several of them we even advised to replace auto-inc column by that or another solution.\n
  38. Continuation of moving anything we could to external services\n
  39. \n
  40. \n
  41. Deleted account, dark corner, forgot to put that on the queue, no one really deleted!!!!\n
  42. Returned to dedicated boxes. At the mercy of too many influences and still quite pricey for the power. But if you don’t have a sys admin as we are now in the somewhat luxurious position of having, it is outsourcing something that is not your core business\n
  43. The major events that caused us to rethink where we were at, there were of course others. In fact SXSW 2011, the site fell over as soon as we got on the plane. Not sure what it is about SXSW but its a drama magnet!!\n* We run memcache on the same machines that run rails, this cut down on the number of machines we needed.\n* We have 2 staging environments, enabling our developers to quickly work/test on 2 different branches simultaneously\n* Busiest peak time is ~250/requests per sec.\n* We use chef for 100% of config management across all machines, and our chef-server is internally hosted.\n* We use logstash/graylog2/kibana for log analysis and log searching. while this can be vastly improved, we still use it\n* We use ganglia for system metrics.\n* We use nagios for system monitoring.\nHave CI and a lot of tests\n
  44. \n
  45. \n
  46. \n
  47. Don’t try to reinvent the wheel. True for companies and software projects, become an expert in your domain and trust in others to do the same. If it proves that further down the line this decision was wrong change things then. Lack of focus is the downfall on many things!!!\n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. You have to focus on what you do / the purpose of the solution. Its hard enough to get one thing right!!!\n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. may sound silly given the number of systems we have. but each is actually a very simple solution to its own problem. complexity was trying to make things do a job they shouldn’t be. unmaintainable, un-expandable and fragile\n
  60. \n
  61. Don’t fix problems you don’t have, wait for things to actually need fixing. You’ll never be able to figure out all the things that will go wrong anyway...... make sure you can rollback!!!!\n
  62. Quote from Darmesh Shah of HubSpot and I couldn’t agree more, I’ve been involved in stealth projects and they all failed to deliver. The faster you get something out the faster you will start to learn\n
  63. 37 signals, Rework, saying no is very important, but understanding the issues is vital, shameless plug for UserVoice.\n\nHe did build a faster horse (and didn’t say the quote). The key to good product is there, he had a vision that solved peoples problems in a way they didn’t perceive. Its important to listen to people’s feedback but implement it inside your vision, they may see 4 or 5 separate issues that you can solve with one change. \n\n
  64. \n
  65. Try to be a bit more positive. \n
  66. \n