Creativa - Fotolia
The intersection of two huge technology zones like cloud computing and mobility are bound to be hot, and it can also be challenging for application developers and planners. Because mobile applications are more spontaneous and personalized, they are particularly strong candidates for cloud support, but it's important to get mobile cloud apps going in the right direction from the start. To do that, start with workflow-based application depth management, introduce BYOD support in a systematic way, and unify app distribution with application lifecycle management (ALM).
Mobile users are the most geographically diverse of all users, and this diversity creates both the cloud opportunity and challenge. The cloud allows developers to spread application support over the same wide geography mobile users inhabit, but this can have negative impacts on cost and performance if it's not managed correctly.
The most significant question in application design for the mobile cloud is the extent to which the application is "naturally distributable." Something like a Web host, with a fairly static data content, can be replicated easily and inexpensively to improve performance. In the cloud, sites could be spawned in areas where user concentrations are high to provide local application access. However, if the app depends on data that's hosted in the company data center for security or cost management, all the apps will eventually have to tie back there for information.
To strike a balance of cost and performance versus centralized data storage and processing, try to draw out app workflows to illustrate how user interaction with the app translates into access to business information that's centrally processed and stored. Generally, applications interact with users in a series of stages that include a presentation of options, gathering information, processing it and returning the results. The critical phase in cloud terms is the "processing it" phase because this is where cloudsourcing the application is most difficult for pricing, performance and compliance reasons. The first goal of application design should be to insure that the processing phase is contained in a single place in the workflow so that other phases of the application can be cloudsourced, duplicated and distributed.
The notion of application phases introduces the second issue of the mobile cloud, which is support for BYOD. One common approach to BYOD is to create multiple front-ends for applications to support the various mobile platforms in use. That can work against distributability because it's rarely economical to distribute a copy of each front-end application component to every area where a mobile user might be found.
To support BYOD in a cloud-efficient way there are two options: move device-specific formatting into the device or create multi-device front-end components for your apps. Both will work best if the front-end process is fed by a generalized "display panel" that's designed to be easily reformatted to the target device, and if device-to-app interactions are limited to generalized forms that can be supported (in device-specific ways) in all the BYOD targets. In effect, create a "virtual mobile device" with basic features that can then be customized to each BYOD target.
The disadvantage of having per-device formatting is that it may complicate the support of new devices by creating more app development. You may be able to manage some of this complexity through mobile backend as a service tools, so it's wise to review the tools available before structuring the features of your virtual mobile device.
The final issue in mobile cloud apps is the app management process. App management is usually seen as a combination of version control of mobile apps themselves and distribution of apps to users based on their needs and entitlement. Mobile cloud apps have to be viewed more broadly because of the cloud components, and the more complex structure makes app management more like ALM, which in many cases is the best place to start. Mobile cloud app management is in a sense cloud ALM combined with mobile app distribution control.
Mobile cloud apps generate management issues because of the diversity of drivers of change. Business changes will always generate changes to applications, and so will the orderly updating of OS and middleware elements. Traditional ALM addresses these issues by imposing a change-test-deploy discipline on developers and operations personnel. Mobile cloud not only introduces another class of changes -- to the combined set of mobile platforms -- but it also generates at least the potential for a staggered rollout of new versions, something that's not normally considered good ALM practice.
Because most well-designed mobile cloud applications are multi-component and distributed, with a distinct front-end process set that changes with changes to the mobile device, it may be possible to treat the mobile cloud front-end and back-end application components as two independent applications. The risk to this approach depends on whether your "virtual device" truly separates the two application pieces.
Mobile app distribution has to accommodate version controls built into the ALM process. If you make changes to an application or to a mobile device whose impact can cross that virtual device boundary, you may have to refresh device copies of application components. Be sure that your mobile app management tools allow for software versioning and have an adequate mechanism for updating device components as needed. As always, your app management software should be able to validate the device type and software version of any new mobile devices that are presented for use with the application.
Mobile cloud is, from a development perspective, two interdependent things. Keeping the two at least somewhat apart will help you optimize both mobility and cloud use, but linking them at least in the ALM sense is critical for long-term application stability. With care, you can do both.
Learn more about native vs. mobile apps
Best practices for mobile cloud apps