Friday, September 13, 2013

BaaS: The Cloud Service Every Mobile Developer Should Know About



[ This post was originally written for BlackBerry dev blog and posted on 9/13/13]

There are many different types of cloud services available, and understanding how they differ in order to find the right one for your app business isn’t getting any easier. It seems every month there’s a new provider of services (using a new “_aaS” acronym) making the alphabet soup almost impossible to follow. 

The purpose of this blog is to provide an overview of the cloud services space and to help mobile developers find the right entry point to get involved. I’m also going to highlight the new BaaS (Backend as a Service) segment, because I believe this segment has the most immediate value to mobile developers, especially small entrepreneurial mobile development shops and SMEs looking to move their online presence to mobile.

But first, an overview of the cloud services space. Traditionally, cloud services can be broken into 3 main categories: 

Software as a Service (SaaS)
These services provide you with the whole nine yards. When you sign up with a SaaS provider, you’re getting everything you need from soup to nuts—including the application itself. A good example of this is Salesforce.com. You use their CRM application on their servers, and they handle storage, security, scalability, and everything else. You just use the service.  There isn’t really any significant development on your part. Some other SaaS examples include Adobe Creative Cloud, Dropbox, Evernote, SAP and Workday Inc.

Platform as a Service (PaaS)
These services provide you with everything but the application and the data. Think of it like the Salesforce.com example above, but you have your own CRM application and you just want someone to host it for you in the cloud, manage access and distribution, virtualization, middleware and OS upgrades, scalability, etc. All you have to worry about is your app and its data. So, if your app has or needs an update, you’re on the hook for that. Everything else is handled by the PaaS provider. Some PaaS vendors include CloudBees, redhat OpenShift, AppFog, cloudControl, Heroku, Engine Yard and Google App Engine.

Infrastructure as a Service (IaaS)
These services are the most basic, but don’t confuse basic with low value. According to Gartner, IaaS is expected to be the fastest growing segment by a significant margin for the next five years. When you use an IaaS, you’re providing your own app and data (like in PaaS), but you’re also responsible for managing the app’s runtime, middleware and databases, and virtualized infrastructure. IaaS is a great solution when all you really need is someone to handle scalability and storage on a big scale. Some IaaS vendors include Amazon EC2, HP Cloud IaaS, OpenStack, Rackspace Cloud and Windows Azure.

The diagram at the top of the post illustrates how these services differ with respect to who is responsible for managing which part of your software and hardware stack. I’ve included “Non-Cloud” as well for comparison. In this case, of course, you’re managing everything yourself. 

Now, let’s explore a new type of cloud service: Backend as a Service, or BaaS. In my opinion, this segment has the most immediate value to mobile developers, particularly for small entrepreneurial mobile development shops and SMEs looking to move their online presence to mobile.

What is Backend as a Service (BaaS)?
BaaS, sometimes called MBaaS (Mobile Backend as a Service), is a cloud computing category designed to make it easier for mobile app developers to build and maintain cloud-based apps across multiple platforms. BaaS is a mix between PaaS and SaaS. Kinvey, a leading BaaS provider, offers up a great BaaS Ecosystem Map that illustrates just how complex this cloud services space can be.
Virtually all mobile applications use some backend service (a notable exception might be a single-user/non-social game). BaaS solutions offer developers a single API that gives them access to most of the messy backend services they need without having to hire a backend development team to design, build and maintain it (likely on a PaaS). This frees up time and resources to focus on the core user experience of the mobile app.
So, what do you get when you start using a BaaS? The providers all differ, but typically you get services such as: 

  • Data Storage
  • Search & Retrieval
  • User Management
  • Messaging
  • Push Notifications
  • Social Network Integration
  • Location
  • Analytics

Developers could leverage each mobile platform’s native APIs for all these services, and many do. The advantage of BaaS solutions, however, is that developers can use a single API for each of these common services across all mobile platforms. This does mean you’re making a commitment to  a single-vendor API, but the advantage of a single, cross-platform, backend code base (without requiring any backend developers!) is very attractive.

BaaS Companies
There are many BaaS companies, but here is a list of the ones with which I am most familiar, ranked alphabetically. I often see these companies at developer conferences and hack-a-thons.  

  • Cloudant – Cloudant considers itself more of a “Database as a Service.” Their solution focuses on your data and they are good at managing unstructured, noSQL data as JSON documents. Cloudant offers both dedicated and multi-tenant pricing.  BlackBerry developers access Cloudant’s APIs via standard HTTP requests. Learn more here.  Their entry level multi-tenant pricing is $1.00 per GB per month, plus small fees for hundreds of HTTP requests. The first month is free, and bills under $5.00 are always free.
  • Cloudbase.io – Cloudbase.io offers many standard BaaS features, and their database allows for complex queries and data aggregation operations. The enterprise edition of Cloudbase.io can be deployed on-premise and integrates with BES 10, and uses the BES server, if available, for push notifications and authentication. Learn more about their BlackBerry 10 solution here. Cloudbase.io for BlackBerry is available in open source on Github here. Entry level pricing for Cloudbase.io starts at $11.99 per month for 1GB of data transfer and unlimited storage.  Pricing tiers are based on data transferred per month. 
  • FatFractal – FatFractal provides a wide range of cloud solutions, including standard BaaS (called “NoServer”), PaaS, and “Cloud in a Box” (an enterprise offering that allows companies to deploy a complete cloud services solution within their own data center). BlackBerry developers can access FatFractal through their HTML5/Javascript APIs here. At the time of this posting, FatFractal is working on a native BlackBerry SDK. Developers can try out FatFracal for free in a small scale Sandbox. Their first tier offering starts at $30 per month with 2.5GB storage. 
  • FeedHenry – FeedHenry leverages node.js on the server, which allows for a lot of flexibility when integrating with existing backend systems. FeedHenry also offers end-to-end security, as well as encryption, storage and synchronization. It can be hosted on public or private clouds. BlackBerry developers can get access to FeedHenry’s HTML5/Javascript APIs here.  
  • Kinvey – Kinvey offers a wide range of BaaS cloud solutions designed specifically for mobilizing enterprise applications. Kinvey’s Data Link technology allows companies to securely mobilize its on-premise or cloud data store through the Kinvey platform and connect with existing systems to any native, hybrid, or web client. At the time of this posting, a native BlackBerry 10 SDK is in development. BlackBerry developers can access Kinvey via their HTML5 platform offering here.  Kinvey’s pricing tiers are per user. They offer a $0 entry level for 1-100 users, and a $20 per month level for 100-1000 users.
  • Parse – Parse, recently acquired by Facebook, offers a wide range of BaaS solutions that appeal to consumer-facing mobile app developers. BlackBerry developers can access Parse via their Javascript SDK here. Parse’s pricing tiers are per API call. They offer a free “Basic” tier up to 1 million pushes and 1 million requests per month. Their next tier, called “Pro,” is $199 per month and is capped at 15M requests per month and 5M pushes per month.
  • StackMob – Stackmob offers a complete BaaS solution and provides developers with the ability to integrate custom server-side code into their cloud solution. Stackmob is also fully open sourced on Github here. BlackBerry developers can get access to Stackmob via their Javascript SDK here. Stackmob has a free Developer Edition offering and two paid offerings (Pro and Enterprise). Pricing is dependent on features and integration with StackMob’s Mobile Marketplace composed of third-party partners.

Choosing the BaaS that’s Right for You
There are many factors to consider when choosing a cloud service upon which to build your mobile app business. As you can see from the companies I highlighted above, there are about as many different pricing models as there are BaaS providers, so I recommend spending some time looking at which model makes the most sense for your application. Also, though all solutions provide a Javascript API, only a few offer a native BlackBerry 10 SDK. The architectural differences between the solutions vary widely, and this affects the features and capabilities of the different cloud services. 

Some enterprises decide to take the “Non-Cloud” approach to avoid potential security issues with storing corporate data on external servers. To address this, many cloud services providers are offering “hybrid” cloud solutions that enable enterprises to host the data either on their own servers on-premises (the most secure option) or to host the data on dedicated servers in the cloud not used by any other company. As you compare and contrast services, choose the service with the security provisions that are right for your business.

For further reading on feature-by-feature comparisons between BaaS solutions, check out Cory Wiles’ KitchenSync Github project. In true Github spirit, Cory welcomes contributions, additional tests and additional BaaS solutions added to the project.

Summary
BaaS (Backend as a Service) is a specific cloud services category that helps mobile developers create rich, cross-platform applications very quickly by providing a single consistent API for handling many of the common, heavy-lifting backend tasks most mobile apps require. In a future blog post, I’ll dive deeper to explore a particular BaaS solution and demonstrate how to build a secure BlackBerry 10 application that leverages rich cloud and backend services through a BaaS platform. In the meantime, let us know if you’re using a BaaS solution in the comments below!

4 comments:

  1. Great post, Larry! We're looking forward to checking out the BB10 library that our friend Ekke is building! I can email you about it if you like.
    - Caroline from Kinvey

    ReplyDelete
  2. Hi Caroline,

    I know Ekke too. He's one of the BlackBerry Elite developers and I'm very interested in seeing his Kinvey library for BB10 as well.

    --Larry

    ReplyDelete
  3. Very good article.Really looking forward to read more. Much obliged.
    mobile price

    ReplyDelete
  4. mobile backend as a service I haven’t any word to appreciate this post.....Really i am impressed from this post....the person who create this post it was a great human..thanks for shared this with us.

    ReplyDelete