Upgrading a large v7 site with zero downtime

The Problem

  • Large site (over 100,000 nodes)

  • Lots of editors/journalists constantly in CMS

  • Needed to have no downtime

  • Editors needed access to CMS throughout

  • Legacy codebase

  • Uses v7 Data types which aren't in v8

  • Need to test the site extensively before swapping over

Our approach

  • Port code over from v7 and v8

  • Run 2 sites, both v7 and v8 versions simultaneously

  • Import meta data (doc types etc) using uSync

  • Upgrade doc types with new v8 data types etc 

  • Synchronise and convert the v7 content to v8 content in near real time

Solution Architecture

Breakdown

  • Whenever content or media is saved:

    • v7 site pushes IDs to a queue

    • Function picks up IDs from the queue and fetches  actual content from v7

    • Function converts content based on datatype

    • Function creates or updates content in v8 CMS

    • Function copies media from blob to new blob

  • Have button in v7 CMS to push all Ids to the queue if we need to resync

Benefits

  • No content freeze etc, Editors continue to use v7 CMS during development, testing and right up until launch

  • No downtime, we can just switch traffic manager to v8 site when it's ready

  • We can test entire v8 site using real content

Made with Slides.com