Cloud services for mobile developers: Google vs. Amazon vs. Azure vs. Parse
Cloud-based back ends for mobile applications combine key services with varying degrees of complexityFollow @peterwayner
There is one new offering, though, aimed directly at small handsets. The new AppStream service is designed to let you compute the imagery in Amazon's cloud and continuously ship the image to the handset. The Amazon cloud instance acts as the CPU and video card, while the handset is simply the display. Amazon promises to handle network lag and low bandwidth by adjusting how many bits are delivered. One of the selling points is that developers can aim high and produce a visually rich world that will look great to people with expensive handsets and fat pipes and merely OK to those with cheap handsets and slow connections. Your great graphics will be rendered on Amazon's cloud and made visible even to customers with low-end phones.
I'm sure AppStream will be compelling to developers who can't get the tiny mobile handsets to push enough triangles to create a suitably scary villain, but I have to wonder about the costs of bandwidth and CPU time. The price for AppStream alone is 83 cents per hour. To compare, a new Xbox or PlayStation costs less than a dollar per day if you amortize it over two years. Even when you add in the cost of the games, it seems cheaper to ship some hardware to the client. But maybe AppStream will end up being more competitive when the price of bandwidth drops and people demand even better games.
Parse may not have as big a name as the others in this review, but it offers a solid collection of back-end services as well as libraries for accessing these services from all of the major and not-so-major platforms. Once you build your tables full of data on Parse's server, the info can be pushed and pulled from platforms ranging from iOS and Android to Unity and Xamarin. Parse is a fast way to build a back end that services apps running across all of these platforms.
The eight different libraries for the various clients are packages that bundle the data into JSON, ship it to the Parse servers, and unpack the result. They're glue wrappers for moving data around as JSON packets. You could accomplish most of this with many other stock libraries, but they wouldn't make authentication as easy.
The Parse push system targets the subset of platforms that support push notification: Android, iOS, Windows Phone, OS X, and Windows 8 desktops. Most of the work occurs outside of Parse because the different platforms require certificates and configuration, all of which is described in detail in the documentation. Once you jump through the hoops, you should be able to send notifications from any of the platforms and to anyone subscribed to a channel.
Parse's data browser lets you mind your Parse tables over the Web.
One of the nicer features is comprehensive user management that includes hooks for working with Facebook and Twitter. The user authenticates through Facebook or Twitter using OAuth, or you log in with a password set up for your app alone. The access for each object in the database can be controlled using a permissions matrix that's based on either the local Parse username or the Facebook name. This allows you to piggyback on Facebook authentication, something that can simplify your app. The Parse library handles the OAuth, something that can be maddening to write from scratch.
Despite all the pretty Web screens for browsing the data, working with Parse is surprisingly text-based. I edited the control logic in an editor and pushed it with a command line. Debugging was best handled with the log files and messages. Tracing the path through long functions isn't really possible without installing much of the code locally.
There are many reasons to embrace a platform like Parse. If you're looking to store tables for your apps and wrap a bit of logic around them, Parse lets you pull this off in a few minutes, in part because the documentation is so extensive. Thanks to the extra libraries, it's pretty easy to push notifications, email, or phone messages to others.