62
Incremental deployment of new features Sean Sullivan Portland Java User Group January 17, 2012

Incremental deployment of new features

  • Upload
    sullis

  • View
    1.307

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Incremental deployment of new features

Incremental deployment of new features

Sean Sullivan Portland Java User Group

January 17, 2012

Page 2: Incremental deployment of new features
Page 3: Incremental deployment of new features

• Gilt Groupe

• International Shipping project

• Incremental deployment

Page 4: Incremental deployment of new features

Gilt Groupe

Page 5: Incremental deployment of new features

online retailer

Page 6: Incremental deployment of new features

venture backed company

Page 7: Incremental deployment of new features

May 2011

Page 8: Incremental deployment of new features

What does Gilt sell?

Page 9: Incremental deployment of new features

Apparel

Page 10: Incremental deployment of new features
Page 11: Incremental deployment of new features
Page 12: Incremental deployment of new features
Page 13: Incremental deployment of new features

Home furnishings

Page 14: Incremental deployment of new features
Page 15: Incremental deployment of new features

Food

Page 16: Incremental deployment of new features
Page 17: Incremental deployment of new features

Local deals

Page 18: Incremental deployment of new features
Page 19: Incremental deployment of new features

Travel

Page 20: Incremental deployment of new features
Page 21: Incremental deployment of new features

Gilt HQ

Page 22: Incremental deployment of new features
Page 23: Incremental deployment of new features

Gilt Portland

Page 24: Incremental deployment of new features
Page 25: Incremental deployment of new features

International Shipping

Page 26: Incremental deployment of new features

November 2011

Page 27: Incremental deployment of new features

Project goals

• allow Gilt’s customers to ship merchandise worldwide

• display price information in customer’s preferred currency

• accept payment in customer’s preferred currency

Page 28: Incremental deployment of new features

Project goals

• legal compliance

• fraud prevention

• streamlined user experience

Page 29: Incremental deployment of new features

Technical scope

• Checkout UI

• Data model

• Order processing

• Payment processing

• Email

• Warehouse

• Finance

• Reporting

• Web analytics

• Third party integration

Page 30: Incremental deployment of new features

Checkout UI

• Ruby on Rails

• Domestic checkout only

• Java + JSP

• Domestic checkout

• International checkout

• Clear separation between UI logic and business logic

Checkout 1.0 Checkout 2.0

Page 31: Incremental deployment of new features

International Checkout

Page 32: Incremental deployment of new features
Page 33: Incremental deployment of new features

Project roadmap

Page 34: Incremental deployment of new features

1. Write code

2. Deploy to production

3. Profit!

Page 35: Incremental deployment of new features

Deploy to production?

Page 36: Incremental deployment of new features
Page 37: Incremental deployment of new features

We need a deployment strategy!

Page 38: Incremental deployment of new features

Deploy early, deploy often?

Page 39: Incremental deployment of new features

Velocity conferenceJune 2009

Page 40: Incremental deployment of new features

Dark launch?

Page 41: Incremental deployment of new features

Facebook EngineeringJuly 2009

Page 42: Incremental deployment of new features

Feature flags?

Page 43: Incremental deployment of new features

Flickr engineeringDecember 2009

Page 44: Incremental deployment of new features
Page 45: Incremental deployment of new features

Ramp up gradually?

Page 46: Incremental deployment of new features

Facebook EngineeringMay 2008

Page 47: Incremental deployment of new features

Dog food?

Page 48: Incremental deployment of new features

wikipedia.org

Page 49: Incremental deployment of new features

joelonsoftware.com

Page 50: Incremental deployment of new features

Gilt deployment strategy

Page 51: Incremental deployment of new features

1. dev team builds feature using “feature flags”

2. QA testing

3. deploy new feature to production

Page 52: Incremental deployment of new features

4. make feature available to a subset of Gilt

employees

5. make feature available to all Gilt employees

Page 53: Incremental deployment of new features

6. make feature available to a subset of

customers

7. gradually ramp up to all customers

100%

Page 54: Incremental deployment of new features

User partitions

Page 55: Incremental deployment of new features

Partition 1 Partition 2 Partition 3 Partition 1000 ...

Page 56: Incremental deployment of new features

Intelligent routing

Page 57: Incremental deployment of new features

Zeus

Checkout 1.0

Checkout 2.0

Page 58: Incremental deployment of new features

Detecting feature availability at runtime

Page 59: Incremental deployment of new features

Java API

import com.mycorp.FeatureService;

if (featureService.isFeatureEnabled(appRequest,

INTERNATIONAL_SHIPPING)) {

// do something

}

else {

// do something else

}

Page 60: Incremental deployment of new features

Custom JSP tag<%@ taglib uri="/WEB-INF/mycorp.tld" prefix="mycorp" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:choose>

<c:when test=”${mycorp.isFeatureEnabled(‘internationalShipping’, pageContext)}”>

International Shipping!

</c:when>

<c:otherwise>

<img src=”nyan-cat.jpg”/>

</c:otherwise>

</c:choose>

Page 61: Incremental deployment of new features

Questions?

Page 62: Incremental deployment of new features

THE END