Wednesday, June 5, 2013

Architecting an Enterprise Mobile App

Enterprise Mobility is a growing trend. Many IT departments have started evaluating options for mobilizing their workforce, both in a Business-to-Employees and Business-to-Customers scenario. Despite the growing trend there seems to be a lot of confusion surrounding this topic.

In this blog entry I will try to throw some light on the various aspects of mobile programming that should be taken into account when developing an Enterprise Mobile App. This will be helpful for all the Enterprise architects looking at mobilizing their company's information systems. The goal is to provide enough architectural knowledge that can be used to build a robust App that is fully functional under all circumstances. Having said that, here are those architectural concerns presented as a list in no particular order of importance.

Enterprise Integration
On the backend side of things, there needs to be a way to integrate the existing information systems with the Mobile Backend Platform. Usually the Mobile Backend Platform provides an Enterprise Integration Framework to plugin to these information systems. What is involved in the integration is up to the scope of the integration framework and the API of the information system in question. In my opinion, a combination of HTTP+REST+JSON is perfectly suited to make this integration possible. But, there are times where you are integrating with a legacy system and this option is not available. Sometimes your best option is to integrate directly with the database of the information system. Whatever strategy you follow, the goal is to extract the data from the information system and hand it over to the Mobile Backend Platform. Once the data is consumed by the Mobile Backend Platform, you move over to the next aspect.

Offline Support and Fast Data Access
Enterprise Apps are mission critical apps. They need access to data under all circumstances. Network or no Network, the app should remain fully functional. When offline, the App must record all updates in data and replay it with the backend once the network is found. Also, from a user standpoint this should happen automatically and behind the scenes. Mobile Backend Platforms make this simple for programmers by providing a client side library to handle offline support. These do all the heavy lifting of detecting networks, recording updates, querying local data, and replaying the update queue to send data back to the Enterprise information system. From a programmer standpoint, you have to get familiar with the API to the client library of the Mobile Backend Platform. As a side effect of having offline support, your App data access is much faster as compared to loading the data from the network on every request. Since the data is located locally on the device, querying is orders of magnitude faster.

Continuous Scanning and Data Push
Every App must stay current with the latest data in the Enterprise information system. To make this happen, there needs to be a way to scan the backend data continuously and then detect changes. These changes must then be pushed to the respective devices via a Push notification. The Push notification does not carry any data. It is just a tickle to the device to wake it up and do a data sync with the backend. After the sync, the new data is available on all the devices that the data belongs to. From a programming standpoint, the Enterprise Integration Framework provides a data scanning API that must be implemented by the App developer. Once the changes are detected and provided to the Mobile Backend Platform, it takes care of the data pushing and syncing. It also manages a Push queue for each device in case they are offline. The data is pushed to them the moment they come online

Data Replication
Any data updates on a device must be replicated and pushed to other devices that are associated with the said data. The Mobile Backend Platform takes care of this service for you out-of-the-box. On the device side data is updated via the client library by the App developer. From there on the Mobile Backend Platform takes over. The client library synchronizes the change with the backend. When the change hits the backend, it figures out all the devices associated with that data. Based on that information, it uses the Push Notification service to push the changes to those devices. This way the data stays in sync between all the devices across all the Enterprise users

Authentication
The Enterprise Integration Framework should provide an Authentication Plugin to hook into Enterprise Authentication systems like Active Directory, and LDAP. On the client side, each request should then be authenticated against this plugin as them come in to the backend. Another optimization you can do is to issue a client token upon first successful login with the system. Instead of passing around the password, you just pass this client token with each request.

Platform Support
At the outset of any Mobile App you must decide what platforms to support. You probably have to decide between the 4 most popular platforms, Android, iOS, Windows 8, and BlackBerry. This applies if you decide to take the native App route. For a HTML5 App you would take a Web App Development approach using the browser as the platform. With my personal experience, it is very difficult to implement an HTML5 Web App on top of a browser with all the above mentioned features. For the above mentioned Enterprise features, you are most likely better off developing a native App. For cross-platform support you could build the App using HTML5 using the PhoneGap framework. This typically qualifies as a Hybrid App (best of both worlds). It is deployed and run as a native App, but developed as a HTML5 Web App. You just have to make sure that your Mobile Backend Platform, provides a JavaScript API for PhoneGap to integrate with your client library. OpenMobster provides this support out-of-the-box

Whereas this is by no means all the challenges of a Mobile Enterprise Architecture, I hope it gives you a guide to proceed with the initial architecture of your Mobile project. Your feedback is most welcome.

Thanks
Sohil
CEO, OpenMobster, Open Source MBaaS Platform



ShareThis

24 comments:

  1. hi dude, in regards to easily creation, deployment and administrating of portable web apps for phones, and interesting architectural traits, you might want to check out magix illuminate - http://www.youtube.com/watch?v=jNYShade7Tw

    ReplyDelete
  2. Didnt really see anything new or special here . Sounds like another attempt to get on TSS with silly generic comments.

    ReplyDelete
    Replies
    1. What would you like to see? Our next series of blog posts will cover architecting an actual App using the topics covered here. Is that what you were looking for. Keep the feedback coming

      Thanks
      Sohil
      CEO, OpenMobster, Open Source MBaaS Platform

      Delete
  3. Hello Sohil,
    Is it possible to do application management also from OpenMobster. Is there any document where I can find all the features in detail.

    Thank you

    ReplyDelete
    Replies
    1. Hi,

      Here is a document that details all the features of OpenMobster: http://openmobster.googlecode.com/svn/wiki/content/app-developer-guide/html/index.html

      OpenMobster does provide some application management features like remote wipe, remote locking, etc via its Management Console.

      Do you have a list of features you are looking for? That will help us see what is missing and hopefully schedule it on the roadmap.

      Thanks
      Sohil
      CEO, OpenMobster, Open Source MBaaS Platform

      Delete
    2. Hi Sohil,
      I am looking at OpenMobster as candidate for our enterprise applications back-end (PhoneGap being the front-end). The feature set of OpenMobster looks quite impressive. The open source license terms are also very conducive for us. The only area which is missing or not documented is related to application management:

      1)Remote update of applications via management console - Forced or Optional updates of applications.
      2) Provisioning/Staging of applications.
      3) Removal of applications.

      I will be glad to know if these exists already or they are part of roadmap. There is a good chance that we can also contribute for the same.

      Thank You

      Delete
    3. Hi,

      We are definitely deepening our support for hybrid apps using PhoneGap. In fact, the next release 2.4-M3 includes support for the latest Cordova release with a brand new more efficient JavaScript API to the Sync Plugin.

      The Application Management features you are looking for have not been implemented yet. They are part of making the Enterprise App Store more robust. There have been other features that have taken precedence over building out these features. They are definitely part of the roadmap just not assigned to any particular milestone release yet.

      This issue here details one of the features with application management that needs to be implemented: https://code.google.com/p/openmobster/issues/detail?id=157

      btw: what platforms are you looking for to support these features. I know for a fact that Android should be able to. Most likely, this cannot be done with iOS. I am not too sure about Windows Phone 8 and BlackBerry 10 (which will be eventually supported as well)

      Anyways, I hope this answers your question.

      Thanks
      Sohil

      Delete
  4. Thanks Sohil. That clarifies most of stuff. I shall get in touch with you shortly.
    We are looking forward to target at least three platforms - Android, iOS and WP8

    ReplyDelete
  5. Thanks for highlighting the key aspects of enterprise mobile app architecture. The information will help many novice developers to understand how to develop powerful enterprise mobile apps.

    ReplyDelete
    Replies
    1. You are welcome. If you have ideas of topics you would like to read about in Enterprise Mobility, please send me an email at: openmobster@gmail.com

      Delete
  6. Sohil,
    Some of the MEAP providers like Kony already come with support for back-end integrations, application management, etc. Do you and if so how do you complement that?

    ReplyDelete
    Replies
    1. Hi SK,

      As an Open Source product our focus is greatly on building the right infrastructure and frameworks for Enterprise developers to easily develop Enterprise Apps.

      Part of that is the Enterprise Integration Framework that is very easy to use to extend your Enterprise backends.

      The backend connectors that are provided by MEAP providers are on the roadmap but not implemented yet. Our first backend connector will be for the SalesForce.com Cloud Service. Beyond that I would look for community feedback and participation to build such connectors as we have limited resources and cannot build support for every backend system out there in the market.

      Hope this answers your question

      Thanks
      Sohil

      Delete
  7. Mobile applications are the future for getting the results you need. Have you ever used enterprise mobile applications? They really have some amazing products that go a long way.

    ReplyDelete
  8. I read this post and I enjoyed a lot after reading this post.
    Thanks to share your all idea about iPhone application development.

    Mobile Application Development India

    ReplyDelete
  9. The data scanning API is required for big corporate. I am not familiar with Mobile Backend Platform but it might support Mobile Apps Development Services at level best integration and upgradation.

    ReplyDelete
  10. I really treasure your piece of work, Great post.

    ReplyDelete
  11. Thanks a lot for blogging this, it was unbelieveably informative and helped me tons.

    ReplyDelete
  12. This comment has been removed by the author.

    ReplyDelete
  13. This comment has been removed by the author.

    ReplyDelete
  14. Best information about the Mobile Application And Mobile website, Thanks For The Sharing please review related with mobile development services website Here>

    Web Development Outsourcing India
    web development company india
    web application development company india

    ReplyDelete
  15. This comment has been removed by the author.

    ReplyDelete
  16. There are endless opportunities for the use of mobile technology in any industry.
    Website Design Companies | Website design company in Bangalore

    ReplyDelete
  17. PS SoftWeb is a professional Mobile Application Development Company in India offering Mobile Application Development,Web Application Development, asp .net, php development services, branding designing, graphics design as well as Ecommerce solutions.

    ReplyDelete