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.
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
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
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.
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.
CEO, OpenMobster, Open Source MBaaS Platform