Goodbye Parse, Hello Heroku + mLab

Parse is a BaaS (Backend as a Service). Every mobile app (and many other kinds of software) are split into the frontend and the backend. In the case of a mobile app, the frontend is the mobile phone which the user interacts with. The backend is the server, which stores the data and does all of the computational heavy lifting.

3 years ago, when I started working on Ryde, Parse allowed me to focus almost 100% of my time on developing technology specific to Ryde. Instead of spending time developing systems like account management, database indexing, customer service tools, and a bunch of other things, I focused on the core technologies that make Ryde unique.

So I was dumbfounded when Parse announced that their service would be shutting down. To make matters worse, the announcement came less than two weeks after I had committed to launching Ryde in the App Store by March 14th.

Should I delay the App Store launch or push off the Parse migration? There were a lot of factors that I considered when making a call.

First and foremost was the final shutdown date: January 28th 2017. I had a full year before Parse was gone.

Another key factor was related to Parse Server, an open source version of Parse that the Parse team released as part of their shutdown announcement. With it Parse developers would be able to spin up their own Parse server, migrate their databases, and, voila, the app works. But the tools were still early in development. Github showed over 100 outstanding issues.

For these reasons I decided that I would hold off migrating as long as possible. This would allow me to keep my App Store promise to Ryde users while the Parse team ironed out the early bugs and rolled out new features. So I powered hard and kept on track for a March 18th App Store release.

Amazingly, Ryde went live in the App Store on March 10th. 8 days early! It was time for me to take a deep breath and assess the Parse migration situation again.

Around the same time that I was submitting my final build to the App Store I started receiving an elevated number of complaints from users about missed trips and weird data. When I looked into the problem I found some truly alarming numbers.

Starting on almost the same day as the Parse announcement my request failure rate began to climb. Between the end of January and beginning of March error rates for a crucial part of the ride tracking system went from 1% to 4%. Then, starting March 4th error rates suddenly jumped up more than 6x to 26%. This was, as we at Modeo like to say, a BFP (big fucking problem).

Even though every part of me was ready to end the crunch, I immediately turned my attention to the Parse migration. While sunny 70 degree days beaconed me through my window I was knee deep in deployment scripts, QA checklists, MongoDB manuals, and dirty diapers (babies don't stop pooping when you're in crunch mode).

Fortunately, the people over at Parse did an awesome job putting together migration tools. I had a development server up and running within a few days. It took just over 2 weeks to complete the migration. The Ryde server is now running on Heroku and the database is hosted by mLab. (I'll post an article with more detail on the migration experience in the near future)

Ultimately the Parse shutdown will be a good thing for Ryde. Not only did I learn a lot during the migration process, but it gives us a lot more control over what direction we decide to take Ryde. Keep on the lookout for Ryde 1.0.1 which is running on the new server. The beta release will be out tomorrow and I expect it to hit the App Store early to mid April.

If you're interested in working together on your Parse Server migration, let me know!

Finally, time for a ryde...