My Impressions After Using Parse.com BaaS

parseI recently used parse.com for the first time for use within an app on Android and iOS. I have always been cautious about using BaaS in production apps due to unknown service levels, uncertain longer term continuity, privacy issues and security concerns. However, this was an example of an app that didn’t have any of these concerns and needed the advantages of quicker and easier development. But did it turn out to be quicker and easier?

First the cost. The Parse.com free tier is generous and allows up to 30 requests per second and 20Gb storage. Unless your app is for a large brand or well known organisation, it’s going to be a while before you reach these limits. The long tail of apps will never reach them. If you do, you can probably afford the subsequent pricing.

Integrating Parse in Android and iOS, using the Parse Quickstart, was trivial. An added bonus was the relatively newer offline support. This allows you to cache data locally without having to define/manipulate a separate local database. More on this in a moment. The Parse API, without local caching, ‘worked first time’ on both iOS and Android with no gotchas or issues.

The main problem with some BaaS, but not Parse, is that while it’s easy to get data in, there’s usually no or poor facility to browse database data as you can with RDBMS tools. The web UI at Parse.com allows you to view and modify data but this is more oriented towards developers than it is for general CRUD performed by operations or client staff. More on this also, in a moment. The Parse database automatically adds useful createdAt and updatedAt timestamps to rows that are especially useful for testing.

The offline support saved significant development time, enabling offline data for free. However, it took some effort to get right. If you want to use this yourself, the section ‘Providing Complete Offline Support’ on the codepath.com web site describes the idiomatic, asynchronously driven, way apps need to pin saved data in order for it to be available both remotely and locally.

On iOS there’s a useful PFQueryTableViewController that saves lots of coding. Fresh tilled soil has a useful tutorial how to use it with Swift (as I was doing).

While I was developing, I was invited to a new service called Adminca that can be used to create Admin panels for Parse databases. This allows you to separate developer and support/client concerns. Adminca is still very rudimentary but I can see how useful it will become as new features become available.

I came away impressed with Parse. It saved a considerable amount of effort and time. This and the the presumed longer-term continuity through being owned by Facebook, means I’ll be giving it more serious consideration for future apps.