I thought we were cool Facebook. I thought you had my back(end).
Okay so that title might be a tad dramatic, but the truth is tons of developers, especially indie developers, really relied on Parse as a backend for their apps. While Facebook has announced that the service will remain active for about a year, many of us were caught off guard and now have some real thinking to do about where to go from here. Parse was a pretty great deal, offering push notifications, server-side code, social integrations, and analytics, all with transfer rates up to 30 requests per second for free. Something that always concerned me about the service, at least since Facebook acquired it in 2013, is that it seemed to be too good to be true for free. That seemed to be an awful lot of functionality. I wondered what the catch was. Apparently it was time.
Now that Parse is leaving the scene, where do we go from here? For months, when asked about a backend solution by other iOS developers, I have recommended investigating CloudKit as a possible alternative to Parse. In many ways Parse was a more mature and more robust product, but I thought one if its biggest weaknesses was, that while I thought it was unlikely, it could go away at any time. I was very skeptical about CloudKit in the beginning. Very, very skeptical. I may write about it some other time, but my experience with having faith in Core Data with iCloud left me in a pretty bad place and I’m not fan of repeating my mistake of relying on a service that the provider doesn’t rely on as well.
One of the reasons I like CloudKit is that Apple is running their own services on it. Big visible services like Apple Photos. The advantage of this is abandoning it would be even more painful for Apple that it would be for me. I appreciate that. One of the strengths of CloudKit is also one of its weaknesses and that’s privacy. From a customer’s perspective CloudKit is a lot more private because the developer doesn’t have access to the customer private database. That means if CloudKit were to pull a Parse and vanish, there would be no way to migrate any private data to a different system. Parse offered a way to export the data from the very beginning. With CloudKit you’re locked in. That worries me, but not very much.
CloudKit is still lacking in some major ways though. I hope in the near future we’re able to run server-side Swift code on CloudKit. I’d also really really like an alternative to the public database (the entire world can see it) and the private database (only the user, not even the developer can see it). It would be great to have either groups or custom zones in the public databases that allowed a specified set of users to share data. I would like a bit more flexibility with push notifications as well, but that’s less of a big deal to me than server-side code and groups.
Of course there are other options, from hosting your own backend to finding a paid-hosting solution. Free services scare me. I don’t understand how they are able to survive in the long run. So I’d be weary of those. In a way I guess Apple is providing CloudKit for free. But I can clearly see how Apple could afford to keep it going for many lifetimes without batting an eye. For one, only paid developer accounts can use it, and we’re paying $99/year which is pretty much all margin.
In this post-Parse era, I’m sticking with CloudKit for the foreseeable future. What are you guys doing?