Friday, February 8, 2013

Building an Enterprise Mobile Backend As a Service (MBaaS) stack

MBaaS, Mobile Backend As a Service platforms have come a long way in the last couple of years. What started off as a movement for helping Consumer App developers quickly build apps has now reached a specialization point. The MBaaS stack is now being specialized into a few verticals. Just last week OpenKit, Open Source MBaaS platform for Game Developers went live. Similarly, the Enterprise space is shaping up to be one such big vertical in this category. OpenMobster has always focused on the Enterprise space and catered its services towards mobilizing Enterprise data. With the Enterprise in mind, I would like to discuss in details what goes into building an Enterprise stack in mobile.

I stay up late at night wondering what services are relevant for the Enterprise mobile stack. So far I have come up with 4 services.

Data Synchronization 
In my opinion, data synchronization is the most important service for mobilizing Enterprise data. Apps have a local database to store Enterprise data in and work in both offline as well as online mode. However, data sync is the component that makes this a successful strategy to make sure the data integrity is always maintained between the local database and the remote database. A typical data synchronization service should provide the following features:
  • Enterprise App Integration : A developer framework to integrate the backend Enterprise data with the Sync Engine. A good framework would provide a CRUD framework and not expose any Sync details to this component. This framework will also have provision to check data updates to the backend and communicate changes to the Sync Engine for pushing data updates to the devices. 
  • Data Security: The data sync service should always provide the option to secure the local data by optionally allowing storage in an encrypted format. You should be able to access both encrypted or unencrypted data via the same API as a developer. Besides, data security at rest, it should also provide encryption of data in transit between the device and the Cloud. 
  • Data Replication: Part and parcel of keeping data in sync with the backend is also replication, where data is kept in sync with other devices that are synchronizing their data with the backend. For instance, you could have multiple devices registered with the system for synchronization. If the data on one device changes, the same change needs to be replicated across the other devices. The data replication should be device platform agnostic.
  • Offline Mode: With Data Sync you should be able to develop Apps that function 100% whether they are offline or online. When offline, the CRUD operations performed should be queued for synchronization when the network returns. The synchronization should be seamless and automatic when the device goes back into online mode. 
Data Storage
The backend provides a storage mechanism in the Cloud for data originating on the device. Unlike data sync, this service is typically functional only in the online mode in order to access the data stored in the Cloud.

  • Enterprise App Integration: Provide a developer framework to integrate the backend Enterprise data with the Storage Engine. A good framework will provide a CRUD framework for the components. There would also be provision for searching through the stored data so as to download only a subset of data at a time.
  • Data Security: In this service, only the data in transit between the device and the Cloud need to be encrypted. On the device side it is not stored in local storage so there is no need for encryption. Typically SSL provides the most efficient way to encrypt the data in transit
  • RESTful API: The cleanest way to interface with this Storage Engine from the device side is by using a RESTful API. The Enterprise App integration framework automatically generates a RESTful API for its data. This RESTful API is then accessed by the device via HTTPS and JSON object representation. A good system will not expose the REST stuff to the App developers. App developers would just provide App Integration components. From the components, a RESTful API will be auto generated.
In the OpenMobster MBaaS platform, Data Storage will be implemented and called the LiveBeans Framework. This framework is currently in the prototyping phase. 

Push Notifications
A way for the backend to push information originating in the Cloud to the device in realtime. 

  • Cross Platform API: This service should provide an API for sending push notifications to devices in the system. This API should be cross-platform in the sense that the same API should be able to Push content to different types of platforms. As far as the client code making the API-call goes, they should be sending the notification to a user and his device and not to a particular platform. Behind the scenes of course the engine detects the platform that is targeted and routes the notification accordingly.
  • Sync Engine Integration: The Push Engine should be tightly integrated with the Sync Engine. In this way, any new data originating in the Cloud is automatically pushed to the respective device in realtime. This saves a lot of battery life as the App does not have to poll the  server for data updates. Updates are pushed down when they are ready.
The security service is important as it deals with securing the Enterprise data that is being mobilized

  • Secure data at rest:  This makes sure that optionally the data stored on the device is encrypted. It integrates with the Sync Engine to provide this service.
  • Secure data in transit:  This makes sure that all data traveling between the device and the Cloud is encrypted. The SSL technology is by far the most efficient and standardized to handle this aspect of security.
  • User Management: Maintains a database of users allowed to access the Cloud and its data. Provides proper activation from the App using proper credentials. Provides a plugin framework to integrate with 3rd party directory services like LDAP, and Active Directory.

I am sure as the Enteprise Stack matures, there will be more services added to the fold. In fact I am sure I could have missed a service or two in this analysis itself. Being an Open Source product, part of our job is to listen to the Community for new feature requests. I would like to get your valuable feedback on what services should make the cut in an Enterprise MBaaS stack.

CEO, OpenMobster, Open Source MBaaS platform

No comments:

Post a Comment