Once upon a time, software developers had to wrestle with the decision of what operating systems to support. There is now a new dimension to this question: desktop or cloud?
The cloud, of course, is something of a throwback to the mainframe model of 70's-era computing, where the interface (on the local client) was separated from the processing logic (on the remote server). This model was largely replaced by desktop applications because the increasing processing power of personal computers (over the past 30 years) made it possible to run everything locally. Now, however, widespread internet access and an increasing range of mobile devices with limited horsepower and rich display capabilities are driving us toward a renewal (albeit a contemporary one) of the old mainframe model. This renewal has been given the catchy moniker "cloud computing."
Even major desktop applications, such as Microsoft's venerable Office productivity suite, are being made over for the cloud. Users enjoy mobility and portability, with access to their work from any location with an internet connection. Plus they have the promise of reliability and security, because all data is being stored at well-managed data centers rather than on local disks. For businesses and software vendors, cloud-based applications promise more control because the software is centrally managed. You never have to deal with users operating on different versions of your software, because they are always using the version deployed on your server. Software piracy essentially disappears, because you can strictly control access to cloud-based applications.
However, not every application is well-suited to a cloud-based existence. The primary interface to cloudy apps is the web browser, which is still no substitute for the desktop when it comes to providing a rich interface. This limitation is diminishing as browsers grow more sophisticated; and the adoption of HTML5 will, no doubt, help. Still, desktop app developers enjoy a mature and deep set of tools for creating interfaces, not to mention access to hardware-enabled advances like graphic acceleration. These evolving capabilities, however, remain several generations behind within the browser realm.
While network connectivity is the very feature that breathes life into the cloud as a mobile computing platform, it is also the cause of bottlenecks that form when moving data. Desktop applications can manage very large quantities of data quickly because today's computers have extremely mature I/O (input/output) systems between local disk and memory. It is no sweat for a modern computer to juggle gigabytes of data — say, editing high-definition video. Most network connections — especially outside the LAN — can offer only a fraction of this speed for moving data. Applications that need to manage large quantities of data (such as any kind of multimedia) will suffer in the cloud — at least until our average network performance increases by several orders of magnitude.
Given today's technology, the kinds of apps best suited to live in the cloud will meet at least these criteria:
They must have a simple or intermediate graphical interface. While it is possible to rely on "tricks" to build envelope-pushing GUIs inside browsers, doing so is fragile when compared to desktop GUI development. Complex GUIs may be limited to specific browsers or may break with new browser versions.
They must transmit small to medium quantities of data between logic and interface. Network connection speeds will vary widely, and applications that must transfer large quantities of data for interactive operations will be unusable over slower network connections.
They must not involve highly intensive processing. Because the business logic for cloud apps runs on the server, apps that put a high load on the CPU can be slow or costly to host — especially if your data center needs to support many cloud app users at once.
Mobility, uniformity and security must be key features. Developing your app for the cloud is a great solution when users need to access it from anywhere, from a variety of devices. Apps that involve sensitive data allow you to invest in securing your data center rather than relying on each individual user's machine to ensure data integrity.
In sum, apps with features that can harness the strengths of the cloud can provide a superior user experience to desktop apps, while being faster and cheaper to deploy. Apps with core features that conflict with the weaknesses of the cloud, however, will ultimately produce a poor user experience and risk being a waste of development time and money.
For more information, see:
Is the Desktop Productivity Suite Obsolete?
Is a Private Cloud Really More Secure?
Do's and Don'ts for Faster Application Deployment

 | 





|