Tuesday, June 4, 2013

Dissecting the Google MBaaS platform

As you may have heard, Google just announced their MBaaS platform running on top of App Engine. After taking a look at the features involved I thought it would be a good idea to dissect them a bit.

To be clear, this blog entry is not about applauding or criticizing the features, but more geared towards figuring out what features make up a successful backend platform for mobile apps.

  • Cloud Data Storage/Synchronization: Storage is easy. Synchronization is not. I am glad Google decided to support this feature. It is probably one of the most important feature needed for a mobile app. Mobile architects sometimes opt for an "online-only" mode of operation for their App just because its cost prohibitive to build your own sync functionality. It is great to know that a company like Google has taken the sync route with offline app capability. To be honest, sync is not just about offline capability. It has a lot to do with latency as well. Local data is always much faster to access than remote data, especially with dealing with large data sets. So between offline capability and fast data access, sync becomes a very important feature of a mobile app. Google providing this feature in their MBaaS stack, validates this argument.
  • Pub/Sub Messaging: Send messages from one device to any or all other devices. You can easily use 1:1 or 1:many devices or broadcasting. This is also another important feature. Sync is not just about moving data from one device to the backend. Depending on the relationship of the data with other users, it is very important to move data to other devices. OpenMobster's Sync platform provides this data replication feature out of the box without requiring any additional programming on the part of the App Developer. I have not used the Google MBaaS to know if there is any special programming needed to make this happen on the Google MBaaS platform. It would be great if someone with experience with the Google platform can elaborate on this feature a bit more.
  • Enterprise Integration Framework: All MBaaS Frameworks catering to the Enterprise market provide some form of integration framework to connect their MBaaS platform services with data stored in arbitrary data sources. These sources are typically Enterprise systems like SalesForce.com, Microsoft CRM and SharePoint, Oracle Database, etc. It could also be an Enterprise's SOA infrastructure that they could have built out over the years. The Google platform does not provide any infrastructure to connect with the Enterprise systems just yet. It remains to be seen if they move into the Enterprise market by introducing such a framework or focus primarily on Consumer oriented Apps.
  • Push Notifications: Data updated on one device is automatically available on all devices using GCM for Android. I personally like this data oriented use of Push notifications very much. It has been supported in OpenMobster since the very beginning. What pains me the most is when people like Apple don't get it. They think Push notifications is about sending "You've got mail" like updates to the device's Notification Framework. Far from it. Push Notifications in an Enterprise sense is about sending a tickle, initiating a background sync operation, downloading new data, and then either staying silent or notifying the user about new data. Data should always be first and ready on the device. Not dependent on whether the user launches the App by clicking on the notification. Its too late then. Apple does not get it and it would probably require some major changes to the iOS system to be able to handle Push notifications in the above mentioned workflow. 
  • Continuous Queries:  Create queries that run continuously on the server, automatically feeding data updates to the client. This is another very important mobile app feature. The key is to make sure the queries are running on the server and not the client. You may think that is obvious, but due to some platform limitations, you may not have a choice but to run queries from the client to keep the data most up to date. Android is a very sexy platform that has great support for background components. Hence, the Push notifications framework using GCM is able to provide the workflow that it does. Same way, since data push is possible, data querying for updates can be done on the server instead of the client. Client querying is horrible for battery life. OpenMobster also provides this same feature via its Enterprise Integration Framework. The difference is that you can continuously query arbitrary Enterprise data stores.
  • Google Authentication and Authorization: Looks like the Authorization piece helps with data isolation between the users and allowing data sharing where it applies. There is not much information provided on the authentication front. Does it allow authentication with Enterprise systems like Active Directory, and LDAP. Once again, it remains to be seen how inclined this framework is going to be to support the Enterprise use case.
  • Platform Support: I was a bit surprised that Android was the only supported platform. Seeing that iOS is hugely successful in the consumer space, at least there would be support for it. May be it is in the works. From a technology standpoint, the Sync+Push use case is not easy to support on iOS as they do not allow background processing. May be that is the deciding factor in not being able to support iOS. This is one of the challenges we face with the OpenMobster iOS SDK. Data replication is not real time. Period. That makes for less than optimal user experience. Another platform I can think of that Google may support in the future is a JavaScript SDK for HTML5 based Web Apps. I would be curious to find out the challenges in developing the Sync+Push use case for this platform as well. We have not attempted to solve the HTML5 Web App puzzle at OpenMobster. We do have support for HTML5 based Hybrid Apps using the PhoneGap framework. From a technology standpoint not much really changes. It still runs as a native service. Its just that this native service is exposed via a JavaScript API for the hybrid App.

So there it is. My 2 cents on the Google MBaaS platform. Overall, I am very pleased to see the features that are supported and the clarity with which they are presented. It was about time they threw their hat in the MBaaS ring. Sravish Shridhar, of Kinvey once joked on twitter that there are more vendors in the MBaaS space than there are customers. Lol....Well said!!!!

Thanks
Sohil Shah
CEO, OpenMobster, Open Source MBaaS platform   
ShareThis

3 comments:

  1. Correction

    David Chandler, one of the developers on the platform just replied to me. Here is what he said:
    -----------------------------------------------------------
    Hi, Sohil. Mobile Backend Starter doesn’t support automatic offline sync. It provides the lower-level tools (GCM and RESTful services) that you could use to implement sync.
    -----------------------------------------------------------


    ReplyDelete
  2. Erik SchröterJune 11, 2013 at 4:42 AM

    I'm excited to see what Google will offer in the near future. I'm actually quite happy with my BaaS provider (http://apiomat.com).
    So Google has to work hard to convince me. :-D

    ReplyDelete
  3. Did they ever say how to implement offline sync?

    That seems to be an extremely crucial feature which they are surprisingly forgetting :/

    ReplyDelete