Incremental deployment    of new features           Sean Sullivan     Portland Java User Group         January 17, 2012
• Gilt Groupe• International Shipping project• Incremental deployment
Gilt Groupe
online retailer
venture backed company
May 2011
What does Gilt sell?
Apparel
Home furnishings
Food
Local deals
Travel
Gilt HQ
Gilt Portland
International Shipping
November 2011
Project goals• allow Gilt’s customers to ship merchandise  worldwide• display price information in customer’s  preferred c...
Project goals• legal compliance• fraud prevention• streamlined user experience
Technical scope•   Checkout UI          •   Warehouse•   Data model           •   Finance•   Order processing     •   Repo...
Checkout UICheckout 1.0            Checkout 2.0•   Ruby on Rails       •   Java + JSP•   Domestic checkout   •   Domestic ...
International Checkout
Project roadmap
1. Write code2. Deploy to production3. Profit!
Deploy to production?
We need adeployment strategy!
Deploy early, deploy often?
Velocity conference     June 2009
Dark launch?
Facebook Engineering     July 2009
Feature flags?
Flickr engineering December 2009
Ramp up gradually?
Facebook Engineering     May 2008
Dog food?
wikipedia.org
joelonsoftware.com
Gilt deployment strategy
1. dev team builds feature using “feature flags”2. QA testing3. deploy new feature to production
4. make feature available to a subset of Gilt  employees5. make feature available to all Gilt employees
6. make feature available to a subset of  customers7. gradually ramp up to all customers                                  ...
User partitions
Partition 1   Partition 2   Partition 3   ...   Partition 1000
Intelligent routing
Checkout 1.0Zeus       Checkout 2.0
Detecting featureavailability at runtime
Java APIimport com.mycorp.FeatureService;if (featureService.isFeatureEnabled(appRequest,         INTERNATIONAL_SHIPPING)) ...
Custom JSP tag<%@ taglib uri="/WEB-INF/mycorp.tld" prefix="mycorp" %><%@ taglib uri="http://java.sun.com/jsp/jstl/core" pre...
Questions?
THE END
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Incremental deployment of new features
Upcoming SlideShare
Loading in...5
×

Incremental deployment of new features

1,410

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,410
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Incremental deployment of new features

  1. 1. Incremental deployment of new features Sean Sullivan Portland Java User Group January 17, 2012
  2. 2. • Gilt Groupe• International Shipping project• Incremental deployment
  3. 3. Gilt Groupe
  4. 4. online retailer
  5. 5. venture backed company
  6. 6. May 2011
  7. 7. What does Gilt sell?
  8. 8. Apparel
  9. 9. Home furnishings
  10. 10. Food
  11. 11. Local deals
  12. 12. Travel
  13. 13. Gilt HQ
  14. 14. Gilt Portland
  15. 15. International Shipping
  16. 16. November 2011
  17. 17. 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
  18. 18. Project goals• legal compliance• fraud prevention• streamlined user experience
  19. 19. Technical scope• Checkout UI • Warehouse• Data model • Finance• Order processing • Reporting• Payment processing • Web analytics• Email • Third party integration
  20. 20. Checkout UICheckout 1.0 Checkout 2.0• Ruby on Rails • Java + JSP• Domestic checkout • Domestic checkout only • International checkout • Clear separation between UI logic and business logic
  21. 21. International Checkout
  22. 22. Project roadmap
  23. 23. 1. Write code2. Deploy to production3. Profit!
  24. 24. Deploy to production?
  25. 25. We need adeployment strategy!
  26. 26. Deploy early, deploy often?
  27. 27. Velocity conference June 2009
  28. 28. Dark launch?
  29. 29. Facebook Engineering July 2009
  30. 30. Feature flags?
  31. 31. Flickr engineering December 2009
  32. 32. Ramp up gradually?
  33. 33. Facebook Engineering May 2008
  34. 34. Dog food?
  35. 35. wikipedia.org
  36. 36. joelonsoftware.com
  37. 37. Gilt deployment strategy
  38. 38. 1. dev team builds feature using “feature flags”2. QA testing3. deploy new feature to production
  39. 39. 4. make feature available to a subset of Gilt employees5. make feature available to all Gilt employees
  40. 40. 6. make feature available to a subset of customers7. gradually ramp up to all customers 100%
  41. 41. User partitions
  42. 42. Partition 1 Partition 2 Partition 3 ... Partition 1000
  43. 43. Intelligent routing
  44. 44. Checkout 1.0Zeus Checkout 2.0
  45. 45. Detecting featureavailability at runtime
  46. 46. Java APIimport com.mycorp.FeatureService;if (featureService.isFeatureEnabled(appRequest, INTERNATIONAL_SHIPPING)) { // do something}else { // do something else}
  47. 47. 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>
  48. 48. Questions?
  49. 49. THE END
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×