Scaling
GitHub
Scaling
GitHub
Scaling GitHub
Scaling GitHub
Scaling
GitHub
Scaling GitHub
Scaling
GitHub
Scaling
GitHub
Scaling
GitHub
Scaling github
SCALING
GITHUB
scalin’
githubs
Scaling GitHub
Scaling GitHub
Scaling GitHub
githubs and shit
Scaling
GitHub
Scaling GitHub
Scaling
Startups
B=======D~~~~
Scaling
GitHub
“Scale”
Two problems.
Scaling is
people
+
technology
@holman
Organizational
jeez humans are so finicky
Happiness.
$$$
happy
productive
employees
are
happy
employees
This isn’t a “management problem”.
Everyone needs to worry about this.
Hiring an employee is the
most thing
you can do to your startup.
T O X I C
Hiring an employee is the
so how can you
TOXIC EXCITEMENT
would be a great name for a rock band
yeah, i know...
k
S
U
Your servers, offices, and ideas are bullshit.
Keep your employees happy.
Worry about your coworkers.
Really happy.
EMPLOYEES
NEW HIRES
Know your codebase
Know your process
Imprison your employees with happiness and
nice things and cuddly work practices.
GitHub Jail
work whenever you want
work however you want
work on what you want
health, dental, vision
get out of the way
NO MEETINGS
NO PLANNING SESSIONS
NO NEED TO BE IN THE OFFICE
chat, pull requests, email
MORE DIRECT
This is designed to retain people.
We’re at 56 employees. We haven’t lost one.
This is a huge, massive competitive advantage.
It justifies the extra expense.
Communication.
Don’t have
the server guy
who knows everything.
the billing girl
the testing dude
the customer support maven
Don’t have
the person
who knows everything.
Specialization is great,
but only having one person
is a
Reduce institutional knowledge.
Reduce institutional knowledge.
wikis
V
Every internal GitHub talk
is automatically recorded,
uploaded, and viewable to
every future employee.
V
...on a Kinect-powered
Arduino-based motion-
detecting portable video
recording platform.
Your new hire is stoked to dive in,
start reading, and start contributing
...so don’t get in their way.
Hire well.
Hiring poorly is just as bad
as losing people.
Aim for really great people.
WE SELF-STARTERS
k
less babysitting, more code
k
S
e
k
2
Don’t just market your product;
Always think
about attracting
good people,
even if you’re
not hiring.
Technical
robots can be pretty finicky too
Automate.
fs
fs
deploys
fs
current process overview
fs
multi-server shell commands
fs
new employee setup
fs
app bootstrap
fs
fs
fs
fe
fe
Automating now will save you way
fe
more time down the road.
fe
fe
fe
fe
fs
fs
fs
Ship.
fs
Ship early, ship often.
5x-30x
deploys per day
master
=
always deployable
always green tests
always a safe rollback
Limit your deployments
to
staff
-only
to
beta users
only
@github tweets
exceptions
deploys
Graph.
everyone loves fancy graphs
quickly see trends
quickly see problems
historical data as basis for alerts
METRICS ARE GREAT
But use them wisely.
162ms
average
overall
response time
Valueless metric.
59ms
average
API
response time
with
23ms
average
raw
response time
with
2x throughput
of web
The responsiveness is a lie.
199ms
average
browser
response time
16,000
requests in the last week over
4.5s
Needed to look at the
right stuff.
throttled google
googlebot
2-3x throughput
3-4x CPU usage
had
web requests
compared to
Collect a lot of metrics,
but make sure they’re
important metrics.
GitHub scale.
Everyone has different
growth patterns.
GitHub has had three.
Launch
2008
Bare metal servers
2009
net-shard
Launch
2008
Hosted on Engine Yard
10 VMs
54GB RAM
shared GFS mount
Bare metal servers
2009
Hosted on Rackspace
16 bare metal servers
288GB of RAM
redundant disk storage
net-shard
2010
networks share a common repository
rails/rails
net-shard
For GitHub, scaling involved a lot of
predictions of future trends, then
acting appropriately.
Side Projects.
A THOUGHT EXPERIMENT:
Imagine I told you to build...
an asynchronous robot written in
coffeescript that idles in our chatroom
that can deploy the site to dozens of
servers and vps instances, record
those deploys, manage branch-level
This grew organically, over dozens of
Figure out how to let this happen. It’s hard.
Small hack days can result in
real,
imma-make-us-money
impact.
Small hack days can also keep your
developers
insanely happy
.
Small hack days can also lead to
learning
new techniques
.
Projects and Posts.
JENKINS + CAMPFIRE
github.com/github/janky
CHAT ROOM ROBOT
github.com/github/hubot
OFFICE MUSIC DJ
github.com/holman/play
BLOG: GITHUB IS MOVING TO RACKSPACE
git.io/jByrlQ
BLOG: HOW WE MADE GITHUB FAST
git.io/p5v2Ag
BLOG: UNICORN
git.io/77Onfg
+
Technical
Organizational
Continually refine your
process + workflow.
Worry about your
computers
, and worry
about your
humans
.
Thanks.
ZACH HOLMAN
zachholman.com/talks
@holman
twitter+github: