Can you explain the differences between mobile apps, cloud apps, and Web apps?
The obvious answer is that mobile applications run on mobile devices, cloud applications run "in the cloud" and Web applications expose themselves to users via a Web interface. However, the reality is that modern applications often cannot be easily classified into one of these categories because they contain aspects of two or more.
For example, let’s look at a fictional cloud-based file storage system. This isn't a single application but rather a collection of applications that work together to provide functionality to users in a number of ways. This cloud-based file storage system would likely have a Web-based application where users could sign up and perform functions such as uploading and downloading files. In addition, there may be one or more mobile clients for iPhones, iPads and Android devices that would allow mobile users to be able to perform these same functions remotely. The infrastructure for this application - computing, data storage and so on - could be provided by a cloud provider such as Rackspace or Amazon or might be provided by a "private cloud" installation of a system like OpenStack. All of these components together make up what the user views as an application, but to characterize this as a Web app" or "mobile app" or "cloud app" is insufficient to describe the system.
This creates challenges for application developers because the architecture for modern systems is getting increasingly complicated. For example, code could be running on multiple servers and mobile devices, third party providers may be playing some sort of a role in the applications delivery and problems in a single component could potentially make the system unusable. From a security standpoint, more complicated applications have more complicated threat models, and security testing activities will likely have to span multiple tools and techniques. Decisions must be made about what functionality will reside on which systems and there will likely be tradeoffs to be considered. From a performance standpoint, potential issues could show up in a variety of places and the source of problems might not be immediately obvious. Therefore, for modern applications, the questions is not "Is this a Web app, a mobile app or a cloud app?" but rather, "What is the architecture of this system, what components are involved and how are they implemented?"
This was first published in July 2012