Dec 14, 2012

Parse Platform for Mobile apps

Parse is platform designed to offer a highly configurable backends that can be integrated with mobile apps and JS apps as well. This type of service is known as Backend as a Service, or BaaS for short. These services provide you with a package of backend storage and other functions that can be leveraged from your app, usually with a handy library on a variety of platforms (Android, iOS, Win, JS) to make integration nice and easy.

Parse stands out for being one of the the easiest and fastest backend services to work with, as well as having the best documentation. The documentation is easy to understand, as well as being comprehensive. Generally, it will take you less time to start uploading objects to Parse than any other service. Parse offers most of the features that you’d expect from a backend service provider, including the following:

Custom Objects: This is the ability to create custom objects from the app itself without the need to define a schema first, each object type is defined as a Class. The app will be able to access these objects and query them similar to a DB. The Parse SDK provides an easy way to take this data from object format, and store/retrieve it from the central database.

Users: Parse provides the logic to create and authenticate users right out of the box. These users can even be integrated with Facebook/Twitter so that the user doesn't need to create a new account. These users can be used later on to authorize read/write operations on any object class using Access Control Lists (ACLs).

Push Notifications: This is the ability to send a push notification to all your users, or to a selective subset of your users. In Parse, sending notifications is done from the Web Console, the REST API, the Cloud Code or even triggered by the existing client SDKs.

Social Integration (Facebook / Twitter): Additionally to having your own users storage, you can also enable the user to login through Twitter or Facebook. The SDK will take care of the OAuth process and even cache the credentials while still using the same ACLs for authorization and security.

Files: In addition to storing plain old data, sometimes you need to store files -- such as images, large documents, and the like. Parse will provide file storage that you can use to associate a file with a custom object.

Geolocation: In mobile apps, it’s often useful to be able to perform queries of objects near a certain location. Parse provide the ability to tag your objects with a specific location so the user can make queries on objects based on location.

A nice thing about Parse is that it has sample projects that you can download, as well as custom UIViews that you can add to your project, such as Facebook and Twitter login views. Additionally, there is a large collection of 3rd party libraries offered for use with the service. For example, integration with Twilio to send SMS messages from a mobile app.

The free plans that Parse offers are very good and offers enough capabilities for a small app. However, it's worth to mention that the price does seems to ramp up more quickly than other services if you exceed your free allocation.

Is Parse the right choice for my project?

Advantages

Good features, pricing, and excellent documentation when compared with similar BaaS companies.

Custom UIViews that you can add to your project, such as Facebook and Twitter login views.

Several sample projects that you can downloaded for reference and as a quick start. (FB authentication, file storage, push notifications, object-level security, geolocation).

A large collection of 3rd party libraries offered for use with the service. For example, Twilio, Mailgun, SendGrid integration.

New attributes can be added to a particular object class at any point.

Ability to export all data stored in Parse to a zip file as JSON files (For stored files, an URL is provided on the attribute).

Importing Data: In addition to the REST api, data can be imported to the backend through CSV files.

Abstracts most of the complexity of Push notifications.

Scalability is handled for you.

Disadvantages

Not suitable for projects that require to handle complex logic on the server side. For example, each operation might affect many different classes.

Data Type Lock-in. Once the first object has been created, its field are locked into the particular type that was saved. For example, if a User object is saved with field name of type String, that field will be restricted to the String type only. One special case is that any field can be set to null, no matter what type it is.

While the free plans are very good, the price could ramp up more quickly than other services if you exceed the free allocation.