SlideShare a Scribd company logo
1 of 75
Download to read offline
Scale with Rails
Real-life capacity and deployment planning for
small to large scale Rails applications
The Guys {Thanks}
David Young, Dean Allen, Jason Hoffman, Matt
Imbach, Michael Koziarski, Scott Barron, Chris
Morris, Luke Crawford, Justin French, Johan
Sörensen, Ben Myles, Marten Veldthuis, Bryan
Bell, Ryan Schwartz, Jan Isley, Florian Munz,
Filip Hajný, Daniel Crowell, Christopher Horrell,
Terrell Russell, Peter Watridge, Josh Roebuck
Today
• Please humor me => a 5 minute story with too
many slides about how I came to stand here in
front of you
• Somethings about the Ruby on Rails site
• An accounting what’s buzzing in my ears all the
time
• Some examples with numbers
• How to think about “scaling”
• To talk about where we’ve taken our
infrastructure
Who?
Internet beginnings for me
I liked collaboration
It started with Textpattern
The best CMS/blog thing written in PHP ever
We used basecamp
Ooooooh, it’s in Ruby? Reeeeeeeeeally.
So we thought let’s involve some
friends
• Dean Allen (Textpattern)
• Matt Mullenweg (Wordpress)
• Brad Choate (doing MT hosting + plugins)
• David Heinemeier Hansson (Instiki and “Rails”)
• Rickard of PunBB
• Allan => Textmate
I was a committer once
What did they get me into?
5/2003 9/2005
5/2004
“it” started
Books are important
Not going to pay in my house.
Send those books out.
Rails
rubyonrails.com
~3500-4500 TBs/month (~10-15Mbps)
But sometimes it’s gotten “bad”
• Ruby on Rails
• Turbogears
• Textmate
• All have videos (”screencasts”)
• They’ve been in the same paragraph on
Slashdot
• Then we’ve pushed 150-200 Mbps
• Open Source is free?
Some of Joyent’s
We combined last year to be the
“perfect” company.
OK, So what?
• We found ourselves needing an infrastructure
for “diverse” things
• But fundamentally we’re talking about web
stuff, mail stuff, database stuff, storing and
moving around files stuff
And why are we here?
• One indication: because I get, on average, 2
emails/day asking the same questions
• That’s just “me”
• Support system and “sales” gets them as well
Examples from last week
• I have yet to find any examples of websites that have heavy traffic and
stream media that run from a Ruby on Rails platform, can you suggest
any sites that will demonstrate that the ruby platform is stable and
reliable enough to use on a commercial level?
• We are concerned about the long-term viability of Ruby on Rails as a
development language/environment.
• How easily can a ruby site be converted to another language? (If for any
reason we were forced to abandon ruby at some point in the future or I
can’t find someone to work with our code?).
• My company has some concerns on whether or not Ruby on Rails is the
right platform to deploy on if we have a very large scale app.
I could go on for a while.
So what is?
• A “large scale” application?
• Do many of us really have one? I mean a BIG
ONE?
• What is an “intensive” application?
• What is an “enterprise” application?
But we’ve been doing “it” with
• Perl
• PHP
• Python
• Java
• Does the language really really matter to the
system’s folks?
Ah-ha!
• System’s Folks you say?
• What are these “system administrators” that you
speak of?
• Does the network really matter?
• You mean there’s “networking people”?
• You mean it takes more than just having my
designer(s) learns The Rails?
If I had a nickel for every time ...
• “We’re going to need to scale this up to Flickr-
sized proportions!”
• “This could go very very fast!”
• “The market is HUGE”
Reality Check
• “OK”, I say
• “Not a problem”, I say
• “I can do that”, I say
• “For what you’re asking, I’ll need $325,000
tomorrow to start, it’ll take $18,500 a month to
run and you can expect that to go up along with
your growth.”
• “It’s a good rule of thumb to try and keep it
about 10% of your revenue once you’re going
because people ended being the most
expensive”
Oh. But we don’t have that kind
of money. And the app is free to
start.
OK.
What a minute!
• Why are you going on and on about this not
worry about scaling til you need to scale stuff?
• I can read this same thing on what’s their face’s
weblog.
• It’s not what I’m asking about!
• I need to know if I can “scale” with ruby!
• We’re not a start-up, why are you talking about
this from a “start-up’s” perspective?!
• I need a ...
A What?
• A framework for thinking about the entire
system?
• You mean it’s more than just the language?
• It’s more than about a readily available IDE?
• You mean one’s “development” framework is
just one small part?
• My system’s guys can scale anything.
Yes It Is More
And oh yes ... you should worry
still worry about scaling
Because what does “scaling” actually
mean?
• For a little software application company?
• Can you do the Start-up => Mid-sized, “small
caps” company transition without going out of
business?
• In a big company?
• Can you do what you gotta do without having
your program cut?
• Will your app run on a phone? Scale down.
Let’s talk some details
First, let’s talk about limiting
factors
The slowest part ?
• The fast ethernet or gigabit network port
(assuming there’s more than one drive)
• Transactions of something/second
• 1 Gbps = 125 MB/sec (100 Mbps = 12.5 MB/sec)
• The question is can your OS and our CPUs
push it?
• And let’s say you can, just how much is a Gbps
in some kind of other thing?
We used to use FreeBSD
Moral of the story? Even restricted to a single processor with a
single core, Solaris Nevada Build 31 can push 60% of a gigabit
connection. FreeBSD can’t.
OK, Solaris Good.
What’s a 100 Mbps in normal web traffic?
• Textdrive.com => 122 KB and has 20 objects
(~125KB for an uncached page view).
• 125KB page => 100-1000 unique visitors per
second
• 20 objects per page, that is 2000 requests per
second that could pump out of that system.
• Maximum.
• What is the ability to do 2000 requests/second
then?
• ((2000 requests/sec)*(20 requests per page)) *
0.125MB per page = 12.5 MB/sec (100Mbps
constant).
• 86400 seconds/day on 100Mbps => 8,640,000
uniques in a day with 172,800,00 hits.
• $8000/month
• Give or take a couple of grand depending
How much does just a 100 Mbps
commit cost?
Can you do 2000 requests/second?
• Sure an Apache, Lighttpd or Litespeed can do
1000-15,000 static or proxy requests/second
How do you do 2000 requests/
second?
• Alistapart.com bursts to that with Zeldman’s
“Web 3.0” for over an hour
• 10 Lighttpds => 200 proxy requests/second
each
• 1 Lighttpd => 40 request/sec x 5 Rails-FCGI
each
• We cached everything but writing to MySQL for
comments and that kept it on a 3.2 Ghz P4 with
4GB of RAM
The Shared Hosting
• Is this odd heterogenous largely ruby “application”
• Users received 8,641,866 emails, they sent 5,860,769 emails and had
14,984,680 pieces of spam blocked. Mail through the system averages
300 emails/minute with bursts up to 60,000 emails/minute.
• Websites cumulatively did ~400,000,000 page views.
What is it running now?
• There’s 22 TBs of strongspace
• Fiber-attached EMC storage
• Migrated to Solaris “11”
• One big ZFS pool with LUNs
• Migrated down to one “hot” server: Dual 3.0
Ghz Xeon with 8GB of RAM
• Apache, Lighttpd, static FCGI
Fsck You
{if you think ZFS isn’t production}
Is it a web app or what?
~20 Mbps constant
“Logical” servers for the hosted
connector
1) Jumpstart/Boot & Administrative servers (x2 per setup)
2) DHCP/LDAP for server identification/authentication and control (x2)
3) DNS: DNSCache for outside resolution (DNSCache as resolver) and a private DNS system
4) DNS MySQL (x2, master/slave, innodb tables)
5) SPAM filtering servers (running DSPAM -> files to NFS store and tracking to postgresql) (x4)
6) SPAM database setup (running postgresql) (x2)
7) SPAM NFS store (x2 heads clustered)
8) SMTP gateway out (x2)
9) SMTP gateway in (x4 -> delivery to Maildir over NFS)
10) Mail NFS store (x2 heads cluster) *main user file store
11) IMAP proxy servers (x2)
12) IMAP servers (x6)
13) User LDAP servers (x2 with hitting postgresql DB backend)
14) User LDAP-postgresql db (x2)
15) User postgresql DB servers (x4)
16) User Web/Application servers (running with kernel SSL accelerators) (x6)
17) User File Storage (NFS dual cluster heads) (x2)
18) Joyent Organization Provisioning server
So how do you scale that “web”
application?
You know
That beautiful Connector
application where only 2 of the
18 “things” is “rails”.
So most scale is how you scale
those “common” services
And why just 3.0 Ghz?
CPUs are largely idle & RAM RAM RAM
08:23:01 PM CPU %user %nice %sys %iowait %irq %soft %idle intr/s
08:23:01 PM all 2.64 0.00 0.36 2.81 0.02 0.14 94.02 1239.49
08:23:01 PM 0 6.86 0.00 1.18 4.72 0.10 0.69 86.45 68.94
08:23:01 PM 1 2.63 0.00 0.34 1.95 0.01 0.11 95.01 192.97
08:23:01 PM 2 2.78 0.00 0.43 7.41 0.02 0.11 89.29 197.21
08:23:01 PM 3 2.16 0.00 0.29 4.12 0.01 0.07 93.39 178.35
08:23:01 PM 4 1.67 0.00 0.17 1.09 0.01 0.04 97.04 117.29
08:23:01 PM 5 1.67 0.00 0.17 1.11 0.01 0.04 97.05 161.00
08:23:01 PM 6 1.67 0.00 0.16 1.04 0.01 0.04 97.13 161.86
08:23:01 PM 7 1.68 0.00 0.16 1.08 0.01 0.04 97.07 161.86
• “Busy” mysql database server
• ~240GB of data with ~150,000 users
• Swapping just a little little bit, so ...
So what kind of CPUs have we
moved into?
MB/CMP0/P0 0 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P1 1 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P2 2 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P3 3 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P4 4 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P5 5 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P6 6 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P7 7 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P8 8 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P9 9 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P10 10 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P11 11 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P12 12 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P13 13 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P14 14 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P15 15 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P16 16 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P17 17 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P18 18 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P19 19 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P20 20 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P21 21 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P22 22 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P23 23 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P24 24 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P25 25 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P26 26 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P27 27 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P28 28 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P29 29 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P30 30 1000 MHz SUNW,UltraSPARC-T1
MB/CMP0/P31 31 1000 MHz SUNW,UltraSPARC-T1
Sun T1000’s Ultrasparc T1
32 logical 1.0 Ghz
Combined with many software instances
Zones
Best match between actual CPU and RAM
usage
It’s not really about high frequencies
If you buy intel, buy weak ones,
spend the money on RAM
Throughput!
Not simple
Back to simple
Console server
One kind of switch
One kind of server
One kind of storage
One kind of interconnect
One kind of power plug
One kind of power strip
Well. We do have some load balancers
still.
There’s actually lots of different kinds
of plugs
What the “default” 5-15R gets you
Umm ... ok so there’s a real disconnect between
server power and datacenter “design”
I/O
Storage
PublicRemote Interconnects
Jumbo Frames
Own Switches
4 “old” San Diego Racks
Per Rack:
39 processors
39 logical CPUs
52 GB RAM
5280 watts
Total:
156 logical CPUs
208 GB RAM
21,120 watts
Yes that is what they look like
Become a new node
1152 logical 1Ghz CPUs
576 GB RAM
6,480 watts
31 amps @ 208V
2 x 20amp @ 208V L6-20R
2 x 24 plug 20amp/208V
----------------------------------
12 Enclosures
36 controllers
180 drives
90 TBs raw storage
77 TBs clustered storage
29.4 amps @ 208V
2 x 20amp @ 208V L6-20R
2 x 24 plug 20amp/208V
Per Rack:
39 processors
39 logical CPUs
52 GB RAM
5280 watts
Total:
156 logical CPUs
208 GB RAM
21,120 watts
Server + Storage
RAID5
7 TBs
RAID5
7 TBs
RAID5
7 TBs
RAIDZ ZFS Pool
iSCSI
This is going to be open for you
to use
DIY: How do you start?
20amp 208V AC power
L6-20R
Street price: ~$50,000 co-lo’ed
Why DIY? Or at least a visit?
Outsourcing!You can whois yourself?
Some final things
• Keep it simple even if you’re starting out big
• Keep it simple even if you’re starting out small
• Our “stacks” are currently:
• Solaris, Mongrel, Apache 2.2 event, kssl
• Solaris, FCGI, Apache 2.2 event, kssl
• Solaris, FCGI, Lighttpd, kssl
• Solaris, FCGI, Lighttpd, Big-IP
• Zones, zones, zones
Joyent circa 2006 (Scale with Rails)

More Related Content

What's hot

Run containers on bare metal already!
Run containers on bare metal already!Run containers on bare metal already!
Run containers on bare metal already!bcantrill
 
Why it’s (past) time to run containers on bare metal
Why it’s (past) time to run containers on bare metalWhy it’s (past) time to run containers on bare metal
Why it’s (past) time to run containers on bare metalbcantrill
 
Down Memory Lane: Two Decades with the Slab Allocator
Down Memory Lane: Two Decades with the Slab AllocatorDown Memory Lane: Two Decades with the Slab Allocator
Down Memory Lane: Two Decades with the Slab Allocatorbcantrill
 
The Container Revolution: Reflections after the first decade
The Container Revolution: Reflections after the first decadeThe Container Revolution: Reflections after the first decade
The Container Revolution: Reflections after the first decadebcantrill
 
Papers We Love: Jails and Zones
Papers We Love: Jails and ZonesPapers We Love: Jails and Zones
Papers We Love: Jails and Zonesbcantrill
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challengesbcantrill
 
server to cloud: converting a legacy platform to an open source paas
server to cloud:  converting a legacy platform to an open source paasserver to cloud:  converting a legacy platform to an open source paas
server to cloud: converting a legacy platform to an open source paasTodd Fritz
 
node.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontiernode.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontierbcantrill
 
The Peril and Promise of Early Adoption: Arriving 10 Years Early to Containers
The Peril and Promise of Early Adoption: Arriving 10 Years Early to ContainersThe Peril and Promise of Early Adoption: Arriving 10 Years Early to Containers
The Peril and Promise of Early Adoption: Arriving 10 Years Early to Containersbcantrill
 
node.js in production: Reflections on three years of riding the unicorn
node.js in production: Reflections on three years of riding the unicornnode.js in production: Reflections on three years of riding the unicorn
node.js in production: Reflections on three years of riding the unicornbcantrill
 
Docker's Killer Feature: The Remote API
Docker's Killer Feature: The Remote APIDocker's Killer Feature: The Remote API
Docker's Killer Feature: The Remote APIbcantrill
 
Docker-N-Beyond
Docker-N-BeyondDocker-N-Beyond
Docker-N-Beyondsantosh007
 
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsThe Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsJonas Bonér
 
Portrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English VersionPortrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English VersionPatrick Chanezon
 
Cloud Foundry Japan Community Meetup
Cloud Foundry Japan Community MeetupCloud Foundry Japan Community Meetup
Cloud Foundry Japan Community MeetupPatrick Chanezon
 
How Events Are Reshaping Modern Systems
How Events Are Reshaping Modern SystemsHow Events Are Reshaping Modern Systems
How Events Are Reshaping Modern SystemsJonas Bonér
 
Tiger oracle
Tiger oracleTiger oracle
Tiger oracled0nn9n
 
InteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud Computing
InteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud ComputingInteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud Computing
InteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud ComputingMark Hinkle
 
OSCON 2014 - Crash Course in Open Source Cloud Computing
OSCON 2014 -  Crash Course in Open Source Cloud ComputingOSCON 2014 -  Crash Course in Open Source Cloud Computing
OSCON 2014 - Crash Course in Open Source Cloud ComputingMark Hinkle
 

What's hot (20)

Run containers on bare metal already!
Run containers on bare metal already!Run containers on bare metal already!
Run containers on bare metal already!
 
Why it’s (past) time to run containers on bare metal
Why it’s (past) time to run containers on bare metalWhy it’s (past) time to run containers on bare metal
Why it’s (past) time to run containers on bare metal
 
Down Memory Lane: Two Decades with the Slab Allocator
Down Memory Lane: Two Decades with the Slab AllocatorDown Memory Lane: Two Decades with the Slab Allocator
Down Memory Lane: Two Decades with the Slab Allocator
 
The Container Revolution: Reflections after the first decade
The Container Revolution: Reflections after the first decadeThe Container Revolution: Reflections after the first decade
The Container Revolution: Reflections after the first decade
 
Papers We Love: Jails and Zones
Papers We Love: Jails and ZonesPapers We Love: Jails and Zones
Papers We Love: Jails and Zones
 
Dynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open ChallengesDynamic Languages in Production: Progress and Open Challenges
Dynamic Languages in Production: Progress and Open Challenges
 
server to cloud: converting a legacy platform to an open source paas
server to cloud:  converting a legacy platform to an open source paasserver to cloud:  converting a legacy platform to an open source paas
server to cloud: converting a legacy platform to an open source paas
 
node.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontiernode.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontier
 
The Peril and Promise of Early Adoption: Arriving 10 Years Early to Containers
The Peril and Promise of Early Adoption: Arriving 10 Years Early to ContainersThe Peril and Promise of Early Adoption: Arriving 10 Years Early to Containers
The Peril and Promise of Early Adoption: Arriving 10 Years Early to Containers
 
node.js in production: Reflections on three years of riding the unicorn
node.js in production: Reflections on three years of riding the unicornnode.js in production: Reflections on three years of riding the unicorn
node.js in production: Reflections on three years of riding the unicorn
 
Docker's Killer Feature: The Remote API
Docker's Killer Feature: The Remote APIDocker's Killer Feature: The Remote API
Docker's Killer Feature: The Remote API
 
Docker-N-Beyond
Docker-N-BeyondDocker-N-Beyond
Docker-N-Beyond
 
Core Principles Of Ci
Core Principles Of CiCore Principles Of Ci
Core Principles Of Ci
 
The Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native ApplicationsThe Reactive Principles: Design Principles For Cloud Native Applications
The Reactive Principles: Design Principles For Cloud Native Applications
 
Portrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English VersionPortrait of the Developer As "The Artist" - English Version
Portrait of the Developer As "The Artist" - English Version
 
Cloud Foundry Japan Community Meetup
Cloud Foundry Japan Community MeetupCloud Foundry Japan Community Meetup
Cloud Foundry Japan Community Meetup
 
How Events Are Reshaping Modern Systems
How Events Are Reshaping Modern SystemsHow Events Are Reshaping Modern Systems
How Events Are Reshaping Modern Systems
 
Tiger oracle
Tiger oracleTiger oracle
Tiger oracle
 
InteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud Computing
InteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud ComputingInteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud Computing
InteropNY/CloudConnect 2014 - Quick Crash Course in Open Source Cloud Computing
 
OSCON 2014 - Crash Course in Open Source Cloud Computing
OSCON 2014 -  Crash Course in Open Source Cloud ComputingOSCON 2014 -  Crash Course in Open Source Cloud Computing
OSCON 2014 - Crash Course in Open Source Cloud Computing
 

Viewers also liked

A crime against common sense
A crime against common senseA crime against common sense
A crime against common sensebcantrill
 
Corporate Open Source Anti-patterns
Corporate Open Source Anti-patternsCorporate Open Source Anti-patterns
Corporate Open Source Anti-patternsbcantrill
 
The State of Cloud 2016: The whirlwind of creative destruction
The State of Cloud 2016: The whirlwind of creative destructionThe State of Cloud 2016: The whirlwind of creative destruction
The State of Cloud 2016: The whirlwind of creative destructionbcantrill
 
Debugging (Docker) containers in production
Debugging (Docker) containers in productionDebugging (Docker) containers in production
Debugging (Docker) containers in productionbcantrill
 
Cgroups, namespaces and beyond: what are containers made from?
Cgroups, namespaces and beyond: what are containers made from?Cgroups, namespaces and beyond: what are containers made from?
Cgroups, namespaces and beyond: what are containers made from?Docker, Inc.
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
Docker introduction
Docker introductionDocker introduction
Docker introductiondotCloud
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker, Inc.
 

Viewers also liked (9)

A crime against common sense
A crime against common senseA crime against common sense
A crime against common sense
 
Corporate Open Source Anti-patterns
Corporate Open Source Anti-patternsCorporate Open Source Anti-patterns
Corporate Open Source Anti-patterns
 
The State of Cloud 2016: The whirlwind of creative destruction
The State of Cloud 2016: The whirlwind of creative destructionThe State of Cloud 2016: The whirlwind of creative destruction
The State of Cloud 2016: The whirlwind of creative destruction
 
Debugging (Docker) containers in production
Debugging (Docker) containers in productionDebugging (Docker) containers in production
Debugging (Docker) containers in production
 
Cgroups, namespaces and beyond: what are containers made from?
Cgroups, namespaces and beyond: what are containers made from?Cgroups, namespaces and beyond: what are containers made from?
Cgroups, namespaces and beyond: what are containers made from?
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Docker 101: Introduction to Docker
Docker 101: Introduction to DockerDocker 101: Introduction to Docker
Docker 101: Introduction to Docker
 

Similar to Joyent circa 2006 (Scale with Rails)

Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuningJohn McCaffrey
 
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...Lucidworks
 
Rich, Real-time Mobile User Experiences @Devoxx UK
Rich, Real-time Mobile User Experiences @Devoxx UKRich, Real-time Mobile User Experiences @Devoxx UK
Rich, Real-time Mobile User Experiences @Devoxx UKAndy Piper
 
BD Conf: Visit speed - Page speed is only the beginning
BD Conf: Visit speed - Page speed is only the beginningBD Conf: Visit speed - Page speed is only the beginning
BD Conf: Visit speed - Page speed is only the beginningPeter McLachlan
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Newlink
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Newlink
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640LLC NewLink
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Newlink
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Newlink
 
From 100s to 100s of Millions
From 100s to 100s of MillionsFrom 100s to 100s of Millions
From 100s to 100s of MillionsErik Onnen
 
Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)Uche Ogbuji
 
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)Brian Brazil
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?CQD
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesExtreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesMaximiliano Firtman
 
How to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - EnglishHow to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - EnglishKoombea
 
Mongodb, Node.js and You: PART I
Mongodb, Node.js and You: PART IMongodb, Node.js and You: PART I
Mongodb, Node.js and You: PART IMitch Pirtle
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building ProductsHayden Bleasel
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 

Similar to Joyent circa 2006 (Scale with Rails) (20)

Cvcc performance tuning
Cvcc performance tuningCvcc performance tuning
Cvcc performance tuning
 
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
PlayStation and Lucene - Indexing 1M documents per second: Presented by Alexa...
 
Rich, Real-time Mobile User Experiences @Devoxx UK
Rich, Real-time Mobile User Experiences @Devoxx UKRich, Real-time Mobile User Experiences @Devoxx UK
Rich, Real-time Mobile User Experiences @Devoxx UK
 
BD Conf: Visit speed - Page speed is only the beginning
BD Conf: Visit speed - Page speed is only the beginningBD Conf: Visit speed - Page speed is only the beginning
BD Conf: Visit speed - Page speed is only the beginning
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640
 
Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640Xen and-the-art-of-rails-deployment2640
Xen and-the-art-of-rails-deployment2640
 
From 100s to 100s of Millions
From 100s to 100s of MillionsFrom 100s to 100s of Millions
From 100s to 100s of Millions
 
Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)Linked Data: The Real Web 2.0 (from 2008)
Linked Data: The Real Web 2.0 (from 2008)
 
JSON all the way
JSON all the wayJSON all the way
JSON all the way
 
Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)Systems Monitoring with Prometheus (Devops Ireland April 2015)
Systems Monitoring with Prometheus (Devops Ireland April 2015)
 
What ya gonna do?
What ya gonna do?What ya gonna do?
What ya gonna do?
 
Extreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile DevicesExtreme Web Performance for Mobile Devices
Extreme Web Performance for Mobile Devices
 
How to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - EnglishHow to be Successful with Responsive Sites (Koombea & NGINX) - English
How to be Successful with Responsive Sites (Koombea & NGINX) - English
 
Mongodb, Node.js and You: PART I
Mongodb, Node.js and You: PART IMongodb, Node.js and You: PART I
Mongodb, Node.js and You: PART I
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 
Tech Thursdays: Building Products
Tech Thursdays: Building ProductsTech Thursdays: Building Products
Tech Thursdays: Building Products
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 

More from bcantrill

Predicting the Present
Predicting the PresentPredicting the Present
Predicting the Presentbcantrill
 
Sharpening the Axe: The Primacy of Toolmaking
Sharpening the Axe: The Primacy of ToolmakingSharpening the Axe: The Primacy of Toolmaking
Sharpening the Axe: The Primacy of Toolmakingbcantrill
 
Coming of Age: Developing young technologists without robbing them of their y...
Coming of Age: Developing young technologists without robbing them of their y...Coming of Age: Developing young technologists without robbing them of their y...
Coming of Age: Developing young technologists without robbing them of their y...bcantrill
 
I have come to bury the BIOS, not to open it: The need for holistic systems
I have come to bury the BIOS, not to open it: The need for holistic systemsI have come to bury the BIOS, not to open it: The need for holistic systems
I have come to bury the BIOS, not to open it: The need for holistic systemsbcantrill
 
Towards Holistic Systems
Towards Holistic SystemsTowards Holistic Systems
Towards Holistic Systemsbcantrill
 
The Coming Firmware Revolution
The Coming Firmware RevolutionThe Coming Firmware Revolution
The Coming Firmware Revolutionbcantrill
 
Hardware/software Co-design: The Coming Golden Age
Hardware/software Co-design: The Coming Golden AgeHardware/software Co-design: The Coming Golden Age
Hardware/software Co-design: The Coming Golden Agebcantrill
 
Tockilator: Deducing Tock execution flows from Ibex Verilator traces
Tockilator: Deducing Tock execution flows from Ibex Verilator tracesTockilator: Deducing Tock execution flows from Ibex Verilator traces
Tockilator: Deducing Tock execution flows from Ibex Verilator tracesbcantrill
 
No Moore Left to Give: Enterprise Computing After Moore's Law
No Moore Left to Give: Enterprise Computing After Moore's LawNo Moore Left to Give: Enterprise Computing After Moore's Law
No Moore Left to Give: Enterprise Computing After Moore's Lawbcantrill
 
Andreessen's Corollary: Ethical Dilemmas in Software Engineering
Andreessen's Corollary: Ethical Dilemmas in Software EngineeringAndreessen's Corollary: Ethical Dilemmas in Software Engineering
Andreessen's Corollary: Ethical Dilemmas in Software Engineeringbcantrill
 
Visualizing Systems with Statemaps
Visualizing Systems with StatemapsVisualizing Systems with Statemaps
Visualizing Systems with Statemapsbcantrill
 
Platform values, Rust, and the implications for system software
Platform values, Rust, and the implications for system softwarePlatform values, Rust, and the implications for system software
Platform values, Rust, and the implications for system softwarebcantrill
 
Is it time to rewrite the operating system in Rust?
Is it time to rewrite the operating system in Rust?Is it time to rewrite the operating system in Rust?
Is it time to rewrite the operating system in Rust?bcantrill
 
dtrace.conf(16): DTrace state of the union
dtrace.conf(16): DTrace state of the uniondtrace.conf(16): DTrace state of the union
dtrace.conf(16): DTrace state of the unionbcantrill
 
The Hurricane's Butterfly: Debugging pathologically performing systems
The Hurricane's Butterfly: Debugging pathologically performing systemsThe Hurricane's Butterfly: Debugging pathologically performing systems
The Hurricane's Butterfly: Debugging pathologically performing systemsbcantrill
 
Papers We Love: ARC after dark
Papers We Love: ARC after darkPapers We Love: ARC after dark
Papers We Love: ARC after darkbcantrill
 
Principles of Technology Leadership
Principles of Technology LeadershipPrinciples of Technology Leadership
Principles of Technology Leadershipbcantrill
 

More from bcantrill (17)

Predicting the Present
Predicting the PresentPredicting the Present
Predicting the Present
 
Sharpening the Axe: The Primacy of Toolmaking
Sharpening the Axe: The Primacy of ToolmakingSharpening the Axe: The Primacy of Toolmaking
Sharpening the Axe: The Primacy of Toolmaking
 
Coming of Age: Developing young technologists without robbing them of their y...
Coming of Age: Developing young technologists without robbing them of their y...Coming of Age: Developing young technologists without robbing them of their y...
Coming of Age: Developing young technologists without robbing them of their y...
 
I have come to bury the BIOS, not to open it: The need for holistic systems
I have come to bury the BIOS, not to open it: The need for holistic systemsI have come to bury the BIOS, not to open it: The need for holistic systems
I have come to bury the BIOS, not to open it: The need for holistic systems
 
Towards Holistic Systems
Towards Holistic SystemsTowards Holistic Systems
Towards Holistic Systems
 
The Coming Firmware Revolution
The Coming Firmware RevolutionThe Coming Firmware Revolution
The Coming Firmware Revolution
 
Hardware/software Co-design: The Coming Golden Age
Hardware/software Co-design: The Coming Golden AgeHardware/software Co-design: The Coming Golden Age
Hardware/software Co-design: The Coming Golden Age
 
Tockilator: Deducing Tock execution flows from Ibex Verilator traces
Tockilator: Deducing Tock execution flows from Ibex Verilator tracesTockilator: Deducing Tock execution flows from Ibex Verilator traces
Tockilator: Deducing Tock execution flows from Ibex Verilator traces
 
No Moore Left to Give: Enterprise Computing After Moore's Law
No Moore Left to Give: Enterprise Computing After Moore's LawNo Moore Left to Give: Enterprise Computing After Moore's Law
No Moore Left to Give: Enterprise Computing After Moore's Law
 
Andreessen's Corollary: Ethical Dilemmas in Software Engineering
Andreessen's Corollary: Ethical Dilemmas in Software EngineeringAndreessen's Corollary: Ethical Dilemmas in Software Engineering
Andreessen's Corollary: Ethical Dilemmas in Software Engineering
 
Visualizing Systems with Statemaps
Visualizing Systems with StatemapsVisualizing Systems with Statemaps
Visualizing Systems with Statemaps
 
Platform values, Rust, and the implications for system software
Platform values, Rust, and the implications for system softwarePlatform values, Rust, and the implications for system software
Platform values, Rust, and the implications for system software
 
Is it time to rewrite the operating system in Rust?
Is it time to rewrite the operating system in Rust?Is it time to rewrite the operating system in Rust?
Is it time to rewrite the operating system in Rust?
 
dtrace.conf(16): DTrace state of the union
dtrace.conf(16): DTrace state of the uniondtrace.conf(16): DTrace state of the union
dtrace.conf(16): DTrace state of the union
 
The Hurricane's Butterfly: Debugging pathologically performing systems
The Hurricane's Butterfly: Debugging pathologically performing systemsThe Hurricane's Butterfly: Debugging pathologically performing systems
The Hurricane's Butterfly: Debugging pathologically performing systems
 
Papers We Love: ARC after dark
Papers We Love: ARC after darkPapers We Love: ARC after dark
Papers We Love: ARC after dark
 
Principles of Technology Leadership
Principles of Technology LeadershipPrinciples of Technology Leadership
Principles of Technology Leadership
 

Recently uploaded

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Joyent circa 2006 (Scale with Rails)

  • 1. Scale with Rails Real-life capacity and deployment planning for small to large scale Rails applications
  • 2. The Guys {Thanks} David Young, Dean Allen, Jason Hoffman, Matt Imbach, Michael Koziarski, Scott Barron, Chris Morris, Luke Crawford, Justin French, Johan Sörensen, Ben Myles, Marten Veldthuis, Bryan Bell, Ryan Schwartz, Jan Isley, Florian Munz, Filip Hajný, Daniel Crowell, Christopher Horrell, Terrell Russell, Peter Watridge, Josh Roebuck
  • 3. Today • Please humor me => a 5 minute story with too many slides about how I came to stand here in front of you • Somethings about the Ruby on Rails site • An accounting what’s buzzing in my ears all the time • Some examples with numbers • How to think about “scaling” • To talk about where we’ve taken our infrastructure
  • 7. It started with Textpattern The best CMS/blog thing written in PHP ever
  • 8. We used basecamp Ooooooh, it’s in Ruby? Reeeeeeeeeally.
  • 9. So we thought let’s involve some friends • Dean Allen (Textpattern) • Matt Mullenweg (Wordpress) • Brad Choate (doing MT hosting + plugins) • David Heinemeier Hansson (Instiki and “Rails”) • Rickard of PunBB • Allan => Textmate
  • 10. I was a committer once
  • 11. What did they get me into? 5/2003 9/2005 5/2004 “it” started
  • 12.
  • 13.
  • 14.
  • 15.
  • 16. Books are important Not going to pay in my house. Send those books out.
  • 17. Rails
  • 19. But sometimes it’s gotten “bad” • Ruby on Rails • Turbogears • Textmate • All have videos (”screencasts”) • They’ve been in the same paragraph on Slashdot • Then we’ve pushed 150-200 Mbps • Open Source is free?
  • 20. Some of Joyent’s We combined last year to be the “perfect” company.
  • 21. OK, So what? • We found ourselves needing an infrastructure for “diverse” things • But fundamentally we’re talking about web stuff, mail stuff, database stuff, storing and moving around files stuff
  • 22. And why are we here? • One indication: because I get, on average, 2 emails/day asking the same questions • That’s just “me” • Support system and “sales” gets them as well
  • 23. Examples from last week • I have yet to find any examples of websites that have heavy traffic and stream media that run from a Ruby on Rails platform, can you suggest any sites that will demonstrate that the ruby platform is stable and reliable enough to use on a commercial level? • We are concerned about the long-term viability of Ruby on Rails as a development language/environment. • How easily can a ruby site be converted to another language? (If for any reason we were forced to abandon ruby at some point in the future or I can’t find someone to work with our code?). • My company has some concerns on whether or not Ruby on Rails is the right platform to deploy on if we have a very large scale app. I could go on for a while.
  • 24. So what is? • A “large scale” application? • Do many of us really have one? I mean a BIG ONE? • What is an “intensive” application? • What is an “enterprise” application?
  • 25. But we’ve been doing “it” with • Perl • PHP • Python • Java • Does the language really really matter to the system’s folks?
  • 26. Ah-ha! • System’s Folks you say? • What are these “system administrators” that you speak of? • Does the network really matter? • You mean there’s “networking people”? • You mean it takes more than just having my designer(s) learns The Rails?
  • 27. If I had a nickel for every time ... • “We’re going to need to scale this up to Flickr- sized proportions!” • “This could go very very fast!” • “The market is HUGE”
  • 28. Reality Check • “OK”, I say • “Not a problem”, I say • “I can do that”, I say • “For what you’re asking, I’ll need $325,000 tomorrow to start, it’ll take $18,500 a month to run and you can expect that to go up along with your growth.” • “It’s a good rule of thumb to try and keep it about 10% of your revenue once you’re going because people ended being the most expensive”
  • 29. Oh. But we don’t have that kind of money. And the app is free to start.
  • 30. OK.
  • 31. What a minute! • Why are you going on and on about this not worry about scaling til you need to scale stuff? • I can read this same thing on what’s their face’s weblog. • It’s not what I’m asking about! • I need to know if I can “scale” with ruby! • We’re not a start-up, why are you talking about this from a “start-up’s” perspective?! • I need a ...
  • 32. A What? • A framework for thinking about the entire system? • You mean it’s more than just the language? • It’s more than about a readily available IDE? • You mean one’s “development” framework is just one small part? • My system’s guys can scale anything.
  • 33. Yes It Is More
  • 34. And oh yes ... you should worry still worry about scaling
  • 35. Because what does “scaling” actually mean? • For a little software application company? • Can you do the Start-up => Mid-sized, “small caps” company transition without going out of business? • In a big company? • Can you do what you gotta do without having your program cut? • Will your app run on a phone? Scale down.
  • 36. Let’s talk some details
  • 37. First, let’s talk about limiting factors
  • 38. The slowest part ? • The fast ethernet or gigabit network port (assuming there’s more than one drive) • Transactions of something/second
  • 39. • 1 Gbps = 125 MB/sec (100 Mbps = 12.5 MB/sec) • The question is can your OS and our CPUs push it? • And let’s say you can, just how much is a Gbps in some kind of other thing?
  • 40. We used to use FreeBSD Moral of the story? Even restricted to a single processor with a single core, Solaris Nevada Build 31 can push 60% of a gigabit connection. FreeBSD can’t.
  • 41. OK, Solaris Good. What’s a 100 Mbps in normal web traffic? • Textdrive.com => 122 KB and has 20 objects (~125KB for an uncached page view). • 125KB page => 100-1000 unique visitors per second • 20 objects per page, that is 2000 requests per second that could pump out of that system. • Maximum.
  • 42. • What is the ability to do 2000 requests/second then? • ((2000 requests/sec)*(20 requests per page)) * 0.125MB per page = 12.5 MB/sec (100Mbps constant). • 86400 seconds/day on 100Mbps => 8,640,000 uniques in a day with 172,800,00 hits.
  • 43. • $8000/month • Give or take a couple of grand depending How much does just a 100 Mbps commit cost?
  • 44. Can you do 2000 requests/second? • Sure an Apache, Lighttpd or Litespeed can do 1000-15,000 static or proxy requests/second
  • 45. How do you do 2000 requests/ second? • Alistapart.com bursts to that with Zeldman’s “Web 3.0” for over an hour • 10 Lighttpds => 200 proxy requests/second each • 1 Lighttpd => 40 request/sec x 5 Rails-FCGI each • We cached everything but writing to MySQL for comments and that kept it on a 3.2 Ghz P4 with 4GB of RAM
  • 46. The Shared Hosting • Is this odd heterogenous largely ruby “application” • Users received 8,641,866 emails, they sent 5,860,769 emails and had 14,984,680 pieces of spam blocked. Mail through the system averages 300 emails/minute with bursts up to 60,000 emails/minute. • Websites cumulatively did ~400,000,000 page views.
  • 47.
  • 48. What is it running now? • There’s 22 TBs of strongspace • Fiber-attached EMC storage • Migrated to Solaris “11” • One big ZFS pool with LUNs • Migrated down to one “hot” server: Dual 3.0 Ghz Xeon with 8GB of RAM • Apache, Lighttpd, static FCGI
  • 49. Fsck You {if you think ZFS isn’t production}
  • 50. Is it a web app or what? ~20 Mbps constant
  • 51. “Logical” servers for the hosted connector 1) Jumpstart/Boot & Administrative servers (x2 per setup) 2) DHCP/LDAP for server identification/authentication and control (x2) 3) DNS: DNSCache for outside resolution (DNSCache as resolver) and a private DNS system 4) DNS MySQL (x2, master/slave, innodb tables) 5) SPAM filtering servers (running DSPAM -> files to NFS store and tracking to postgresql) (x4) 6) SPAM database setup (running postgresql) (x2) 7) SPAM NFS store (x2 heads clustered) 8) SMTP gateway out (x2) 9) SMTP gateway in (x4 -> delivery to Maildir over NFS) 10) Mail NFS store (x2 heads cluster) *main user file store 11) IMAP proxy servers (x2) 12) IMAP servers (x6) 13) User LDAP servers (x2 with hitting postgresql DB backend) 14) User LDAP-postgresql db (x2) 15) User postgresql DB servers (x4) 16) User Web/Application servers (running with kernel SSL accelerators) (x6) 17) User File Storage (NFS dual cluster heads) (x2) 18) Joyent Organization Provisioning server
  • 52. So how do you scale that “web” application?
  • 54. That beautiful Connector application where only 2 of the 18 “things” is “rails”.
  • 55. So most scale is how you scale those “common” services
  • 56. And why just 3.0 Ghz?
  • 57. CPUs are largely idle & RAM RAM RAM 08:23:01 PM CPU %user %nice %sys %iowait %irq %soft %idle intr/s 08:23:01 PM all 2.64 0.00 0.36 2.81 0.02 0.14 94.02 1239.49 08:23:01 PM 0 6.86 0.00 1.18 4.72 0.10 0.69 86.45 68.94 08:23:01 PM 1 2.63 0.00 0.34 1.95 0.01 0.11 95.01 192.97 08:23:01 PM 2 2.78 0.00 0.43 7.41 0.02 0.11 89.29 197.21 08:23:01 PM 3 2.16 0.00 0.29 4.12 0.01 0.07 93.39 178.35 08:23:01 PM 4 1.67 0.00 0.17 1.09 0.01 0.04 97.04 117.29 08:23:01 PM 5 1.67 0.00 0.17 1.11 0.01 0.04 97.05 161.00 08:23:01 PM 6 1.67 0.00 0.16 1.04 0.01 0.04 97.13 161.86 08:23:01 PM 7 1.68 0.00 0.16 1.08 0.01 0.04 97.07 161.86 • “Busy” mysql database server • ~240GB of data with ~150,000 users • Swapping just a little little bit, so ...
  • 58. So what kind of CPUs have we moved into?
  • 59. MB/CMP0/P0 0 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P1 1 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P2 2 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P3 3 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P4 4 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P5 5 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P6 6 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P7 7 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P8 8 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P9 9 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P10 10 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P11 11 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P12 12 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P13 13 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P14 14 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P15 15 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P16 16 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P17 17 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P18 18 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P19 19 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P20 20 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P21 21 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P22 22 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P23 23 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P24 24 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P25 25 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P26 26 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P27 27 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P28 28 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P29 29 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P30 30 1000 MHz SUNW,UltraSPARC-T1 MB/CMP0/P31 31 1000 MHz SUNW,UltraSPARC-T1 Sun T1000’s Ultrasparc T1 32 logical 1.0 Ghz Combined with many software instances Zones Best match between actual CPU and RAM usage
  • 60. It’s not really about high frequencies If you buy intel, buy weak ones, spend the money on RAM Throughput!
  • 62. Back to simple Console server One kind of switch One kind of server One kind of storage One kind of interconnect One kind of power plug One kind of power strip
  • 63. Well. We do have some load balancers still.
  • 64. There’s actually lots of different kinds of plugs
  • 65. What the “default” 5-15R gets you Umm ... ok so there’s a real disconnect between server power and datacenter “design”
  • 67. 4 “old” San Diego Racks Per Rack: 39 processors 39 logical CPUs 52 GB RAM 5280 watts Total: 156 logical CPUs 208 GB RAM 21,120 watts
  • 68. Yes that is what they look like
  • 69. Become a new node 1152 logical 1Ghz CPUs 576 GB RAM 6,480 watts 31 amps @ 208V 2 x 20amp @ 208V L6-20R 2 x 24 plug 20amp/208V ---------------------------------- 12 Enclosures 36 controllers 180 drives 90 TBs raw storage 77 TBs clustered storage 29.4 amps @ 208V 2 x 20amp @ 208V L6-20R 2 x 24 plug 20amp/208V Per Rack: 39 processors 39 logical CPUs 52 GB RAM 5280 watts Total: 156 logical CPUs 208 GB RAM 21,120 watts
  • 70. Server + Storage RAID5 7 TBs RAID5 7 TBs RAID5 7 TBs RAIDZ ZFS Pool iSCSI
  • 71. This is going to be open for you to use
  • 72. DIY: How do you start? 20amp 208V AC power L6-20R Street price: ~$50,000 co-lo’ed
  • 73. Why DIY? Or at least a visit? Outsourcing!You can whois yourself?
  • 74. Some final things • Keep it simple even if you’re starting out big • Keep it simple even if you’re starting out small • Our “stacks” are currently: • Solaris, Mongrel, Apache 2.2 event, kssl • Solaris, FCGI, Apache 2.2 event, kssl • Solaris, FCGI, Lighttpd, kssl • Solaris, FCGI, Lighttpd, Big-IP • Zones, zones, zones