DrupalCon Denver 2012 - Changing the Tires at 60 MPH: How Martha Stewart Living Omnimedia Migrated to Drupal

DrupalCon Denver 2012 - Changing the Tires at 60 MPH: How Martha Stewart Living Omnimedia Migrated to Drupal

Building a complex, high traffic, Drupal site from scratch is challenging. Converting a site that already has a high traffic web presence to Drupal while maintaining the legacy site throughout the process is like changing your tires at 60 MPH. Martha Stewart Living Omnimedia tackled this very issue on an enterprise scale, running two CMS systems, Vignette and Drupal, simultaneously under the same domains.

This session was co-presented by Lullabot James Sansbury and the MSLO Internet Technology team.

Fbec57cb6c60f2e9a8849a612c3cda5f?s=128

TJ Pitre

May 31, 2012
Tweet

Transcript

  1. CHANGING THE TIRES AT 60 MPH HOW MARTHA STEWART LIVING

    OMNIMEDIA MIGRATED TO DRUPAL MARTHA STEWART DIGITAL TEAM DrupalCon Denver 2012 MARTHASTEWART.COM Friday, March 16, 12
  2. MarthaStewart.com Friday, March 16, 12

  3. MarthaStewartWeddings.com Friday, March 16, 12

  4. WholeLiving.com Friday, March 16, 12

  5. WHY? Friday, March 16, 12

  6. WHY? EXPENSIVE AND AGING Friday, March 16, 12

  7. WHY? EXPENSIVE AND AGING DIFFICULT TO CUSTOMIZE Friday, March 16,

    12
  8. WHY? EXPENSIVE AND AGING DIFFICULT TO CUSTOMIZE INFLEXIBLE CONTENT MODEL

    Friday, March 16, 12
  9. WHY? EXPENSIVE AND AGING DIFFICULT TO CUSTOMIZE INFLEXIBLE CONTENT MODEL

    CUMBERSOME EDIT UI Friday, March 16, 12
  10. WHY? EXPENSIVE AND AGING DIFFICULT TO CUSTOMIZE INFLEXIBLE CONTENT MODEL

    CUMBERSOME EDIT UI SCARCE DEV RESOURCES Friday, March 16, 12
  11. System Couldn’t Support Business Friday, March 16, 12

  12. Friday, March 16, 12

  13. STEP Getting Started 1 Friday, March 16, 12

  14. GETTING STARTED What Are We Building? Friday, March 16, 12

  15. GETTING STARTED 1 Document Content Types Friday, March 16, 12

  16. GETTING STARTED 1 Document Content Types 2 Document High-Level Functionality

    Friday, March 16, 12
  17. GETTING STARTED 1 Document Content Types 2 Document High-Level Functionality

    3 Content Asset Inventory Friday, March 16, 12
  18. GETTING STARTED 4 Analyzed Internal Processes 1 Document Content Types

    2 Document High-Level Functionality 3 Content Asset Inventory Friday, March 16, 12
  19. GETTING STARTED 3 Content Asset Inventory 4 Analyzed Internal Processes

    5 Engage the Experts 1 Document Content Types 2 Document High-Level Functionality Friday, March 16, 12
  20. STEP 2 Drawing the Roadmap Friday, March 16, 12

  21. DRAWING THE ROADMAP 1 Show Continuous Progress Friday, March 16,

    12
  22. DRAWING THE ROADMAP 1 Show Continuous Progress 2 Socialize Drupal

    Internally Friday, March 16, 12
  23. DRAWING THE ROADMAP 3 Mitigate Risk 1 Show Continuous Progress

    2 Socialize Drupal Internally Friday, March 16, 12
  24. DRAWING THE ROADMAP 3 Mitigate Risk 4 Keep Developers Psyched

    1 Show Continuous Progress 2 Socialize Drupal Internally Friday, March 16, 12
  25. DRAWING THE ROADMAP 3 Mitigate Risk 4 Keep Developers Psyched

    5 Keep Management Happy 1 Show Continuous Progress 2 Socialize Drupal Internally Friday, March 16, 12
  26. DRAWING THE ROADMAP What We Couldn’t Do... Friday, March 16,

    12
  27. DRAWING THE ROADMAP Friday, March 16, 12

  28. DRAWING THE ROADMAP What We Decided... Friday, March 16, 12

  29. DRAWING THE ROADMAP 1 Migrate Iteratively Friday, March 16, 12

  30. DRAWING THE ROADMAP 1 Migrate Iteratively 2 Maintain Two Platforms

    Friday, March 16, 12
  31. DRAWING THE ROADMAP 3 Move One Content Type at a

    Time 1 Migrate Iteratively 2 Maintain Two Platforms Friday, March 16, 12
  32. DRAWING THE ROADMAP 3 Move One Content Type at a

    Time 4 MAGIC! 1 Migrate Iteratively 2 Maintain Two Platforms Friday, March 16, 12
  33. STEP Moving the Data 3 Friday, March 16, 12

  34. MOVING THE DATA Start Moving as Soon As You Can

    Friday, March 16, 12
  35. MOVING THE DATA Iterate Data Alongside Your Code Iterations Friday,

    March 16, 12
  36. MOVING THE DATA Retain Legacy Model And Data Friday, March

    16, 12
  37. MOVING THE DATA Designed Ideal Content Types Friday, March 16,

    12
  38. MOVING THE DATA Built A Drupal 6 Data "Bridge" Friday,

    March 16, 12
  39. MOVING THE DATA Migrate Module Friday, March 16, 12

  40. MOVING THE DATA MIGRATE MODULE Drupal 6 Magazine Platform Drupal

    6 Enterprise Content Library MarthaStewart.com WholeLiving.com MarthaStewartWeddings.com Drupal Migrations Drupal Migrations Custom Image Upload Service <XML> <XML> IPTC Data VCM Data XML HTTP Service Recipe Data HTTP Service Print Images Friday, March 16, 12
  41. MOVING THE DATA TAKE AWAYS 1 Vital to track content

    sources easily Friday, March 16, 12
  42. MOVING THE DATA TAKE AWAYS 1 Vital to track content

    sources easily Friday, March 16, 12
  43. MOVING THE DATA TAKE AWAYS 1 Vital to track content

    sources easily Friday, March 16, 12
  44. MOVING THE DATA TAKE AWAYS 1 Vital to track content

    sources easily 2 Content types are iterative too Friday, March 16, 12
  45. MOVING THE DATA TAKE AWAYS 1 Vital to track content

    sources easily 2 Content types are iterative too 3 Real data reveals bugs earlier Friday, March 16, 12
  46. MOVING THE DATA TAKE AWAYS 1 Vital to track content

    sources easily 2 Content types are iterative too 3 Real data reveals bugs earlier 4 Migrate is powerful, complex, and heavy Friday, March 16, 12
  47. STEP Developing, Testing, Deploying 4 Friday, March 16, 12

  48. DEVELOPING, TESTING, DEPLOYING Consistent Deployments Through Each Stage Friday, March

    16, 12
  49. DEVELOPING, TESTING, DEPLOYING Minimal Manual Post- deployment Steps Friday, March

    16, 12
  50. DEVELOPING, TESTING, DEPLOYING Deploy Config Without Changing Content Friday, March

    16, 12
  51. DEVELOPING, TESTING, DEPLOYING Bouwer, Phing, and Drush Friday, March 16,

    12
  52. DEVELOPING, TESTING, DEPLOYING Content/Permissions/Views Models Via Features Friday, March 16,

    12
  53. DEVELOPING, TESTING, DEPLOYING Configuration Via Ctools/ Exportables Friday, March 16,

    12
  54. DEVELOPING, TESTING, DEPLOYING Update Hooks for Schema Changes Friday, March

    16, 12
  55. DEVELOPING, TESTING, DEPLOYING Git and Gitflow Friday, March 16, 12

  56. DEVELOPING, TESTING, DEPLOYING Creating a Bouwer Release Friday, March 16,

    12
  57. DEVELOPING, TESTING, DEPLOYING 1 Create deployment package bouwer seed [platform]

    [version] Friday, March 16, 12
  58. DEVELOPING, TESTING, DEPLOYING 1 Create deployment package bouwer seed [platform]

    [version] 2 Save deployment package bouwer save [platform] [version] Friday, March 16, 12
  59. DEVELOPING, TESTING, DEPLOYING 1 Create deployment package bouwer seed [platform]

    [version] 2 Save deployment package bouwer save [platform] [version] 3 Deploy bouwer deploy [platform] [version] Friday, March 16, 12
  60. DEVELOPING, TESTING, DEPLOYING TAKE AWAYS 1 Consistent deployments build confidence

    Friday, March 16, 12
  61. DEVELOPING, TESTING, DEPLOYING TAKE AWAYS 2 Better coding 1 Consistent

    deployments build confidence Friday, March 16, 12
  62. DEVELOPING, TESTING, DEPLOYING TAKE AWAYS 1 Consistent deployments builds confidence

    3 Still can't capture every configuration detail :( 2 Better coding Friday, March 16, 12
  63. DEVELOPING, TESTING, DEPLOYING TAKE AWAYS 1 Consistent deployments builds confidence

    4 True rollbacks impossible in Drupal 2 Better coding 3 Still can't capture every configuration detail :( Friday, March 16, 12
  64. STEP Building the Site 5 Friday, March 16, 12

  65. BUILDING THE SITE “Russian Doll” Hierarchy Friday, March 16, 12

  66. BUILDING THE SITE “RUSSIAN DOLL” HIERARCHY Friday, March 16, 12

  67. BUILDING THE SITE “RUSSIAN DOLL” HIERARCHY Friday, March 16, 12

  68. BUILDING THE SITE “RUSSIAN DOLL” HIERARCHY Friday, March 16, 12

  69. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  70. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  71. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  72. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  73. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  74. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  75. BUILDING THE SITE EDITORIAL CONTROL Friday, March 16, 12

  76. BUILDING THE SITE TAKE AWAYS 1 Node references are powerful

    and flexible Friday, March 16, 12
  77. BUILDING THE SITE TAKE AWAYS 1 Node references are powerful

    and flexible 2 ...but they’re also expensive Friday, March 16, 12
  78. BUILDING THE SITE TAKE AWAYS 1 Node references are powerful

    and flexible 2 ...but they’re also expensive 3 ...and they create caching issues Friday, March 16, 12
  79. BUILDING THE SITE TAKE AWAYS 1 Node references are powerful

    and flexible 2 ...but they’re also expensive 3 ...and they create caching issues 4 Block and context need strategic planning Friday, March 16, 12
  80. STEP Controlling the Content 6 Friday, March 16, 12

  81. The Content Life Cycle Friday, March 16, 12

  82. Friday, March 16, 12

  83. Friday, March 16, 12

  84. Custom Workflow Module Suite Friday, March 16, 12

  85. CONTROLLING THE CONTENT MODULES Workflow Friday, March 16, 12

  86. CONTROLLING THE CONTENT Workflow Workflow_access MODULES Friday, March 16, 12

  87. CONTROLLING THE CONTENT Workflow Workflow_access Module_grants MODULES Friday, March 16,

    12
  88. CONTROLLING THE CONTENT Workflow Workflow_access Module_grants Revisioning MODULES Friday, March

    16, 12
  89. CONTROLLING THE CONTENT Workflow Workflow_access Module_grants Revisioning Workbin Module (custom

    module) MODULES Friday, March 16, 12
  90. Friday, March 16, 12

  91. CONTROLLING THE CONTENT Friday, March 16, 12

  92. CONTROLLING THE CONTENT Friday, March 16, 12

  93. CONTROLLING THE CONTENT Friday, March 16, 12

  94. CONTROLLING THE CONTENT Friday, March 16, 12

  95. CONTROLLING THE CONTENT Friday, March 16, 12

  96. CONTROLLING THE CONTENT Friday, March 16, 12

  97. CONTROLLING THE CONTENT Friday, March 16, 12

  98. CONTROLLING THE CONTENT Friday, March 16, 12

  99. CONTROLLING THE CONTENT Friday, March 16, 12

  100. CONTROLLING THE CONTENT TAKE AWAYS 1 Drupal permissions are complex

    and processor intensive Friday, March 16, 12
  101. CONTROLLING THE CONTENT TAKE AWAYS 1 Drupal permissions are complex

    and processor intensive 2 Workflow is powerful but unruly Friday, March 16, 12
  102. CONTROLLING THE CONTENT TAKE AWAYS 1 Drupal permissions are complex

    and processor intensive 2 Workflow is powerful but unruly 3 Solve special cases with hooks Friday, March 16, 12
  103. CONTROLLING THE CONTENT TAKE AWAYS 1 Drupal permissions are complex

    and processor intensive 2 Workflow is powerful but unruly 3 Solve special cases with hooks 4 Avoid using actions Friday, March 16, 12
  104. CONTROLLING THE CONTENT TAKE AWAYS 1 Drupal permissions are complex

    and processor intensive 2 Workflow is powerful but unruly 3 Solve special cases with hooks 4 Avoid using actions 5 Learn how people work! Friday, March 16, 12
  105. STEP Making It Beautiful 7 Friday, March 16, 12

  106. & MAKING IT BEAUTIFUL Maintain “Look Feel” Friday, March 16,

    12
  107. MAKING IT BEAUTIFUL Redesign & Maintain “Look Feel” Friday, March

    16, 12
  108. MAKING IT BEAUTIFUL Recycle Old Code Friday, March 16, 12

  109. MAKING IT BEAUTIFUL Same CSS & Same Markup Friday, March

    16, 12
  110. MAKING IT BEAUTIFUL “Freshen Up” Design Friday, March 16, 12

  111. Friday, March 16, 12

  112. Friday, March 16, 12

  113. MAKING IT BEAUTIFUL Transitional Theme Friday, March 16, 12

  114. MAKING IT BEAUTIFUL Transitional Theme ? Friday, March 16, 12

  115. MAKING IT BEAUTIFUL LEGACY DESIGN TRANSITIONAL DESIGN Same Blocks Friday,

    March 16, 12
  116. MAKING IT BEAUTIFUL Forward Compatible Images Friday, March 16, 12

  117. MAKING IT BEAUTIFUL LEGACY IMAGES SIZES SMALL MEDIUM LARGE X-LARGE

    Friday, March 16, 12
  118. MAKING IT BEAUTIFUL SMALL MEDIUM LARGE X-LARGE VIDEO LARGE VIDEO

    MEDIUM LEGACY IMAGES SIZES VIDEO SMALL Friday, March 16, 12
  119. SMALL LARGE X-LARGE VIDEO LARGE VIDEO MEDIUM VIDEO SMALL MAKING

    IT BEAUTIFUL X-LARGE IPHONE SHOP MEDIUM LEGACY IMAGES SIZES Friday, March 16, 12
  120. MAKING IT BEAUTIFUL MEDIUM LARGE VIDEO SMALL VIDEO LARGE VIDEO

    MEDIUM VIDEO MEDIUM LEGACY IMAGES SIZES SMALL LARGE X-LARGE VIDEO LARGE SHOP MEDIUM VIDEO MEDIUM Friday, March 16, 12
  121. MAKING IT BEAUTIFUL MEDIUM LARGE VIDEO SMALL VIDEO LARGE VIDEO

    MEDIUM VIDEO SMALL VIDEO MEDIUM LEGACY IMAGES SIZES SMALL LARGE X-LARGE VIDEO LARGE VIDEO MEDIUM VIDEO SMALL OVER 14 IMAGE CROPS! Friday, March 16, 12
  122. MAKING IT BEAUTIFUL Image Content Type + Custom ImageCaching Friday,

    March 16, 12
  123. MAKING IT BEAUTIFUL AUTOMATED IMAGE SIZES VERTICAL SQUARE HORIZONTAL Only

    3 Crops! Friday, March 16, 12
  124. TAKE AWAYS MAKING IT BEAUTIFUL 1 Pre-processing is expensive Friday,

    March 16, 12
  125. TAKE AWAYS MAKING IT BEAUTIFUL 1 Pre-processing is expensive 2

    Avoid complex theme logic Friday, March 16, 12
  126. TAKE AWAYS MAKING IT BEAUTIFUL 1 Pre-processing is expensive 2

    Avoid complex theme logic 3 Managing multiple styles is tricky Friday, March 16, 12
  127. STEP Routing the Traffic 8 Friday, March 16, 12

  128. ROUTING THE TRAFFIC http://www.marthastewart.com/recipe/rainbow-cake Friday, March 16, 12

  129. ROUTING THE TRAFFIC Load Balancer Rules Friday, March 16, 12

  130. ROUTING THE TRAFFIC Load Balancer http://www.marthastewart.com/recipe/rainbow-cake Friday, March 16, 12

  131. ROUTING THE TRAFFIC Load Balancer http://www.marthastewart.com/recipe/rainbow-cake Friday, March 16, 12

  132. ROUTING THE TRAFFIC Redirects Friday, March 16, 12

  133. ROUTING THE TRAFFIC Path Redirect Module http://www.marthastewart.com/recipe/rainbow-cake http://www.marthastewart.com/215188/rainbow-cake Friday, March

    16, 12
  134. ROUTING THE TRAFFIC Path Redirect Module Akamai CDN Redirect Rules

    Friday, March 16, 12
  135. ROUTING THE TRAFFIC http://www.marthastewart.com/recipe/rainbow-cake http://www.marthastewart.com/215188/rainbow-cake Akamai CDN Redirect Rules Friday,

    March 16, 12
  136. ROUTING THE TRAFFIC http://www.marthastewart.com/recipe/rainbow-cake Akamai CDN Redirect Rules http://www.marthastewart.com/215188/rainbow-cake Load

    Balancer Friday, March 16, 12
  137. ROUTING THE TRAFFIC Custom Link Rendering Friday, March 16, 12

  138. ROUTING THE TRAFFIC THE INGREDIENTS 1 “Served from Vignette” list

    Friday, March 16, 12
  139. ROUTING THE TRAFFIC THE INGREDIENTS 1 2 CCK field for

    Vignette URL “Served from Vignette” list Friday, March 16, 12
  140. ROUTING THE TRAFFIC THE INGREDIENTS 1 2 CCK field for

    Vignette URL 3 Custom url() and l() functions “Served from Vignette” list Friday, March 16, 12
  141. ROUTING THE TRAFFIC Node ID 274244 URL alias: 274244/easter-ideas Vignette

    URL: photogallery/easter-ideas Friday, March 16, 12
  142. ROUTING THE TRAFFIC Node ID 274244 URL alias: 274244/easter-ideas Vignette

    URL: photogallery/easter-ideas url('node/274244') /274244/easter-ideas Friday, March 16, 12
  143. ROUTING THE TRAFFIC Node ID 274244 URL alias: 274244/easter-ideas Vignette

    URL: photogallery/easter-ideas custom_url('node/274244') /photogallery/easter-ideas /274244/easter-ideas Served from Vignette? YES NO Friday, March 16, 12
  144. ROUTING THE TRAFFIC TAKE AWAYS 1 URL-juggling required care, strategy

    Friday, March 16, 12
  145. ROUTING THE TRAFFIC TAKE AWAYS 1 URL-juggling required care, strategy

    2 Showing continuous progress = huge win Friday, March 16, 12
  146. ROUTING THE TRAFFIC TAKE AWAYS 1 URL-juggling required care, strategy

    2 Showing continuous progress = huge win 3 Maintaining two CMSs added expense and complexity Friday, March 16, 12
  147. ROUTING THE TRAFFIC TAKE AWAYS 1 URL-juggling required care, strategy

    2 Showing continuous progress = huge win 3 Maintaining two CMSs added expense and complexity 4 Disposable code was inevitable Friday, March 16, 12
  148. ROUTING THE TRAFFIC TAKE AWAYS 1 URL-juggling required care, strategy

    2 Showing continuous progress = huge win 3 Maintaining two CMSs added expense and complexity 4 Disposable code was inevitable 5 Gradual transition had pluses and minuses Friday, March 16, 12
  149. STEP 9 Welcoming Our Users Friday, March 16, 12

  150. WELCOMING OUR USERS Seamless Experience Friday, March 16, 12

  151. WELCOMING OUR USERS AJAX Requests To Vignette Friday, March 16,

    12
  152. WELCOMING OUR USERS Separation Of UGC (UGC: User Generated Content)

    Friday, March 16, 12
  153. WELCOMING OUR USERS Single Sign On Friday, March 16, 12

  154. WELCOMING OUR USERS Drupal 7 to the Rescue Friday, March

    16, 12
  155. WELCOMING OUR USERS Iframes & ESIs, Oh My! Friday, March

    16, 12
  156. WELCOMING OUR USERS Friday, March 16, 12

  157. WELCOMING OUR USERS Friday, March 16, 12

  158. WELCOMING OUR USERS Friday, March 16, 12

  159. WELCOMING OUR USERS TAKE AWAYS 1 Complicated Stuff is... Complicated

    Friday, March 16, 12
  160. WELCOMING OUR USERS TAKE AWAYS 1 Complicated Stuff is... Complicated

    2 Developers & Designers, Unite! Friday, March 16, 12
  161. Questions? Friday, March 16, 12

  162. Thank You. MARTHASTEWART.COM WHOLELIVING.COM MARTHASTEWARTWEDDINGS.COM Friday, March 16, 12