Customer:

Lonely-Planet-Logo

 

Industry:
Media & Entertainment

 

Services:
Migration

Technologies:
Drupal 8 | ReactJS | GraphQL

 

Platform:
Acquia Cloud

 

 

Pushing Drupal To The Edge And Beyond

With millions of content items that needed to be migrated to Drupal, this was a complex and time-consuming project. Axelerant team members helped familiarize the customer’s team with Drupal 8 migration best practices and streamline the process.


 

About the customer

Lonely Planet is one of the best known names in the world. They provide extensive resources for travelers to destinations all around the world, including their famed travel guide books, web content, mobile apps, as well as a thriving online community of travelers    (Thorn Tree).
 

#1

global guidebook
publisher

3M

guides apps
downloaded

13M

monthly
visits

 

Business challenge

Lonely Planet needed to upgrade their legacy website, which was over a decade old and had been custom built on Ruby on Rails. They were facing multiple issues with caching and site scalability. The solution they had decided on was streamlining and migrating to Drupal 8.

They had narrowed it down to Acquia Cloud. The next step was to migrate their highly custom platform onto Drupal and Acquia.

While they had an experienced inhouse team to carry out the migration, this team was completely new to Drupal.

They had defined clear goals along with a project roadmap, and were looking for a reliable partner to help them achieve these goals. This partner needed to have demonstrated experience executing complex Drupal migrations, as well as substantial expertise in Acquia solutions. They would help to further extend Lonely Planet's inhouse team by providing additional engineering skills.

Axelerant was chosen for its proven capabilities around Drupal and Acquia products, extensive experience migrating older sites to Drupal 7 or 8, and community contribution record.


Why Drupal?

Drupal was the best fit in this case for a number of reasons:

01. Granular Content Architecture Management


02. Dependable Application as Content Repository


03. GraphQL to Build the API04. Migration API in Drupal

Drupal’s flexibility with various type of content modelling approaches made it a great choice. Axelerant was able to leverage Paragraphs and related modules to provide a better editor experience and content modelling.

Another well known application of Drupal is as the content repository for front-end applications. Axelerant chose the same approach, and the Drupal backend was used as a content repository for the front-end React application.

As this was a high traffic application, we leveraged GraphQL to build the API. We were also consuming APIs from other internal systems, so GraphQL schema stitching was used to combine other APIs into Drupal’s GraphQL API.Drupal’s versatile migration API was another key reason for the migration. The Migration API in Drupal helped the team to properly migrate data from its source to the Drupal system.

 

Solution

The new website had a decoupled setup. The front-end was powered by ReactJS, and Drupal was used to deliver the data using GraphQL.

Axelerant team members helped onboard the customer’s team to Drupal. Apart from helping to write code and set up technologies, Axelerant team members also provided consultative support—helping to familiarize the team with Drupal best practices, guiding them in identifying the best possible approaches to implement features, etc. We do this to offer a maintainable and performant system.

We also helped the customer’s team to set up a production environment and manage it.

With Axelerant’s support, the customer’s team was able to gain hands-on experience in Drupal, and leverage the platform in the most effective way.

 

Development and Migration Best Practices

Considering the huge amount of content that needed to be migrated, it became essential to follow development and migration best practices.

For example, we needed to define the proper order for the migration, with the right dependencies, so that everything would be executed in the proper order. By doing this, we were able to optimize certain aspects and speed up the migration.

But for the most part, the time involved to execute this couldn’t be reduced because of the sheer volume of content.

We also helped to refine and optimize the content migration process to increase migration speed.

Some development work involving GraphQL helped us to expose Drupal data to ReactJS. This was a challenging aspect that also helped speed up the performance of the website.

For the duration of this engagement, we worked on migration only. With a project of this scale, the main risk is related to migration performance, which was really slow due to the millions of content items.

Axelerant team members were able to help the customer’s team by sharing relevant knowledge around optimizing performance in Drupal. This helped them resolve performance issues and improve the speed by avoiding migration deadlocks.  

We also suggested some changes to the overall site architecture so that content could be optimized. For example, if the content is not architected properly, it takes time to render. We helped them to optimize the content architecture, so that content fetching and content rendering could be faster.


 

Results

Part of the new system was launched successfully. At the close of the engagement, the customer’s team had completed a small migration from their WordPress based portal to the Drupal site as part of their consolidation efforts. Following this, they were in the process of migrating the data.


With this engagement, our team was able to support the customer through a massive technology shift. Axelerant’s managed staffing offering helped them manage changing staffing requirements, brought on by changes to their tech stack. Ultimately, we helped them onboard effectively to a new, more suitable technology, expediting their migration to Drupal on Acquia Cloud.


 

Project Highlights

Block Tabs

Uniquely Complex Drupal Content Migration

For various reasons, this migration project was more challenging than usual.

High Volume of Content: Having been well established in the travel industry for over 40 years, the customer had a huge amount of data which needed to be migrated—approximately 4 million data items spanning across destinations from around the world, places of interest, accommodation options, reviews, etc.

This made the scale of the project enormous and the migration quite challenging. It also meant that the migration would run for long periods of time, up to 48 hours at a time.

Because of this, this project really pushed Drupal to the limits of its capability—which isn’t really typical of most enterprise projects.

Content Resided in Multiple Systems: The website content was scattered across multiple systems. Some data was in WordPress and needed to be migrated into Drupal, along with data directly from the database or other JSON API sources.

The Customer’s Team Was New to Drupal: The team was in the process of learning how to work with Drupal. Some team reorganization was also in progress, with a few team members leaving the organization.

Senior team members from Axelerant who were brought on board for the engagement were able to help the inhouse team members resolve their queries and clarify concepts, enabling them to have a smoother transition to Drupal.

Geographically Distributed Team: The customer’s team had some team members working out of North America and others in Europe. Scrum calls would be held late in the evening for Axelerant team members. This posed a challenge, but the team solved it by having team members attend on alternate days or on staggered days through the week, enough to remain in sync with each other.

Also, cultural differences introduced some differences in team members’ working styles—for example, in styles of communication. We handled this internally by providing oversight via our life coach and engineering managers, so that our team members felt supported and empowered to handle such situations more effectively.

GraphQL Plugins Implementation

As we were using Drupal as a content repository, we decided to use GraphQL as an alternative to the usual JSON:API or REST API.

Typically, Drupal’s GraphQL module supports queries for Drupal’s entities. However, we also wanted to include new fields in GraphQL which were retrieved from the other internal APIs.

By using GraphQL’s plugin API, we were able to pull the data from other systems as well.

Acquia Cloud Deployment Support

As the Lonely Planet team was moving from their self managed hosting to Acquia Cloud for a more streamlined deployment process, we helped them to establish deployment processes along with environments related to the production deployment. This included configuring the production environment for the deployment, as well as the related tool and process setup that was needed on the live site.