Incremental deployment of new features

1,879 views

Published on

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

No Downloads
Views
Total views
1,879
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
9
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

×