In 2011, we were faced with saving a website from disaster. The website was a massive collection of content, eCommerce, digital videos, Youtube channel data, and digital delivery of paid content. The current software running the site was horrible for the user and the administrator. Costs of running the site were also high due to licensing on the underlying servers. While labeled as a content management system, it was incapable of providing a blog feature without third party modules and the eCommerce solutions available were extremely poor. The software was DotNetNuke.
We knew another solution had to be found and we began a two week market research phase to look at every content management system and eCommerce solution that could fill the requirements for running the site. This was a non-biased review of open source, multiple platforms, and proprietary solutions. Open source solutions that were considered included: Wordpress, Joomla, Orchard, Magento, and Drupal. Commercial solutions were considered to include a custom developed website from a development company, Umbraco, CMS400 (now Ektron CMS), Volusion, Magento Commercial, and a few other expensive options.
The basic requirements for the website was to provide a means to manage the blog content, allow users to interact with the website (mostly in the blog), provide a flexible eCommerce solution with a good user experience, provide a way to protect digital content sold for on-demand and download, be mobile friendly, and lastly be more reliable than the faulty DotNetNuke.
At this time, Drupal Commerce for Drupal 7 was starting to gain heavy momentum and development was happening at a rapid pace. Reviewing Drupal Commerce and the flexibility that it offered matched or even surpassed many of the commercial offerings – a few with license fees over $20,000 USD. After two weeks of research, demos, and phone calls with sales people, we chose Drupal.
While having a very extensive background in software, database design, and software development, this was our first Drupal website. As often stated the learning curve of Drupal is very steep, but given our background picking up on the way Drupal works was not a problem.
The development of the new website took close to 10 months as we worked on it part-time while hiring two sub-contractors to develop the user experience and create layout artwork. The project had two large tracks of development: site construction and data migration. The existing website had two years of daily blogs at the start of the project and almost 3 years at the time of deployment. There were over 150,000 users, a database of close to 80,000 comments for the three years of blogs that were currently powered by Disqus, and some 3000 orders in the shopping cart. Customer purchase records were stored going back to 2009 along with access roles to online digital content. The data migration was a substantial portion of the work and it also was dependent upon the construction of the site (think content types, fields, and security roles). Being that DotNetNuke is a .NET based system, the data all resided in MSSQL.
Working in parallel, the construction of the Drupal components took place alongside the data migration work. Key modules that were used in the project include:
- Drupal Commerce
- Taxonomy Views
- Video Embed Module
The deployment of the website was a phased and scripted approach. We employed a custom install program, Drush scripts, and PHP CLI scripts to allow us to initiate a complete site migration with the execution of a master BASH script. Testing of this process took place many times to make sure that the site transition could occur at a planned downtime of the website of less than 24 hours to where all shopping cart transactions and interactions with the website could be halted.
Amazon Web Services was chosen as a hosting platform, and a complete architecture was built out similar to several Drupal Cloud hosting services. The website employs a load balanced set of Apache web servers, MongoDB caching servers, Gluster File System, and Amazon’s Relational Database Service.
The site transition was scheduled to happen over the weekend during the night. Work began at 1200 on a Saturday to begin shutting down the existing site, exporting the data from MSSQL to a temporary MySQL database, finally starting the migration scripts that would complete the process. In testing we were seeing execution times in the 8 and 10 hour range to complete; however, the testing environments were of lower capability than the planned production environment. In the production environment the migration was completed in 4 hours and the Drupal website went live by 1800 Saturday evening with the first shopping cart transactions taking place in less than three hours after the site launched. The site hit the ground running and never looked back. The DotNetNuke website was archived for safe keeping but never had to be used again.
Since then we have become heavily involved in Drupal, giving back to the community some of our work and helping others learn Drupal Commerce and the power it has to offer.