54
So You Want To Rewrite That… Lessons from a successful rearchitecting Camille Fournier @skamille GOTO Chicago 2014

So You Want to Rewrite That

Embed Size (px)

DESCRIPTION

Lessons learned on rewriting a large technology stack from Drupal to Java + Ruby Video here: http://www.youtube.com/watch?v=PhYUvtifJXk

Citation preview

Page 1: So You Want to Rewrite That

So You Want To Rewrite That…

Lessons from a successful rearchitectingCamille Fournier

@skamilleGOTO Chicago 2014

Page 2: So You Want to Rewrite That

We were failing to support our growth, our customers, and our

technology

Page 3: So You Want to Rewrite That

Everything’s not fine.

Page 4: So You Want to Rewrite That

A rewrite will solve all my problems!

Page 5: So You Want to Rewrite That

There’s no such thing as a successful rewrite

The sustainable rewrite looks like firefightingCliff Moon, Boundary

Page 6: So You Want to Rewrite That

THE PATH TO REWRITING IS FRAUGHT WITH DANGER

Page 7: So You Want to Rewrite That

You’re failing now.

Page 8: So You Want to Rewrite That

You can’t scale.

Page 9: So You Want to Rewrite That

You can’t meet customer demand.

Page 10: So You Want to Rewrite That

You’re crushed under the

weight of your technical debt.

Page 11: So You Want to Rewrite That

It is easy to fail on the unknown unknowns

Page 12: So You Want to Rewrite That

This doesn’t look THAT big…

How well do you know what the code is doing now?

Page 13: So You Want to Rewrite That

What about the data?

Page 14: So You Want to Rewrite That

How does the team need to change to make this successful?

Page 15: So You Want to Rewrite That

The sirens will tempt you off course.

Page 16: So You Want to Rewrite That

Trying to do too much.

Page 17: So You Want to Rewrite That

Counting on a “big bang”

release.

Page 18: So You Want to Rewrite That

Choosing the wrong software.

Page 19: So You Want to Rewrite That

Choosing the wrong software.

Page 20: So You Want to Rewrite That

WHAT ARE THE PRINCIPLES TO MAKE THIS SUCCESSFUL?

Page 21: So You Want to Rewrite That

Change as little as possible.

Page 22: So You Want to Rewrite That

Don’t rewrite at all, modify in place!

Page 23: So You Want to Rewrite That

Rewrite but keep the language the same.

Page 24: So You Want to Rewrite That

Change only one thing at once (salami slicing)

Page 25: So You Want to Rewrite That

You need to sell this.

Page 26: So You Want to Rewrite That

Sell it to yourself first.

Page 27: So You Want to Rewrite That

Sell it to the business with Big Scary Graphs.

Page 28: So You Want to Rewrite That

Sell it to your team.

Page 29: So You Want to Rewrite That

You need a detailed definition of done.

Page 30: So You Want to Rewrite That

A test suite that acts as a

safety harness.

Page 31: So You Want to Rewrite That

What is the quality we’re measuring to improve?

Page 32: So You Want to Rewrite That

What is our data migration plan?

Page 33: So You Want to Rewrite That

WHAT DOES THE OUTCOME LOOK LIKE?

Page 34: So You Want to Rewrite That

Your culture will change in the process.

Page 35: So You Want to Rewrite That

Long-time employees may feel threatened.

Page 36: So You Want to Rewrite That

Workflows will have to change.

Page 37: So You Want to Rewrite That

The structure of your team changes.

CTO

Dev Dev Dev Dev Dev Dev

Architect

Page 38: So You Want to Rewrite That

The structure of your team changes.

CTO

Director

FrontEnd

Dev Dev

QA BackEnd

Dev Dev

Director

Frontend QA Backend

VP Ops

DevOps

DevOps DevOps

Syseng

Page 39: So You Want to Rewrite That

A new architecture brings new challenges.

Page 40: So You Want to Rewrite That

Tempting to make v2 everything you ever wanted!

Page 41: So You Want to Rewrite That

Overengineering can happen to process, too.

Page 42: So You Want to Rewrite That

User

Checkout

Static Asset CDN Origin

Drupal

Our Runway

Home

Grid

Product Detail

static assets

sinatra views / erbs

< Sinatra::Base

RtR API clients

Heroku

Rackspace

Engine Yard

Page 43: So You Want to Rewrite That

You’re never really done.

Page 44: So You Want to Rewrite That

You create a system that will last longer than its predecessor.

Page 45: So You Want to Rewrite That

You have the flexibility to build the things you will need.

Page 46: So You Want to Rewrite That

You have standards around that flexibility to mitigate complexity.

Page 47: So You Want to Rewrite That

Build with the needs of a larger or smaller team in mind.

Page 48: So You Want to Rewrite That

Everything isn’t fine.

Page 49: So You Want to Rewrite That

It’s time to rewrite.

Page 50: So You Want to Rewrite That

Sell it, change as little as possible, and know what done looks like.

Page 51: So You Want to Rewrite That

Prepare for a brave new world.

Page 52: So You Want to Rewrite That

Create a sustainable future.

Page 53: So You Want to Rewrite That

Thanks!

• @skamille• Rent the Runway is hiring!

renttherunway.com/careers• My blog: whilefalse.blogspot.com

Page 54: So You Want to Rewrite That

credits• www.mccord-museum.qc.ca/fr/collection/artefacts/MP-0000.2265• Zombie mob: https://www.flickr.com/photos/aheram/219515706/• Fail whale: Rob Friedman / playerx / @px• National Ocean Service Image Gallery• https://www.flickr.com/photos/matt_gibson/3281131319

• https://www.flickr.com/photos/philliecasablanca/3344142642• https://www.flickr.com/photos/johnragai/12601518074• https://www.flickr.com/photos/thomashawk/2369472195• https://www.flickr.com/photos/richigrafik/4912808572• https://www.flickr.com/photos/katiew/311380970• https://www.flickr.com/photos/lucianvenutian/1279760885• https://www.flickr.com/photos/kaptainkobold/390454090• https://www.flickr.com/photos/nihonbunka/3353532166