Parse.com announced on January 28th that they will be shutting down. Although this is disappointing news, the way Parse is handling the shutdown is exemplary. They are giving their customers one full year’s notice before they shut down their services, they have open-sourced their core technologies and all of their SDKs, provided a series of guides on how to move applications over to replacement service providers, and provided tools to assist in those migrations. In theory, it should be possible to move an app from Parse.com over to other providers with minimal downtime and minimal code changes. My testing so far has shown that theory to be correct.
I’ve completely moved only one of my systems so far, but the transition was indeed very straightforward and relatively simple. After spending some time to get familiar with the Parse server code, the actual time required to make the few changes necessary to my code was very small. My new Node.js server is based on the example parse-server-example GitHub code, but the server is just a very basic, standard Node.js server plus any Cloud Code and any static HTML files. All the Parse.com features are provided by the open source parse-server Node module.
The example server code required only some minor customization and configuration changes (and a small fix of a server bug) to be functional. My iOS and Android apps needed an update only for the new REST server URL, and my Parse Cloud Code needed only a few very minor security-related changes. My database needed no changes although I did have to create some maintenance and backup scripts for the new database host. Add in some testing time and that was all the effort it took.
The following are the service providers I chose. In each case, the vendor offers a free plan that provides decent capacity and also offers a series of reasonably-priced paid plans to scale up when the need arises. I already have other systems on these providers and I am happy with them.
- Node.js Server host: Heroku.com, although I am still considering using MS Azure
- MongoDB Database host: mLab.com – this is MongoLab.com with a new name
- Email service: Mailgun.com – I am currently using this just to send registration confirmation and forgotten password emails
- Notifications: N/A – I was just about to release an update to this app that included notifications when Parse announced their shut down so I decided to hold off on that for now. I may handle notifications myself, leveraging the open-sourced parse-server-push-adapter, or I might use one of the other available services. If I do move the system to MS Azure, Azure Notification Hubs is also a very good option.
There is one bright spot with these changes: because the Parse server is now open source, I can much more easily extend the services of the RESTful server and provide additional functionality when I need it. I still love the ease with which I create a system using the Parse platform — see this post for details — and I love all the features the Parse platform gives me out of the box and the ability to use Cloud Code for simple server-side code. However, one concern I always had with a Parse-based solution was that Parse’s Cloud Code could only go so far, so while it was fine for smaller or simpler systems, Parse never seemed like a good option for larger or more complex projects. With these changes, I now have full access to a real Node.js server while still being able to use the Parse “wrapper”, thus giving me the power to quickly start with a simple, “2-tier-like” system but easily grow into a more powerful system as necessary. If Cloud Code alone is not sufficient, I can now create standard RESTful services using normal Node.js code, and thus have infinite capability.
I’m still not thrilled with Parse.com shutting down — we are losing a nice, effortless, single-vendor solution and replacing it with the need to juggle multiple services and service providers — but perhaps the longer-term benefits outweigh the losses. Perhaps this is now the best of both worlds: we can start a system quickly and simply, but have no real limits on where and how far that system can grow.
Parse.com may be dead, but long live Parse Server!