stackuptalks renttherunway-may62014-140514094321-phpapp02

29
How We Write the DRESS CODE at Rent the Runway

Upload: elana-jacobs

Post on 30-Jun-2015

201 views

Category:

Technology


1 download

DESCRIPTION

Rent the Runway's Presentation from Dev Stackup held @ The Flatiron School, 5/6

TRANSCRIPT

Page 1: Stackuptalks renttherunway-may62014-140514094321-phpapp02

How We Write the DRESS CODE

at Rent the Runway

Page 2: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Introductions!

Eric Weinstein@ericqweinstein

Tim Ricablanca@timx

@RTR_tech

Page 3: Stackuptalks renttherunway-may62014-140514094321-phpapp02

● Founded in November 2009● Cinderella-Experience-as-a-ServiceTM*

● 40+ engineers / 10 Ruby committers● Operations:

○ Warehouse & Fulfillment in NJ○ Henri Bendel’s and HQ in NYC○ The Cosmopolitan, Las Vegas

About Rent the Runway

* We made this up

Page 4: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Ruby at Rent the Runway

Page 5: Stackuptalks renttherunway-may62014-140514094321-phpapp02
Page 6: Stackuptalks renttherunway-may62014-140514094321-phpapp02

We use Sinatra for our front-end

. . . served by Unicorn, behind Nginx

. . . tested by RSpec and Jasmine

. . . talking to our APIs over Typhoeus

. . . deployed by Rake and Capistrano

Page 7: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Commit to a feature branch Pull Request

RSpec & Jasmine

Code review & mergeCode Climate

Deploy via CapistranoSelenium tests

Rubocop & JSHint

Page 8: Stackuptalks renttherunway-may62014-140514094321-phpapp02

We deploy renttherunway.com every day.

Our deploys are boring and uneventful.

It took four devs, a systems engineer, and a team of QA engineers three months to get there.

Page 9: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Humble Beginnings:The Journey to Boring Deploys:

A Tuskforce Adventure

Page 10: Stackuptalks renttherunway-may62014-140514094321-phpapp02

The Early Days

● Drupal on LAMP● No separation of concerns ● No database abstraction● Test coverage was questionable● <standard painful problem with legacy

software>

Page 11: Stackuptalks renttherunway-may62014-140514094321-phpapp02

“You run your e-commerce site on Drupal?”

Page 12: Stackuptalks renttherunway-may62014-140514094321-phpapp02

SOA and Salami Slicing

Page 13: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Our Runway

Page 14: Stackuptalks renttherunway-may62014-140514094321-phpapp02

And then came the swimlanes

Page 15: Stackuptalks renttherunway-may62014-140514094321-phpapp02

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 16: Stackuptalks renttherunway-may62014-140514094321-phpapp02

...but wait, there’s more:EACH ONE OF THE SWIMLANES HAD ITS OWN CDN AND MEMCACHED INSTANCE

Page 17: Stackuptalks renttherunway-may62014-140514094321-phpapp02

“Deploying the website was like executing a lunar mission”

- Eric Q. Weinstein

Page 18: Stackuptalks renttherunway-may62014-140514094321-phpapp02

“some m#%@&*s are always trying to ice skate uphill”

Page 19: Stackuptalks renttherunway-may62014-140514094321-phpapp02

The swimlanes solved a scalability problem that we didn’t have.

We regressed at the cost of productivity, feature velocity, and developer happiness.

Page 20: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Organizational Buy-in

Page 21: Stackuptalks renttherunway-may62014-140514094321-phpapp02

“Everyone deserves a Cinderella Experience”- Rent the Runway Core Value #1

(even developers!)

*queue the Tuskforce*

Page 22: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Storefront App

< Sinatra::Base

API Clients

*

Page 23: Stackuptalks renttherunway-may62014-140514094321-phpapp02
Page 24: Stackuptalks renttherunway-may62014-140514094321-phpapp02

(It’s this one)

Page 25: Stackuptalks renttherunway-may62014-140514094321-phpapp02

It used to take two devs 6 hours to shepherd the deploy.

It now takes about 6 minutes.

Page 26: Stackuptalks renttherunway-may62014-140514094321-phpapp02

FashionatorTM

Page 27: Stackuptalks renttherunway-may62014-140514094321-phpapp02

FlaggregatorTM

Page 28: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Lessons Learned

● New tech stack: growing pains● YAGNI: don’t build what you don’t need● You can’t boil the ocean, but you can cause

global warming● Everyone deserves a Cinderella

experience—even developers!

Page 29: Stackuptalks renttherunway-may62014-140514094321-phpapp02

Questions?