Upload
phil-calcado
View
2.198
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Citation preview
Monday, April 22, 13
Evolutionary Architecture at Work
phil calçado@pcalcado
http://philcalcado.com
Monday, April 22, 13
2011: Phil decides to move to Berlin
Monday, April 22, 13
Monday, April 22, 13
Monday, April 22, 13
Monday, April 22, 13
~ 180 million users / month
> 10 hours of audio uploaded every minute
Monday, April 22, 13
Organisation challenges
Monday, April 22, 13
SoundCloud was born on Rails
It allowed us to iterate real fast and keep
code quality up(-ish).Monday, April 22, 13
Controller
ActiveRecord Model
Database
Rails is simple.
Monday, April 22, 13
Controller
ActiveRecord Model
Database
Rails is simple.
But it leads you to monoliths
SoundCloud.com
Monday, April 22, 13
Conway’s Law kicks in
Monolithic applications lead to monolithic teams
Controller
ActiveRecord Model
Database
SoundCloud.com
?
♫
Monday, April 22, 13
Big teams == overheadWho is doing what?
Monday, April 22, 13
Big teams == overheadStand-ups become the main communication
channel
Monday, April 22, 13
Big teams == overheadMassive backlog requires constant grooming and
management
Monday, April 22, 13
Big teams == overheadIn the end you’ll need a full time “Iteration Manager”
Monday, April 22, 13
technical challenges
Monday, April 22, 13
There is one system
SoundCloud.com
Monday, April 22, 13
There is one system
not really.
Sounds & Sets
Social Graph
Premium Features Search
Activity Stream
...
Monday, April 22, 13
Multiple subsystemsRuby/Rails are a horrible
Golden Hammers
Monday, April 22, 13
Multiple subsystemsThe stability of the system
is pretty much the same as the less stable
subsystem’s
Monday, April 22, 13
We need to split
Monday, April 22, 13
Controller
ActiveRecord Model
Database
SoundCloud.com
?
♫
Monday, April 22, 13
Sounds & Sets
♫
Social Graph?
Premium Features
Monday, April 22, 13
How?Have an enterprise
Architect?
Monday, April 22, 13
How?Create an architecture
Steering Group?
Monday, April 22, 13
What aboutEveryone is an architect?
Monday, April 22, 13
Enabling the teams
Monday, April 22, 13
Step 1)Stabilise the legacy app
Monday, April 22, 13
Idiomatic Rails is funny
Monday, April 22, 13
Understanding the Rails mindset:
http://bit.ly/not-a-virtue
Monday, April 22, 13
Understanding the Rails mindset:
i do not think it means what you think it
meanshttp://bit.ly/not-a-virtue
Monday, April 22, 13
Stopgap Solution
Monday, April 22, 13
Stopgap Solution
Monday, April 22, 13
Stopgap Solution
(A lot like java circa 2005)
Monday, April 22, 13
Step 2)Create a common protocol
Monday, April 22, 13
Sounds & Sets
Social Graph
Premium Features Search
Activity Stream
...
Monday, April 22, 13
Sounds & Sets
Social Graph
Premium Features Search
Activity Stream
...
Ruby Clojure
Go Haskell
Scala
Ruby
Monday, April 22, 13
We want to try things before making a call
Monday, April 22, 13
Don’t publish rules, publish guidelines
Monday, April 22, 13
Step 3)Minimise non-technical
overhead
Monday, April 22, 13
♫
Social Graph?
Monday, April 22, 13
Step 4)Minimise technical
overhead
Monday, April 22, 13
Pushing a micro-service to production should be easy
Monday, April 22, 13
Monday, April 22, 13
Monday, April 22, 13
Monday, April 22, 13
Monday, April 22, 13
People solving the same problems over and over
Monday, April 22, 13
Monday, April 22, 13
(with the same code...)
Monday, April 22, 13
Monday, April 22, 13
Monday, April 22, 13
Current status
Monday, April 22, 13
About 6 application teams, 3 engineers + 1 product
person
Monday, April 22, 13
Micro-services in Clojure, Scala and (J)Ruby
Monday, April 22, 13
Pull Request lead time reduced from 3 to 1 week
Monday, April 22, 13
Still afraid of deleting old code
Monday, April 22, 13
We have “black hole” teams
Monday, April 22, 13
There is a lot of infrastructure to build
Monday, April 22, 13
In 4 slides
Monday, April 22, 13
Step 1)Stabilise the legacy app
Don’t stop the world, but don’t let the code base deteriorate even more
Monday, April 22, 13
Step 2)Create a common protocol
Guidelines and examples, not rules
Monday, April 22, 13
Minimise non-technical overhead
Small teams don’t need... a lot
Monday, April 22, 13
Step 4)Minimise technical
overhead
Only try to re-use after you use
Monday, April 22, 13
phil calçado
http://philcalcado.com@pcalcado
www.soundcloud.com
Monday, April 22, 13