SlideShare a Scribd company logo
SANDcamp, San Diego, CA - February 27, 2015
The Great Consolidation
Entertainment Weekly migration case study
Who are we?
• Four Kitchens Web Chefs
• Jon Peck - drupal.org/u/fluxsauce
• Matt Grill - drupal.org/u/drpal
• Patrick Coffey - drupal.org/u/pcoffey
Project overview
What did we do & who did it?
Entertainment Weekly
• Magazine that covers film, TV, music,
Broadway theater, books, and pop culture
• 40th largest in the US
• ew.com
• 13.7 million consumers / week
Migration scope
•WordPress
• 10 blogs
• 51,616 terms
• 101,581 posts
• 90,435 images

•Vignette V6
• 117,326 articles
• 201,986 images
• 97,611 terms
• 4,924 galleries
Development Teams
• Four Kitchens - 3 developers to 6
• Time Inc. - 1 developer to 4
• Zoom, HipChat for regular communication
• Video really helps
• As does GitHub selfies :-)
Timeline
• First commit: April 29th, 2014
• Launch: January 29th, 2015
• 17 sprints
Delegation of responsibilities
•Four Kitchens
• Project Management
• Data structures
• Migration
• Implement design,
advertising
•Time Inc.
• Product Owner
• Design
• Workflow
• Infrastructure,
build process
Process
Standards and documentation
Definition of Readiness and
Completion
• Stakeholders
• Context necessary for development
• Developers
• Code reviews, PO acceptance, demo, docs
• Evolving framework
Code and style standards
• Algorithmically enforced
• PHP_CodeSniffer (rules from coder)
• jshint - syntax
• jscs - code style
• EditorConfig settings
Peer code reviews
• Functional - does it…
• Fulfill the intent of the story?
• Use best practices?
• Avoid technical debt?
Development Environments
• Documented project-specific process
• Superset of existing instructions
• Greatly reduced on-boarding time
• Provided plentiful feedback to DCMS
• Beta tested new VMs
Branching standard
• Reduces clutter
• Improves communication, navigation
• Best practices
• sprint-xx (kept for one sprint)
• SEGEWCMSM-YY (deleted after merge)
• Tags added when deleting sprint branch
Front-end
Theming, performance and advertising
THEMING
https://www.drupal.org/project/aurora
Aurora, mobile first theming
• Used Aurora as base theme
• HTML5, Sass & Compass
• Mobile theme is sub-theme of Aurora
• Desktop is a sub-theme of Mobile
Gulp task management
• Compiles Sass
• Runs JavaScript checkers
• jshint
• jscs
JAVASCRIPT
JavaScript global scoping
• Created global JS object for all EW functions
• Best practice
• Centralized point of entry
• Easy access
Atomic JavaScript
functionality
• Break related functions into individual files
• Only load what’s needed
• No monolithic structure
• Improves front-end performance
PREPROCESSING
Balancing performance with
business logic
• Node template data built in pre-processing
• Does not use views, panels
• Clean & reusable
• Intuitive structure
• Helper and abstractions
BEACONS
Global metadata object
• Useful for integrations requiring metadata
• Avoids repetition
• Facilitates data collection by crawlers
Beacon performance
• Delay loading of beacons (non-blocking)
• Use defer for injecting JS tags
ADVERTISING
Collaborating with DCMS
• TGX improvements
• Single-request mode
• More native GPT functionality
• Ad Manager
• Patches, recommendations
Custom ad rendering to
maximise performance
• No logic in templates
• Data attributes contain values
• Avoids inline JS
• Improves rendering performance
• Ad renders in footer (after page load)
Editorial UI & Workflow
Packages and Channels
• Automatic dynamic content
• Editors define rules for selection
• Optional manual curation
Custom content types
• Used existing DCMS features to begin
• Rounds of PO, editor feedback
• Usability key to adoption
Collaboration with DCMS
• Provided feedback on tools
• Search interfaces
• Transient messages
• Crop tool
• Auto save
Dynamic Entity References
• Lots of aggregate views in EW
• Editorial control of views, but with overrides
• Custom module that “fills in” empty parts of a
view based on context
• View lists 15, editor defines 5, DER
populates remaining
Dynamic ER challenges
• Modular, extensible, reusable
• Accurate dynamically curated nodes
• High performance
• Editoral expectations for caching
• State Machine integration
Content migrations
WordPress, Vignette to Drupal
WORDPRESS
Challenges
• 10 different blogs
• Different structures
• Multiple taxonomies
• Invalid markup
• Custom shortcodes, filters
• WordPress Migrate module not enough
Solutions
• Interviewed other teams, shared code
• Pre-processing
• Strip comments
• Combine into one monolithic file
• Separates authors, tags, images
Shortcodes and Filters
• Custom markup
• Created custom short code system
• Most will not be migrated
• Pre-processing solution
• Render as HTML
• Used WordPress, existing code
WordPress Migrate
• Can’t use directly…
• Can extend!
• Helps normalize WXR structure
• Focus on custom logic
Mapping terms on import
• Separates monolithic taxonomy
• Specific vocabularies
• New content types (people, creative works)
• CSV Spreadsheet used for defining rules
• Curated by Editors, PO
VIGNETTE
Exporting from Vignette
• Coordinated with TI team
• Defined XML structure
• Gave feedback on export UI
• Resolve edge cases
Importing
• XML content is sanitized and validated
• Transforms overloaded taxonomies to content
• People, Creative Works
• Articles, Packages, Galleries
MIGRATION
PERFORMANCE
Improving migration
performance
• Validate all XML before ingestion
• Eliminate all PHP errors, warnings
• Avoid redundant migrations
• Separate in pre-import
• Reduce overall number of migrations
• Implement cache_counts
Reducing migration overhead
• Disabled solr, pathauto, metatag, others
during migration
• Project requirement was 2.5; you should use
2.7
• Ran migrations in parallel
• Ensure HW resources are sufficient
Migration redirects
• Minimize Drupal performing redirects
• Redirect farm (rules, 1:1 redirects)
• Exported if source, target known
• DNS changes
• Redirects from migrated servers
Performance and
caching
Frontend performance
• CSS
• Sass and Compass optimized
• Targeted - only load what’s needed
• JavaScript
• Linted, strict standards
• In the footer (non-blocking)
• Global objects (less is more)
Frontend caching strategy
• Editorial 1 minute publish to live
• Ensure cacheable headers are set
• Shorter TTL on Akamai than Varnish
• Ex: 5 minutes on Akamai, 10 on Varnish
• Send purges on publishing
Backend performance
• Eliminate PHP errors
• Cache, EXPLAIN custom queries
• Minimize unnecessary overhead
• Module count
• Benchmarking
Performance testing
• Load test production with migrated data
• blitz.io
• New Relic for introspection
• Exercised different content types, exceeded
TTLs
• Front-end testing
• WebPageTest.org
Questions?
Thank you!

More Related Content

PDF
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
PDF
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
PDF
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
PPTX
Bringing DevOps to the Database
PPTX
Urbanesia - Development History
PDF
Migrate for Site Builders from MidCamp 2016
PPTX
Content Migrations: Getting from A to B
PDF
Phase2 Large Drupal Multisites (gta case study)
Building Enterprise Grade Front-End Applications with JavaScript Frameworks
DownTheRabbitHole.js – How to Stay Sane in an Insane Ecosystem
Labels Magic: Getting Labels to Work for Your Confluence Deployment - Atlassi...
Bringing DevOps to the Database
Urbanesia - Development History
Migrate for Site Builders from MidCamp 2016
Content Migrations: Getting from A to B
Phase2 Large Drupal Multisites (gta case study)

What's hot (20)

KEY
SSJS, NoSQL, GAE and AppengineJS
PDF
Drupal 7 for Government Case Study: Presentation at DrupalCamp Montreal 2012
PDF
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
PPTX
Drupal7 an introduction by ayushiinfotech
KEY
Dibi Conference 2012
PPTX
Scaling High Traffic Web Applications
PPSX
Olympya web-tools 2011
PDF
Modern javascript
KEY
Drupal distributions to build a platform
PPTX
Drop acid
PPTX
Be faster then rabbits
PDF
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
PPTX
SD PHP Zend Framework
PDF
Orchestrating MySQL
PDF
The Alfresco Platform
PDF
Intro to SharePoint 2010 development for .NET developers
PDF
Drupal 8 - A Brief Introduction
PPT
Ruby Setup
PPTX
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
PPTX
How NOT to get lost in the current JavaScript landscape
SSJS, NoSQL, GAE and AppengineJS
Drupal 7 for Government Case Study: Presentation at DrupalCamp Montreal 2012
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Drupal7 an introduction by ayushiinfotech
Dibi Conference 2012
Scaling High Traffic Web Applications
Olympya web-tools 2011
Modern javascript
Drupal distributions to build a platform
Drop acid
Be faster then rabbits
[Rakuten TechConf2014] [C-2] Big Data for eBooks and eReaders
SD PHP Zend Framework
Orchestrating MySQL
The Alfresco Platform
Intro to SharePoint 2010 development for .NET developers
Drupal 8 - A Brief Introduction
Ruby Setup
OSH01 - Developing SharePoint Framework Solutions for the Enterprise
How NOT to get lost in the current JavaScript landscape
Ad

Similar to The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcamp 2015 (20)

PDF
DrupalSouth 2015 - Performance: Not an Afterthought
KEY
Drupal at the EBI
PDF
MIGRATION - PAIN OR GAIN?
PDF
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
PPT
IWMW 2003: b8 implementation of a commercial content management system
PPTX
Large Scale Drupal - Behind the Scenes
PPTX
Zero to Sixty with Oracle ApEx
PDF
Drupal 8 deeper dive
PDF
Drupal Site Audit - SFDUG
PPTX
Using WordPress for leading local newspaper websites
PDF
UNC CAUSE 2010: Drupal BOF Presentation
PDF
ECS19 - Katja Jokisalo - Modernize your Intranet
PPT
5 Common Mistakes You are Making on your Website
PDF
USG Summit - September 2014 - Web Management using Drupal
PPTX
Greenfield Java 2013
PPTX
Play Architecture, Implementation, Shiny Objects, and a Proposal
PPT
Phase2 - Large Drupal Multisites (GTA Case Study)
PDF
Last Call Media Drupal 8 Case Study
PDF
How to audit Drupal Sites for performance, content and best practices
PPTX
72d5drupal
DrupalSouth 2015 - Performance: Not an Afterthought
Drupal at the EBI
MIGRATION - PAIN OR GAIN?
Shift Remote: JS - Javascript Build Tools: Past & Beyond - Shedrack Akintayo
IWMW 2003: b8 implementation of a commercial content management system
Large Scale Drupal - Behind the Scenes
Zero to Sixty with Oracle ApEx
Drupal 8 deeper dive
Drupal Site Audit - SFDUG
Using WordPress for leading local newspaper websites
UNC CAUSE 2010: Drupal BOF Presentation
ECS19 - Katja Jokisalo - Modernize your Intranet
5 Common Mistakes You are Making on your Website
USG Summit - September 2014 - Web Management using Drupal
Greenfield Java 2013
Play Architecture, Implementation, Shiny Objects, and a Proposal
Phase2 - Large Drupal Multisites (GTA Case Study)
Last Call Media Drupal 8 Case Study
How to audit Drupal Sites for performance, content and best practices
72d5drupal
Ad

More from Jon Peck (9)

PDF
Multiplier Effect: Case Studies in Distributions for Publishers
PDF
Built it, but nobody came: avoiding over-engineering
PPT
Creating a PHP Portal for Perseus Survey Solutions
PDF
The Great Consolidation: Entertainment Weekly Migration Case Study (DrupalCon...
PDF
Terminus, the Pantheon command-line interface
PDF
SANDcamp 2014 - A Perfect Launch, Every Time
PDF
Pantheon Launch Check Introduction Webinar
PDF
Drush for humans - SANDcamp 2013
PPT
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)
Multiplier Effect: Case Studies in Distributions for Publishers
Built it, but nobody came: avoiding over-engineering
Creating a PHP Portal for Perseus Survey Solutions
The Great Consolidation: Entertainment Weekly Migration Case Study (DrupalCon...
Terminus, the Pantheon command-line interface
SANDcamp 2014 - A Perfect Launch, Every Time
Pantheon Launch Check Introduction Webinar
Drush for humans - SANDcamp 2013
Optimize Site Deployments with Drush (DrupalCamp WNY 2011)

Recently uploaded (20)

PDF
WebRTC in SignalWire - troubleshooting media negotiation
PDF
www-codemechsolutions-com-whatwedo-cloud-application-migration-services.pdf
PPTX
nagasai stick diagrams in very large scale integratiom.pptx
PDF
An introduction to the IFRS (ISSB) Stndards.pdf
PDF
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
PDF
LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1
PDF
“Google Algorithm Updates in 2025 Guide”
PDF
Tenda Login Guide: Access Your Router in 5 Easy Steps
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PDF
Behind the Smile Unmasking Ken Childs and the Quiet Trail of Deceit Left in H...
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PPTX
ENCOR_Chapter_11 - ‌BGP implementation.pptx
PDF
Triggering QUIC, presented by Geoff Huston at IETF 123
PPTX
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
DOCX
Unit-3 cyber security network security of internet system
PDF
The Internet -By the Numbers, Sri Lanka Edition
PPTX
Job_Card_System_Styled_lorem_ipsum_.pptx
PPTX
Digital Literacy And Online Safety on internet
PPT
256065457-Anaesthesia-in-Liver-Disease-Patient.ppt
PPTX
CSharp_Syntax_Basics.pptxxxxxxxxxxxxxxxxxxxxxxxxxxxx
WebRTC in SignalWire - troubleshooting media negotiation
www-codemechsolutions-com-whatwedo-cloud-application-migration-services.pdf
nagasai stick diagrams in very large scale integratiom.pptx
An introduction to the IFRS (ISSB) Stndards.pdf
Vigrab.top – Online Tool for Downloading and Converting Social Media Videos a...
LABUAN4D EXCLUSIVE SERVER STAR GAMING ASIA NO.1
“Google Algorithm Updates in 2025 Guide”
Tenda Login Guide: Access Your Router in 5 Easy Steps
522797556-Unit-2-Temperature-measurement-1-1.pptx
Behind the Smile Unmasking Ken Childs and the Quiet Trail of Deceit Left in H...
Module 1 - Cyber Law and Ethics 101.pptx
ENCOR_Chapter_11 - ‌BGP implementation.pptx
Triggering QUIC, presented by Geoff Huston at IETF 123
Introduction about ICD -10 and ICD11 on 5.8.25.pptx
Unit-3 cyber security network security of internet system
The Internet -By the Numbers, Sri Lanka Edition
Job_Card_System_Styled_lorem_ipsum_.pptx
Digital Literacy And Online Safety on internet
256065457-Anaesthesia-in-Liver-Disease-Patient.ppt
CSharp_Syntax_Basics.pptxxxxxxxxxxxxxxxxxxxxxxxxxxxx

The Great Consolidation - Entertainment Weekly Migration Case Study - SANDcamp 2015