66
Monday, April 22, 13

Evolutionary Architecture at Work

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 2: Evolutionary  Architecture at Work

Evolutionary Architecture at Work

phil calçado@pcalcado

http://philcalcado.com

Monday, April 22, 13

Page 3: Evolutionary  Architecture at Work

2011: Phil decides to move to Berlin

Monday, April 22, 13

Page 4: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 5: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 6: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 7: Evolutionary  Architecture at Work

~ 180 million users / month

> 10 hours of audio uploaded every minute

Monday, April 22, 13

Page 8: Evolutionary  Architecture at Work

Organisation challenges

Monday, April 22, 13

Page 9: Evolutionary  Architecture at Work

SoundCloud was born on Rails

It allowed us to iterate real fast and keep

code quality up(-ish).Monday, April 22, 13

Page 10: Evolutionary  Architecture at Work

Controller

ActiveRecord Model

Database

Rails is simple.

Monday, April 22, 13

Page 11: Evolutionary  Architecture at Work

Controller

ActiveRecord Model

Database

Rails is simple.

But it leads you to monoliths

SoundCloud.com

Monday, April 22, 13

Page 12: Evolutionary  Architecture at Work

Conway’s Law kicks in

Monolithic applications lead to monolithic teams

Controller

ActiveRecord Model

Database

SoundCloud.com

?

Monday, April 22, 13

Page 13: Evolutionary  Architecture at Work

Big teams == overheadWho is doing what?

Monday, April 22, 13

Page 14: Evolutionary  Architecture at Work

Big teams == overheadStand-ups become the main communication

channel

Monday, April 22, 13

Page 15: Evolutionary  Architecture at Work

Big teams == overheadMassive backlog requires constant grooming and

management

Monday, April 22, 13

Page 16: Evolutionary  Architecture at Work

Big teams == overheadIn the end you’ll need a full time “Iteration Manager”

Monday, April 22, 13

Page 17: Evolutionary  Architecture at Work

technical challenges

Monday, April 22, 13

Page 18: Evolutionary  Architecture at Work

There is one system

SoundCloud.com

Monday, April 22, 13

Page 19: Evolutionary  Architecture at Work

There is one system

not really.

Sounds & Sets

Social Graph

Premium Features Search

Activity Stream

...

Monday, April 22, 13

Page 20: Evolutionary  Architecture at Work

Multiple subsystemsRuby/Rails are a horrible

Golden Hammers

Monday, April 22, 13

Page 21: Evolutionary  Architecture at Work

Multiple subsystemsThe stability of the system

is pretty much the same as the less stable

subsystem’s

Monday, April 22, 13

Page 22: Evolutionary  Architecture at Work

We need to split

Monday, April 22, 13

Page 23: Evolutionary  Architecture at Work

Controller

ActiveRecord Model

Database

SoundCloud.com

?

Monday, April 22, 13

Page 24: Evolutionary  Architecture at Work

Sounds & Sets

Social Graph?

Premium Features

Monday, April 22, 13

Page 25: Evolutionary  Architecture at Work

How?Have an enterprise

Architect?

Monday, April 22, 13

Page 26: Evolutionary  Architecture at Work

How?Create an architecture

Steering Group?

Monday, April 22, 13

Page 27: Evolutionary  Architecture at Work

What aboutEveryone is an architect?

Monday, April 22, 13

Page 28: Evolutionary  Architecture at Work

Enabling the teams

Monday, April 22, 13

Page 29: Evolutionary  Architecture at Work

Step 1)Stabilise the legacy app

Monday, April 22, 13

Page 30: Evolutionary  Architecture at Work

Idiomatic Rails is funny

Monday, April 22, 13

Page 31: Evolutionary  Architecture at Work

Understanding the Rails mindset:

http://bit.ly/not-a-virtue

Monday, April 22, 13

Page 32: Evolutionary  Architecture at Work

Understanding the Rails mindset:

i do not think it means what you think it

meanshttp://bit.ly/not-a-virtue

Monday, April 22, 13

Page 33: Evolutionary  Architecture at Work

Stopgap Solution

Monday, April 22, 13

Page 34: Evolutionary  Architecture at Work

Stopgap Solution

Monday, April 22, 13

Page 35: Evolutionary  Architecture at Work

Stopgap Solution

(A lot like java circa 2005)

Monday, April 22, 13

Page 36: Evolutionary  Architecture at Work

Step 2)Create a common protocol

Monday, April 22, 13

Page 37: Evolutionary  Architecture at Work

Sounds & Sets

Social Graph

Premium Features Search

Activity Stream

...

Monday, April 22, 13

Page 38: Evolutionary  Architecture at Work

Sounds & Sets

Social Graph

Premium Features Search

Activity Stream

...

Ruby Clojure

Go Haskell

Scala

Ruby

Monday, April 22, 13

Page 39: Evolutionary  Architecture at Work

We want to try things before making a call

Monday, April 22, 13

Page 40: Evolutionary  Architecture at Work

Don’t publish rules, publish guidelines

Monday, April 22, 13

Page 41: Evolutionary  Architecture at Work

Step 3)Minimise non-technical

overhead

Monday, April 22, 13

Page 42: Evolutionary  Architecture at Work

Social Graph?

Monday, April 22, 13

Page 43: Evolutionary  Architecture at Work

Step 4)Minimise technical

overhead

Monday, April 22, 13

Page 44: Evolutionary  Architecture at Work

Pushing a micro-service to production should be easy

Monday, April 22, 13

Page 45: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 46: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 47: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 48: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 49: Evolutionary  Architecture at Work

People solving the same problems over and over

Monday, April 22, 13

Page 50: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 51: Evolutionary  Architecture at Work

(with the same code...)

Monday, April 22, 13

Page 52: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 53: Evolutionary  Architecture at Work

Monday, April 22, 13

Page 54: Evolutionary  Architecture at Work

Current status

Monday, April 22, 13

Page 55: Evolutionary  Architecture at Work

About 6 application teams, 3 engineers + 1 product

person

Monday, April 22, 13

Page 56: Evolutionary  Architecture at Work

Micro-services in Clojure, Scala and (J)Ruby

Monday, April 22, 13

Page 57: Evolutionary  Architecture at Work

Pull Request lead time reduced from 3 to 1 week

Monday, April 22, 13

Page 58: Evolutionary  Architecture at Work

Still afraid of deleting old code

Monday, April 22, 13

Page 59: Evolutionary  Architecture at Work

We have “black hole” teams

Monday, April 22, 13

Page 60: Evolutionary  Architecture at Work

There is a lot of infrastructure to build

Monday, April 22, 13

Page 61: Evolutionary  Architecture at Work

In 4 slides

Monday, April 22, 13

Page 62: Evolutionary  Architecture at Work

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

Page 63: Evolutionary  Architecture at Work

Step 2)Create a common protocol

Guidelines and examples, not rules

Monday, April 22, 13

Page 64: Evolutionary  Architecture at Work

Minimise non-technical overhead

Small teams don’t need... a lot

Monday, April 22, 13

Page 65: Evolutionary  Architecture at Work

Step 4)Minimise technical

overhead

Only try to re-use after you use

Monday, April 22, 13

Page 66: Evolutionary  Architecture at Work

phil calçado

http://philcalcado.com@pcalcado

www.soundcloud.com

Monday, April 22, 13