Usergrid and the Emergence of Backend as a Service

In 1995, Clayton Christenson coined the term Disruptive Innovations in his article titled "Disruptive Technologies: Catching the Wave."  His contention was that some new products or services that appear in the marketplace are so revolutionary that they render existing technologies obsolete.  We are seeing a new example of this phenomenon with the emergence of a sector being referred to as "Backend as a Service"—BaaS.  BaaS is replacing the traditional server-side stack as a dependable, feature-rich option for powering mobile and web apps.

Sidelining the competition
Proponents of existing technologies may initially perceive new innovations to be no more than novelties, which is the power of the disruptive innovation! The Ford Model T is an excellent example from the early 20th century.  Adoption was slow at first, but the new car’s affordability and utility eventually caused it to displace the horse and buggy as the standard method of transportation.  More recently, we saw the cassette tape replace the 8-track, the iPod replace the Walkman, and the iPhone replace the iPod.

Why is a mobile backend as a service good for developers?
Traditionally, setting up a backend typically consumes half or more of the app development cycle, taking months to build and requiring a team of specialized developers. By taking advantage of BaaS, developers can bring their apps to market faster than ever before—as much as 50% faster in many cases. 

From the developer’s perspective, BaaS cuts out the worst part of building mobile and web apps.  Because BaaS is just another API that your app interacts with, if you’re already using other RESTful APIs, you’re halfway there.

And it means that front-end developers don't have to get bogged down in all kinds of server-side issues.  We don't have to worry about Linux, Apache, Tomcat servers, setting up databases, and on and on.  Not when BaaS has already solved it for us with an API. As developers, we're empowered and can focus on what matters most: the app itself.

What features and services do developers need in a mobile backend?
These days, users demand quality and exceptional experiences. They expect interactivity with the device and other people. To meet those expectations, developers need user registration and management, custom data storage, optimized access to that data, role management, event tracking, geolocation, analytics, social integration, and more.

BaaS providers have built their platforms to solve these problems for mobile app developers.

The heat is on
Over a dozen companies have launched an offering in this sector within the last six months and analysts are projecting that BaaS will become as ubiquitous as web hosting.  Web hosting, and now cloud computing, have been industry-standard solutions for some time.  Sure, companies can still choose to run on-premise web servers, but few do.  Why? Because services like Amazon's EC2 offer full-featured solutions at very reasonable prices!  The same thing is true for BaaS.  As the services mature and evolve, it simply won't make business sense for companies or developers to build it themselves. 

A leg up on your competition
The good news is that while adoption rates of BaaS are ramping up quickly, the industry is nowhere near full saturation. Many developers and companies don't yet realize that their projects could benefit significantly and are still building server side stacks in-house.  This means that developers who opt to take advantage of BaaS today are positioning themselves for a significant head start on the competition.  They will be able to build great apps in half the time and at a fraction of the cost. 

Usergrid: Build Awesome Apps using API-Driven Back-end Service

What do mobile apps need?

In today's competitive marketplace, users are no longer content with apps that simply "do" something; they want engaging apps that enable them to connect with other users and access interesting data.  

As an example, suppose we want to create a new photo-sharing app. The nature of this type of app implies that we will need a backend, as we will obviously need to store the photos somewhere.  But beyond simple storage, our photo-sharing app could be greatly enhanced by many of the features and services available from a BaaS.

Building a photo-sharing app the API way

Because a BaaS solution is simply another API that your app interacts with, it is easy to integrate into your app. Calls to the service are made via standard RESTful HTTP calls (GETPOSTPUT, and DELETE), and always return easy-to-use JSON objects.

The following examples illustrate the endpoints in Usergrid. 
(Note: our example URIs are truncated for brevity—for example: 

http://api.usergrid.com/<org_name>/<app_name>/users is shortened to /users.

User Registration

One of the first things our new app needs is user registration. You can easily create and access users via standard REST calls:

POST /users {"username":"johndoe", "name":"John Doe"…}
GET /users/johndoe

Data Storage

Our app also needs custom data storage for things like photos, metadata, and more. Create any type of collection easily.

POST /<custom_collection_type> {"data":"my data"}
POST /cameras {"name":"Canon 5D", "type":"digital"…}

Posting Comments and Other Activities
Users may also like to post comments on photos. You can build a feature like this into your app easily using Activities.

POST /activities/  {"comment":"Great lighting!",…}

Social Graph
Another important feature that users expect is social networking. Users can follow other users to create a social graph, or any type of custom relationship can be established.

POST /users/rod/follows/users/mary
POST /users/rod/likes/photos/marysphoto

Users may also like to see comments and photos that other users have taken.

GET /users/mary/feed   

Geolocation
Geolocation is another popular feature of modern apps and can be of great use in our photo-sharing app. For example, users may like to search for photos that were taken nearby, or even further narrow their search to include only photos that were taken by a specific person.

GET /photos?ql=location within 16093 of 37.776753, -122.407846
GET /photos?ql=taken_by contains 'ed' and within 5000 of 37.803, -122.404

Users today also expect that they can log in with their existing social media accounts, like Facebook or Twitter.

/auth/facebook/fb_access_token=<fb_acccess_token>
/users?filter=facebook.first_name eq 'john'

Point, shoot, build app

Many developers today are already channeling the magic of APIs to power their apps.  Usergrid gives developers the back-end features they need as services and eliminates the overhead and expense of writing server-side code and building the backend. It’s simply another way to ease the development process and make your apps appealing and engaging so that people want to keep using them.

What a solution like Usergrid does best is get app developers building awesome apps quickly.