clever/you - thoughts about mobile

  • Archive
  • RSS
  • Ask Me

Parse / Facebook: What Now?

You’ve probably read that this week Facebook acquired Parse, the mobile BaaS service. I’ve been using Parse for quite a well in production, and if you’ve read any of my previous posts you’ll know I quite like the service (see here, here, and here).

So what now? Does Facebook acquiring Parse change anything? Well, if you go by the press releases, no - it doesn’t. But perhaps there’s more too it than that. What should you be doing if you’re either an existing customer (like me), or someone who’s been thinking of using the service? Here’s my own thoughts on the subject.

You Already Use Parse

A lot of what you do next is going to depend on your own gut feeling. Some people have quite a visceral reaction to Facebook - I’m not one of them. What I will say is that the last time Facebook bought something I used (face.com) they ended up shutting down the APIs. But Parse is considerably bigger, and more importantly is used by some sizable customers. I personally don’t see Facebook cutting them off - and I suspect new customers will be welcomed for some time as well.

The bottom line is this: whenever you use any third-party provider to manage critical infrastructure in your apps you’d better have an escape plan. Companies get acquired, go bust, or retire products all the time. This isn’t an issue unique to Parse. If you’re not planning for the worst you’re sowing the seeds for a big headache in the future.

Parse already offer a mass-export feature that gives you all your data in JSON. You can use this, along with the Parse APIs, to migrate over to another provider fairly easily (although some scripting on your part may be required). One provider (Stackmob, who I’ve reviewed here before) even have a semi-automatic migration tool available.

You’re Deciding on a BaaS Provider

Again, this is going depend on how you feel about Facebook. If you’re not a fan, you’ve probably already made your choice. Here’s my two cents: even if Parse keep supporting existing customers, it’s almost certain that at some point in the future the product is going to change in a fairly significant way. I don’t see Facebook gaining any value from running Parse as an entirely separate entity.

I really like Parse as a product - I’ve used it in several production apps. Would I use it now? I’m not sure. I don’t necessarily think any of the competitors out there (Stackmob, Appcelerator, Kinvey, Fat Fractal, to name a few) are any more secure. If anything, financially speaking Parse is now top of the pile.

So…what?

I appreciate I haven’t really provided many direct answers. One thing this should really re-inforce, regardless of your BaaS provider, is that you need a back-up plan. To help with that I’ll be posting a new backend-as-a-service comparison in the coming weeks, updated to take into account all the recent changes in the marketplace.

    • #parse
    • #baas
    • #StackMob
    • #facebook
    • #ios
    • #backend
    • #backend development
  • 3 weeks ago
  • 2
  • Permalink
Share

Short URL

TwitterFacebookPinterestGoogle+

(Update 27/4/12: since I wrote this, Parse have been acquired by Facebook. I’ve blogged about this here. StackMob have also changed their pricing policies, making a lot more of their services free to use. I’m writing an update to this post right now taking all of this into account!)

Parse Vs Stackmob - Round II

Parse and Stackmob are the pre-made pastry of the mobile development world: if your app needs a backend system to persist data you could build it yourself, manage the hosting, and support it. Similarly, if you’re looking to make a pie you could make the puff pastry yourself, a time-consuming process that isn’t exactly straightforward…or you could just go into the store and buy it pre-made off the shelf.

So if you’re a seasoned Objective-C developer but have no clue how to develop a robust, reliable back-end solution for your app you might want to consider finding something to do the heavy lifting for you. This is where Parse and StackMob, two popular ‘backend-as-a-service’ (or BaaS) providers come in.

A while back I compared both StackMob and Parse - in the five months since I wrote that post a lot has changed, so it’s time for another Parse vs Stackmob shoot-out! As always, I’m approaching both providers with iOS in mind, since that’s my background - however, most of what I’m looking at applies to iOS, Android, and mobile web alike.

If you’re still a little confused about this whole ‘backend as a service’ thing you might want to read my original comparison.

Parse: What’s New

In the last five months Parse has matured a lot - here’s some of the major improvements and additions:

Cloud Code

One of Stackmob’s biggest advantages was the ability to deploy and run code server-side code without requiring an intermediary host. This is one of those features that you’ll inevitably require at some point on your project, even if you don’t realise it yet. Custom server-side logic might be used for advanced validation, or triggering other actions.

With Cloud Code, Parse has taken a big step forward towards that goal: you can now create your own endpoints and hook into existing calls easily. That said, there are a couple of downsides:

  • Stackmob supports Java and Scala, whereas Parse only support JavaScript (in fairness, this is only a downside if you’re unwilling to pick up JS)
  • You can only use Parse’s Javascript SDK - nothing else

What does this mean? Well, you couldn’t create a piece of cloud code that called out an API on another system, for example. Hopefully this limitation will be removed soon. Another drawback of Cloud Code is the lack of a staging or development environment: whilst you could set up another application within Parse to test your Cloud Code it is far from ideal.

Other Additions

Parse has always had great documentation - this has been supplemented with a StackExchange like user questions section, which whilst at times slightly confusing (perhaps I’m being dense, but I couldn’t find a way to view all the questions I’d asked) is a welcome new feature. Other improvements include:

  • In-app purchase wrappers for iOS
  • Drastically improved JS SDK (for web apps)
  • Better control over push messaging (SDK only: the web interface is still a bit simplistic)
  • New PFImageView classes for iOS to assist with remote image loading, as well as new Parse-integrated view controllers (great for hackathons, maybe less useful for a highly customised app build)

StackMob

StackMob has also been busy making improvements:

Better SDKs

StackMob have radically re-thought their iOS SDK, and it’s heavily inspired by Core Data. In fact, you’ll basically be using Core Data to interface with StackMob. It’s a great way of doing things, although if you’ve got no experience with Core Data you might prefer the simple abstraction that the Parse SDK provides. With this new Core Data model comes background updating of objects, which is greatly appreciated.

As before, here’s the code you need to create an object, set a value, and update it:

Parse
PFObject *score = [PBObject objectWithClassName:@"Score"];
[score setObject:[NSNumber numberWithInt:1337] forKey:@"score"];
[score saveEventually];
StackMob
NSManagedObject *score = [NSEntityDescription insertNewObjectForEntityForName:@"Score" 
                                                       inManagedObjectContext:self.managedObjectContext];
[score setValue:[NSNumber numberWithInt:1337] forKey:@"score"];
[self.managedObjectContext save:nil]; // You'd normally do some error checking here

If you’re familiar with Core Data you’ll see straight away that StackMob is tightly integrated.

As always, StackMob’s SDKs are all open source, unlike Parse. This may or may not be of value to you - neither Parse nor StackMob’s SDKs are not without their bugs, and being able to dive into the source instead of waiting for a fix could save you valuable time.

Other Additions

The past five months have also brought some other incremental improvements to the StackMob platform, including:

  • Custom domains for hosted HTML
  • User roles and permissions
  • Push improvements (both SDK side and server side)
  • OAuth 2 support

Summary

If you were hoping for a decisive result you’ll be disappointed to know that yet again there’s no right answer as to which platform is ‘best’. Your choice will very much depend upon what’s important to you and your apps.

As before, on price Parse is the clear winner. Inexperienced developers will also appreciate the simplicity of Parse’s SDKs, but there’s no doubting the fact that StackMob’s Core Data powered iOS SDK is very powerful.

If you’re an indie developer, going to a hackathon, or looking for something to power your weekend project you’ll love Parse. Enterprise and commercial developers may be attracted to StackMob’s advanced server-side code functionality, and the distinct development/production environments on offer.

Regardless, I’d recommend trying both providers and coming to a decision based on what you’re more comfortable coding with and what features work best for you - with free tiers available there’s little reason not to.

    • #parse
    • #stackmob
    • #baas
    • #backend
    • #mobile
    • #mobile development
  • 7 months ago
  • Permalink
Share

Short URL

TwitterFacebookPinterestGoogle+

Parse & StackMob: Some Thoughts

(Update: Since writing this, Parse have been acquired by Facebook, which I’ve blogged about here. I’ve also posted a follow up to this which talks about some changes both Parse and StackMob have made to their platform - you can find the new post here.

I think Parse is great: I have said as much before - but I also wanted to know a bit about the alternatives that were out there. StackMob seems to be Parse’s main competitor: there are others around, but they are either rather small or part of a much bigger ecosystem (e.g., Appcelerator Cloud Services): Parse and StackMob have both staked their claim as the mobile back-end provider.

Outsourcing your app’s backend is quite a big decision: the last thing you want is your provider to disappear into the dead of night never to be seen again. In the interest of fairness I thought I’d do an objective comparison of Parse and StackMob - hopefully this will prove useful to those looking to use a cloud provider for their next app. If you think I’ve made a mistake or omission in this comparison please do get in touch - it’s just my personal opinion, and perhaps you disagree.

Introduction

Parse and StackMob are backend as a service, or ‘BaaS’, providers who specifically target mobile apps (both native and web). They provide APIs for account management, object storage, file uploads, and push messaging amongst other things.

Parse has been around for just under a year, and is backed by $7 million in funding.

StackMob was founded over two years ago, and has a similar amount of capital behind it ($7.5 million).

Both companies have similar goals, but as we’ll see go about it in very different ways.

The Basics

First off, here’s what you get out of the box with both providers:

  • User management with social (Facebook & Twitter) integration
  • Object storage and retrieval (with GeoSpatial support)
  • Push messaging
  • Native SDKs
  • REST APIs
  • Built-in scaling

There’s a significant amount of overlap, but the proof is in the details. As a mobile app developer I’m particularly interested in the native SDKs that are available, so let’s tackle that first.

Native Clients

Both Parse and StackMob offer platform SDKs for Android and iOS. From the outset, I feel Parse has considerably better documentation and I find their SDK much easier to integrate and use. Parse also have the killer saveEventually feature, which will automatically push data back to Parse when the user is next online, and will keep trying until it succeeds. This can save a lot of code, because you don’t have to worry about the user being offline or the request failing - the next time your app is running with connectivity the Parse SDK will automatically complete the operation.

To get a feeling of how the two SDKs operate here’s the Android code you’d use to save a single object with a single property:

Parse
    ParseObject gameScore = new ParseObject("comment");
    gameScore.put("body", "Hello world!");
    gameScore.saveEventually();
StackMob
    Map args = new HashMap();
    args.put("body", "Hello world!");
    StackMobCommon.getStackMobInstance().post("comment", args, new StackMobCallback() {
        @Override public void success(String responseBody) {
        //POST succeeded
    }
        @Override public void failure(StackMobException e) {
        //POST failed
        }
    });

The iOS code is broadly similar: I have cheated a little, because as far as I know there’s no like-for-like saveEventually method in StackMob - regardless, I personally find Parse’s implementation to be cleaner.

If you’re an iOS developer Parse also provides a series of native UI components for you to quickly integrate into your app, such as log-in and sign-up views. I don’t find these particular useful myself, but I can see their value for those looking to get something together in a quick-and-dirty environment like a hackathon. Parse also update their SDK regularly (weekly, and sometimes daily), although it is closed source (in contrast to StackMob, but more on that later).

File Uploading

Amazon S3 is the name of the game here, and it’s used by both providers to store binary data. However, Parse encapsulates files in a PFFile object, and makes retrieving files as easy as retrieving normal data objects. StackMob does not: you’ll be given the Amazon S3 URL, and it’s up to you to figure out how to download it. For native apps this can add a fair amount of code, particularly if you need to sign and authenticate your Amazon S3 URLs.

You’ll also need to set-up your own Amazon S3 account with StackMob, whereas Parse take care of the actual storage process for you. Parse’s free-tier includes 1GB of storage, and 20 cents per additional GB. Their Pro package offers 10GB, and a reduced rate of 15 cents per GB. Out of the two, Parse appears to offer the quickest and easiest way to deal with binary file storage for native app development.

Server-side Logic & Versioning

Parse doesn’t currently support custom server-side code, so this is a clear win for StackMob. For many developers this will make StackMob the obvious choice, in which case there’s probably not much point reading on! I would suspect this is fairly high on Parse’s most-wanted list, as for many people it’s going to be a big deal.

StackMob also offers versioned APIs, a feature I’m not using so won’t go into too much detail on: suffice to say, this potentially could be quite important for you depending on your requirements.

Free Tier

There’s no competition here: Parse’s free tier goes way beyond what StackMob offer:

Parse StackMob
API Calls 1,000,000 60,000
Push Notifications 1,000,000 60,000
File Storage 1GB n/a
Additional Calls 7¢ per 1,000 $1 per 1,000


Of course, there’s no guarantee these tier limits won’t be adjusted in the future…you’d be rather foolish to plan your business model around it. But if you’re looking for something to power your ‘weekend-app’ Parse’s free tier is very hard to beat.

Portability

The ability to bulk export your data is very important: who knows what lies around the corner. It wouldn’t be unknown for a service to be acquired and disappear into the night. Fortunately, both StackMob and Parse will export your data should you ever want to migrate away. StackMob’s native SDKs are also open-source, and available on GitHub, which could be very helpful should you wish to move onto a different platform or internal solution. Note, however, that StackMob require you to request a data export through support, whereas Parse will let you generate exports through their web interface at-will.

Summary

Doubtless by now you’ll have drawn your own conclusions, and you might not agree with mine. From my own perspective:

Parse wins on…

  • Price: Parse’s free tier is sixteen times larger than StackMob’s, and their Pro package is similarly better priced for the number of API calls you get.
  • File storage: if your app needs to support things like photo or video sharing you’ll find Parse’s PFFile support much more intuitive than StackMob’s integration with S3
  • Speed: in my own experience, getting up and running on Parse is a lot easier than StackMob. Parse also seem to be rapidly iterating, with new platform features going in every month. I started using Parse for my apps in January: in just over four months a number of hugely helpful features have been added
  • Simplicity: features like saveEventually and native UI components make Parse highly accessible.

StackMob wins on…

  • Maturity: features like server-side code and versioned APIs show what a year’s head start can achieve (although I’d place even money on Parse catching up)
  • Enterprise: A number of StackMob’s platform features such as analytics and distinct development/production environments lend themselves well to an enterprise buy-in.
  • Web apps: I haven’t touched upon StackMob’s hosted HTML feature because I’m primarily a native app developer, but it’s a nice feature that may be useful to you if web is your thing.

If you came here hoping for a clear-cut winner you’ll doubtless be disappointed. StackMob is very attractive for those building apps that require complex business logic, and if you’re trying to sell a BaaS provider into your company you’ll probably have more success with StackMob.

On the other hand, I’ve never felt the same kind of joy and happiness using StackMob as I have with Parse, and the rapid roll-out of new platform features makes me excited to see what the future will bring. I will be using Parse at the next Hackathon I’m at, simply because it’s the quickest way I know to get a backend up and running.

In the end, both services have much to offer mobile app development, and I’ll be revisiting this post in the next few months to see how much has changed.

    • #parse
    • #stackmob
    • #API
    • #app development
    • #mobile app
  • 1 year ago
  • 4
  • Permalink
Share

Short URL

TwitterFacebookPinterestGoogle+

Pass by Parse

If you happen to read this blog regularly (unlikely, given my traffic stats, but still) you’ll know I quite like Parse, the instant mobile backend service.

I have, however, noticed one problem with the service: if you happen to tell people about the service with a normal (OK, ‘British’) accent you can encounter some communication problems:

You say: > Check out this great service at parse.com

Your colleague hears: > Check out this great service at pass.com

…because unlike American English, ‘pass’ and ‘parse’ have identical pronunciation. My suggestion to Parse: buy some AdWord keywords for pass.com.

    • #parse
    • #mobile
  • 1 year ago
  • Permalink
Share

Short URL

TwitterFacebookPinterestGoogle+

I ♥ Parse

Recently I’ve starting using Parse.com for one of my personal apps. I wanted to allow users to have preferences and content bookmark carried over across their iPad and iPhone.

Now, this sounds like a job for iCloud - a simple way to synchronise data across different instances of an app. I could have gone with iCloud, and it probably would have served me fine…until I decide to port my app over to another platform. If I use iCloud I’ll need to find a different solution to serve Android, Windows Phone, and Blackberry users. This isn’t ideal. 

This is where Parse comes in. Think of Parse as a cross-platform significantly-advanced iCloud. It does the whole shebang: push notifications, file storage, user management, and dynamic data storage - and for a very reasonable price (currently completely free, but Parse’s proposed prices seem quite competitive for me).

I spent today playing around with their iOS SDK, and it’s amazing how much faster it’s making my work. There’s tight integration with Facebook Connect, and I’ve never set up a full login-registration flow in such a short space of time. It does, of course, help that Parse have some excellent documentation, and native libraries for Android and iOS (with a good looking REST API for other platforms).

I could go on and on…the bottom line is I’m really enjoying the platform, and at the pace they’re currently rolling out new features it seems like there’s a lot to look forward to.

    • #parse
    • #api
    • #backend development
    • #mobile
  • 1 year ago
  • Permalink
Share

Short URL

TwitterFacebookPinterestGoogle+

About

I'm Nick, by day a mobile software engineer in London. Mainly I work on iOS and Objective-C, with some dabbling in Android. My views here are my own, not my employer's.

Me, Elsewhere

  • @objclxt on Twitter

Twitter

loading tweets…

  • RSS
  • Random
  • Archive
  • Ask Me
  • Mobile
Effector Theme by Pixel Union