I recently had the opportunity to catch up with Alex Brdar and Minesh Patel, Principal and Senior Technical Architects at Razorfish in London, to discuss their use of MongoDB in a project to build Yonderbound’s new global online travel marketplace. The provided some great insight into agile development and how to get started with MongoDB - read on to hear their story
Tell us a little bit about Razorfish.
Motivated and inspired by what's next, Razorfish helps its clients navigate the unknown, drive change and transform business. One of the pioneers of marketing in the digital age, Razorfish has a unique blend of technology, creativity and media at its core. The agency’s world class capabilities in strategic consulting, experience design, brand building, technology platforms, data services, retail/commerce and media services enable transformational work for clients including Delta Air Lines, McDonald’s, Mercedes-Benz USA, Microsoft, Nike China, Unilever and Uniqlo. Razorfish’s team of 3000+ experts spans 19 regions, including Australia, China, Germany, Hong Kong, India, Japan, Singapore, the United Kingdom and the United States.
Can you provide an overview of the project for Yonderbound?
We worked with our client Yonderbound to create a socially shareable trip-planning tool designed to shake up the online travel booking industry, carrying an inventory of nearly 400,000 hotels. Yonderbound allows users to custom-build a personal ‘Yonderbox’ planning tool - similar to a scrapbook - that helps them plan their holidays. Users can build a Yonderbox for each trip they are planning, adding photos, bookmarking their favorite hotels, adding notes and collecting links to attractions or events. Accessible from mobile devices, Yonderbound also enables users to share their Yonderboxes on Facebook and allows them to make recommendations and write reviews.
How is MongoDB currently being used?
In the first phase of the project, MongoDB is managing user profiles, the hotel asset catalog and travel bookings. As the platform grows, MongoDB will also be used to support flight bookings and travel insurance, as well as the sharing of travel experiences and reviews across the Yonderbound community using social media. To provide more travel choices, Yonderbound will also allow its customers to book directly with independent hotel properties, bypassing central travel agencies. MongoDB will also support this functionality.
Yonderbound is a data-driven company and uses MongoDB for managing operational data as well as for analytics, reporting and visualization of user behavior - much of which is captured as unstructured data - and bookings performance.
Why did you select MongoDB for this project?
We needed a database that would support our creativity and Yonderbound’s vision, rather than inhibit it. We knew that time to market was critical, but that the platform would also need to evolve rapidly to accommodate changes in business requirements and the addition of new features.
As a greenfield project, we were free to choose whatever database we felt would best meet the needs of Yonderbound. We have extensive experience of relational databases and other NoSQL stores, but felt that MongoDB provided the best option for the Yonderbound platform.
And did you feel you made the right choice?
Absolutely, yes (or we probably wouldn’t be talking to you!)
It was empowering for our development teams to never have to move back delivery dates or say “no” when new requirements came in. MongoDB accelerated our development cycles. With no object mapping to worry about, it was easy to modify existing functionality without breaking the data model.
As a travel marketplace, support for location-awareness is critical, and MongoDB offers better geospatial functionality than any other NoSQL database.
MongoDB replication is simple, enabling the site to achieve continuous availability without administrator intervention. The flexibility of replica sets is also a huge bonus - we can create hidden replicas against which reporting and analytics can run, without impacting operational performance.
As the site grows, we know MongoDB sharding is very flexible and easy to implement, so we have no fears about meeting the demands of Yonderbound’s rapid growth.
We know the MongoDB is the most widely adopted NoSQL platform, with the largest community and broadest available skill set. This gave us a lot of assurance we were making the right choice.
The availability of MongoDB Subscriptions means we know we can get access to support and advanced security features from the creators of the database when needed. The availability of multiple hosted MongoDB-as-a-Service offerings also gives us choice in the future.
Describe the experience of getting started with MongoDB
We come from relational database backgrounds - mainly Oracle. We found the learning curve to be pretty simple. Many concepts from the relational world map to MongoDB. There is also a ton of resources available online, including the excellent documentation and tutorials.
The effect has been for us to become productive building high quality, highly scalable applications much faster with MongoDB than other databases we could have chosen for this project.
Can you share best practices for performance tuning of MongoDB
Make use of the great range of tooling - mongostat and mongotop especially are your friends in understanding what MongoDB is doing under the covers. Also, make full use of MongoDB’s rich indexes, mapping them to common query patterns. Its much more effective than throwing hardware at the database when scaling query performance
What advice would you give someone who is considering using MongoDB for their next project?
It’s so easy to start getting your hands dirty with MongoDB - download and away you go. But take the time to visit your local MongoDB User Groups - we attend the sessions in London and they are hugely informative, both through presentations and speaking with members of the community over a beer and pizza.
As we’ve already mentioned, the online documentation and tutorials are awesome. The mailing lists and Q&A sites are also incredibly helpful.
There is masses of flexibility in the topology you can deploy for MongoDB, so study the options around replica sets and sharding - even if you don’t need to shard initially, make sure you give consideration to possible shard keys during your application design.
Do you have plans to use MongoDB for other applications? If so, which ones?
MongoDB is already being used for other projects in Razorfish and we will definitely be using it in the future as well.