your language doesn't scale
DESCRIPTION
Another set of slides for Colorado Software Summit 2008. Again, I never ended up giving this talk because I had to ship product.TRANSCRIPT
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 1
Your Language Doesn't ScaleA Discussion of the Nature of Scaling
Ikai Lan
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 2
Hi! I’m Ikai Lan
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 3
This talk is about scaling
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 4
Particularly with regards to theweb
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 5
Attributes of a web app
Client pull based
Operations must finish “fast”
“Fresh” information
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 6
The chip on my shoulder
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 7
Ruby on Rails can’t scale!
Ruby is slow
Default SQL used is not optimal
Page rendering is slow
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 8
All of these are true
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 9
1. Ruby is slow
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 10
2. SQL used is not optimal
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 11
3. Rendering is slow
I don’t have a clever picture here.
Just take my word for it.
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 12
Why do these fall flat?
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 13
Scaling != efficiency
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 14
Efficiency is
Minimizing input foroutput
Bang for your buck
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 15
Scaling != performance
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 16
Performance is
Maximizing outputfor some input
Speed
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 17
Scalability is
Being able to growcapacity withdemand
How well a solutionto some problemwill work when thesize of the problemincreases
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 18
In an ideal world …
We achieve scalability
efficiently while maintaining
performance
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 19
Myth: Needing to throwhardware to solve acapacity problem meansyour application is notscalable
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 20
Truth: If this works, bythe definition, yourapplication IS scalable
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 21
… maybe not efficient
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 22
So the arguments …
Ruby is slow
Default SQL is notoptimal
Page rendering isslow
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 23
Internet
User
Concerning performance …
BrowserDatabase
Assets
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 24
Internet
User
How much time?
Rendering: LONG TIMELONG TIME
Assets
Tiny fraction
Network: ???
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 25
Scaling case study
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 26
First let’s define terms
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 27
Vertical scaling
Improvingperformance in oneof our componenttiers
Adding a tieroptimized for someportion of the load
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 28
Vertical scaling examples
Upgrading hardware
Edge caching
Adding a caching tier for the data store
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 29
Horizontal scaling
Increase capacity byincreasing instancesof components
Spreading loadacross instances
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 30
Horizontal scaling examples
Load balancing (hardware LB or DNSload balancing)
Data partitioning
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 31
Different strokes …
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 32
On to the case study!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 33
These guys made a site
Matt Ikai
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 34
To share pictures!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 35
Our first architecture
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 36
Awesome! We have users!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 37
We have too many users!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 38
Dude! Add more
hardware!
You don’t think I tried?
The hardware - it does
nothing!
The yelling begins
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 39
Our current architecture
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 40
Why isn’t this working?
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 41
Bottlenecks! Bottlenecks!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 42
The first bottleneck is always thepersistent store
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 43
Solution: Replicate data
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 44
New problem: replication delay
How come everything I do
takes a few minutes to work?
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 45
Solution: caching
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 46
New problem: stale data
I can’t remove this tag!
Sometimes things aren’t up
to date!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 47
So now we’ve spent all thatengineering effort and addedno new functionality
(would have been a lot harder if wewere also trying to add features tostay competitive)
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 48
Are we done? Maybe …
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 49
More growth: allpersistence operations areexpensive
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 50
Have to partition DB
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 51
Our application has to nowunderstand how to speakto a partitioned store
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 52
This is really hard!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 53
And I haven’t even gottento transactional integrityor backups
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 54
We’re also introducingmany more points offailure = ops burden
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 55
Engineering problems
Cross functional development
Merging
Regression testing
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 56
Things now cost too much!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 57
Do we even have a businessmodel?
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 58
No one is spared!
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 59
Questions?
Colorado Software Summit: October 19 – 24, 2008 © Copyright 2008, Linkedin
Ikai Lan — Your Language Doesn’t Scale Slide 60
Thanks for coming!
http://www.linkedin.com/in/ikailan