How to Migrate from Parse (Part 1, Migrating Data)

Parse announced that on January 28, 2017 it will be shutting down it’s backend service. Like many others, Go Nimbly has developed apps on the Parse platform. So what does that mean? It means that any products built on Parse would need to be migrated to another solution.

At Go Nimbly many of us bike to work and Ryde is our tracking app of choice. So when they wanted to migrate from Parse’s hosted service to a Parse Server hosted on Heroku, we shifted into high gear. A Parse Server hosted on Heroku will give many of Parse’s advantages without sacrificing customizability or scalability.

Spoiler: Since migrating, request failure rates are down by 99%. Response times are down by 50%. And customer satisfaction is at an all-time high.

There is a ton of great documentation out there on how to do the migration, but we ran into some blind spots along the way. So to make things easier for you, we put together this guide on setting up a Parse Server instance on Heroku. This will be a three-part series.

  • Part 1: Migrating your data
  • Part 2: Setting up a server
  • Part 3: Migrating your code

Getting Started

I will show you how to host your Parse Server with Heroku and your database with mLab. Both are industry standard solutions with reputations for reliability and ease-of-use.

That being said, there are other solutions available. If Heroku or mLab isn’t a great fit for your project — this guide will still provide helpful information.

Keep in mind that migrating your data is the riskiest part of the entire process. Do not attempt to migrate your production app without testing the process with your development app first.

Set Up MongoDB with mLab

1. First, you’ll need an account with mLab. When you create an account they’ll send you an email. Make sure you click the link in the email confirmation before you can move on to the next step.

2. Click the “Create New” button to create a new MongoDB database.

3. Choose Amazon Web Services hosted in the US-east region.

4. Choose a plan. Since this is a development server, a Single-node Sandbox plan will do.

5. Give your new Database a logical name. We’ll call ours go-nimbly-dev.

6. Click “Create a new MongoDB deployment”.

7. Once your database is ready, click it (it may take a minute or two to show up).

8. You will now see the database management page for your new database. Click the user’s tab and then click “Add database user”. Give the user a name and password.

9. Now copy and paste the MongoDB URI at the top of the page into a notepad. Replace <dbuser> and <dbpassword> with the username and password you chose for your DB. You’re going to need this URI a few times.

Now your MongoDB instance is ready to receive data from the Parse hosted service.

Migrate Data From Parse

1. Log in to your dashboard at Parse.com.

2. Click the app that you’re going to migrate.

3. Click App Settings and scroll down to the bottom of the General page.

4. Click the “Begin the migration” button.

5. Copy paste the URI from the previous section.

6. Click begin migration. At this step you’ll see a warning about SSL. Unfortunately mLab only supports ssl=true for dedicated plans. Since you’re on a sandbox plan click “Migrate anyway”.

7. Watch the pretty colors change while your data is moved from the Parse hosted database to the mLab database.

8. After the migration completes, double check your counts. In the Parse Dashboard, click “browser”. Here you will see the count of all objects of a given class. In the mLab database management page click the Collections tab. The number of documents in mLab should match the number of objects next to each class in the Parse Dashboard (except for any new objects that were created between clicking “migrate” and now).

9. Cross check a few objects to make sure the Parse Dashboard matches your mLab DB. Pick a collection in your mLab DB that is also visible in your Parse Dashboard (like User or Installation).

10. Copy the _id property of an object in mLab and paste it into the filter dropdown of the Parse dashboard. This will allow you to compare a specific object in mLab to the same object in Parse. Make sure they match.

Repeat steps 9 and 10 for a few objects in each of your app’s classes.

11. If everything looks good click the “Finalize” button in the Parse Dashboard.

At this point, two important things happen. 1) Any objects that were created during the migration process are copied over to your mLab database. 2) This Parse app will now point to your mLab database instead of Parse’s hosted database.

Take this time to click around in your app and make sure things are still snappy and functional. Is it? Great!

You’ve now completed the riskiest part of the process, so give yourself a pat on the back. Though there is still more to come.

Next Steps

Your development app is now migrated, but it is imperative that you migrate your production environment ASAP.

In order to migrate your production app, you will need to follow this guide one more time. But instead of choosing mLab’s Sandbox plan, you’ll need to select the plan that is best suited for your app’s needs. Ryde has a few hundred users, so a $15 a month plan was sufficient.

If your app has high traffic volume, requires lots of storage space, needs exceptional performance, has complex queries, or you have questions about choosing a plan — then your team could benefit from speaking with an expert at Go Nimbly.

Join us for the next part of this guide where we’ll get your Parse Server up and running on Heroku.

Go Nimbly is the premier marketing and sales consultancy for SaaS companies. Founded and headquartered in San Francisco, Go Nimbly provides customers with a customized team to manage everything from strategy to execution for their marketing and sales systems. To learn more, visit gonimbly.com.