The MapMyFitness customer base has at least doubled every year since it was founded in 2005, and its data volume fluctuates in a predictable pattern each year. This combination of high growth and unpredictability creates some challenges for the company.
Jesse Demmel, VP of Engineering at MapMyFitness, says...
Every year, we are growing at a rate of 2.5x in terms of the data that we have to support. Our traffic is very cyclical: summer is our peak, and it starts trickling down during the fall until it gets to holidays and picks back up with New Year's resolutions. We're at least doubling page views and mobile sessions year over year, on top of increased user engagement.
MapMyFitness started off using MySQL databases, which currently average more than 9,000 queries per second (and spike at twice that volume!). Now, the company is looking to MongoDB as a solution for cost effective growth.
The company first experimented with Cassandra, but Demmel says...
When we tried Mongo, it was just much simpler to get up and running, and much easier to get high performance out of it. It's a pretty simple database on the surface to get going, and when you want to fine tune it, it's got the ability to really get the performance you need. It's been very reliable for us.
Demmel added that classic rational databases scale vertically, and aren't cheap to do right.
It was a cost choice. You look at the company and how fast it's going to grow and where we're going to be in five years, ten years, and a vertically scalable solution like MySQL was pretty cost-prohibitive.
Demmel says the company was initially skeptical, believing they'd built a substantial amount of in-house Mongo expertise. They decided to give it a try, anyway.
The performance numbers spoke for themselves, Demmel says. Not only was the performance fantastic, but what it would cost us to do the same with dedicated hardware and maintenance made using the ObjectRocket solution a no-brainer.
Although it can be risky putting your data in the hands of a third party, Demmel says that ObjectRocket has been excellent at providing visibility.
They're good at training and helping us understand exactly how the environment's running, so that we could do it on our own if we need to later.