Pushing Drupal To The Edge And Beyond

Lonely Planet is one of the most respected names in travel the world over. They provide extensive resources for travelers—including their renowned guide books, trusted web content, popular mobile apps, and a thriving online community (Thorn Tree).
 

Due to the volume of content that had accumulated over a decade of legacy platform use (millions of content items), this was a complex and time-consuming project. Axelerant team members helped familiarize Lonely Planet’s team with Drupal 8 migration best practices and worked to streamline the process.

Services: Migration Technologies: Drupal 8 | ReactJS | GraphQL Platform: Acquia Cloud
Axelerant Lonely Planet
Why Drupal was chosen: 

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 API 04. Migration API in Drupal
Drupal’s flexibility with various types of content modeling approaches made it a great choice. Axelerant was able to leverage Paragraphs and related modules to provide a better editor experience and content modeling. Another well-known application of Drupal is as the content repository for frontend applications. Axelerant chose the same approach, and the Drupal backend was used as a content repository for the frontend 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.

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 in-house 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 in-house 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.

Describe the project (goals, requirements and outcome): 

Solution

The new website had a decoupled setup. The frontend 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 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. 

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 speed by avoiding migration deadlocks.  

Our team 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 service helped them manage oscillating 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

  • Complex Content Migration

  • GraphQL Plugins Implementation

  • Acquia Cloud Deployment Support


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 that 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 in-house team members resolve their queries and clarify concepts, enabling them to have a smoother transition to Drupal.


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.

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.
 

Technical specifications

Drupal version: 
Drupal 8.x
Key modules/theme/distribution used: 
Organizations involved: 
Project team: 

Mohit Aghera - PHP/Drupal Architect - L1
Ashish Prabhakar - PHP/Drupal Engineer - L3
Sreenivasan Kasi Viswanathan - Director of Customer Success
Hussain Abbas - Director of Drupal Services
 

Sectors: 
Travel and Hospitality